您必須先選擇存放區,才能授予程式庫存取權。 本頁內容會說明選擇 VM 連線的考量事項 存放區類型,以及如何使用 Maven Publish 外掛程式。
上傳媒體庫前,請務必備妥您的媒體庫 發布任何必要版本 發布項目變數或 測試韌體。
選擇存放區類型
程式庫以 AAR 檔案的形式發布。這些檔案包含已編譯的程式碼 位元碼和原生資料庫、Android 資訊清單和資源。包裹 本身未宣告其他任何身分、版本或依附元件 程式庫
一般而言,透過存放區提供 AAR 是最佳做法
比起直接發布 AAR這項服務
這樣使用者就能更瞭解程式庫的來源
不必處理不含重要細節的 name.aar
檔案
就像版本一樣如要升級至新版程式庫,請使用
確保僅有新版本所需的依附元件
,這樣使用者就不必手動更新依附元件。
使用存放區發布程式庫有多種好處,包括:
- Gradle 可自動將程式庫的依附元件加入 依附元件 圖表。
- Gradle 可確保程式庫的單一版本在依附元件圖表中,假如系統連帶納入程式庫的多個版本,就能解決衝突問題。
- 如果您的 Android Gradle 外掛程式 (AGP) 應用程式 程式庫使用 Java 8 以上版本的語言功能,縮短了 使用者。
- 程式庫可使用變數發布及納入測試韌體等功能。
直接發布 AAR 並不會為使用者提供任何資訊 您程式庫的身分、版本或依附元件。時間 發布至存放區時,系統會透過 存放區機制的一部分在 Maven 存放區中 POM 檔案。因此,我們強烈建議您使用存放區發布程式庫,而不是自行發布 AAR 檔案。
存放區類型
存放區可分為以下三種類型:
- 免費線上存放區 (例如 Maven Central):可讓任何人 下載程式庫
- 私人存放區 (透過登入存取):可控管如何發布私人程式庫。
- 本機資料夾存放區:可透過讓使用者自行下載的方式發布程式庫。
使用本機資料夾存放區與為使用者提供應用程式的做法很相似 並附上手動下載自動套用最佳化建議的連結,或透過電子郵件傳送自動套用最佳化建議功能。主要 在於您傳送的不僅僅是「自動套用最佳化建議」功能 身分、版本和依附元件的相關資訊
您發布的是包含 AAR 的資料夾存放區 ZIP 檔案 還有中繼資料這樣一來,使用者就能擷取檔案內容,將 把內容指向自己的專案,並將 Gradle 指向該專案。此後,使用者可以 使用 Maven 座標宣告程式庫的依附元件,就像程式庫一樣 這個目錄中列出的所有優勢
建立發布項目
使用 Gradle Maven Publish 外掛程式進行發布。Maven Publish 外掛程式可讓您宣告出版品
以及建立工作,將這些出版品發布到
與存放區這些發布項目使用的 SoftwareComponent
例項如下:
驅動建構作業的外掛程式,可以是 AGP 或
java-library
外掛程式。
請注意,搭配 AGP 執行 Maven Publish 外掛程式時,軟體
並不會在套用外掛程式時直接建立元件。系統會直接使用
建立的
afterEvaluate()
敬上
回呼步驟。因此,選取軟體元件的出版品
您也必須在 afterEvaluate()
步驟中設定。
下列模組層級 build.gradle
檔案的程式碼片段會建立
使用 singleVariant()
或
multipleVariants()
:
Groovy
publishing { publications { release(MavenPublication) { groupId = 'com.my-company' artifactId = 'my-library' version = '1.0' afterEvaluate { from components.release } } } }
Kotlin
publishing { publications { register<MavenPublication>("release") { groupId = "com.my-company" artifactId = "my-library" version = "1.0" afterEvaluate { from(components["release"]) } } } }
在上述範例中,元件的名稱 (components.release
) 是
主要根據為 singleVariant()
的指定名稱
或 multipleVariants()
。
當您宣告發布項目後,就必須建立目標存放區。
發布至本機存放區
發布至本機存放區與發布至遠端存放區十分類似,差別在於是否宣告存放區。閱讀上一節, 瞭解如何發布至遠端存放區,建立 發布所需變數或變化版本的發布項目。接著建立本機 存放區:
Groovy
publishing { publications { release(MavenPublication) { ... } } repositories { maven { name = 'myrepo' url = layout.buildDirectory.dir("repo") } } }
Kotlin
publishing { publications { register<MavenPublication>("release") { ... } } repositories { maven { name = "myrepo" url = uri(layout.buildDirectory.dir("repo")) } } }
這會建立名為
publishReleaseToMyRepoRepository
,其中包含
出版品名稱和存放區名稱執行這項工作
並對指定位置產生存放區在這個範例中,
存放區會在建構作業中產生
資料夾。repo
如要讓系統自動產生存放區的 ZIP 檔案,請執行 請使用以下程式碼:
Groovy
tasks.register('generateRepo', Zip) { def publishTask = tasks.named('publishReleasePublicationToMyrepoRepository') from publishTask.map { it.getRepository().getUrl() } into 'mylibrary' archiveFileName.set('mylibrary.zip') }
Kotlin
tasks.register<Zip>("generateRepo") { val publishTask = tasks.named( "publishReleasePublicationToMyrepoRepository", PublishToMavenRepository::class.java) from(publishTask.map { it.repository.url }) into("mylibrary") archiveFileName.set("mylibrary.zip") }
此程式碼會建立名為 generateRepo
的 Zip
工作,該工作會使用內容。
壓縮並壓縮,同時確保該壓縮項目在
頂層資料夾名稱為 mylibrary
。輸出檔案位於 build/distributions
底下。