Android Studio將AAR包發(fā)布到Maven本地倉(cāng)庫(kù)的流程步驟
在 Android Studio 中將 AAR 包發(fā)布到 Maven 本地倉(cāng)庫(kù),通常涉及以下幾個(gè)步驟,環(huán)境如下:
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip classpath 'com.android.tools.build:gradle:8.7.0'
1. 配置 build.gradle.kts(或 build.gradle)
在 library
模塊的 build.gradle.kts
(或 build.gradle
)中,添加以下 Maven 發(fā)布插件:
plugins { id 'com.android.library'//打lib包 id 'maven-publish' }
對(duì)于 build.gradle
(Groovy 版本),可以這樣添加:
apply plugin: 'maven-publish'
2. 配置 publishing 任務(wù)
在 build.gradle.kts
文件中,添加以下 publishing
配置:
publishing { publications { create<MavenPublication>("release") { from(components["release"]) groupId = "com.shuaici.lib" artifactId = "scc" version = "1.0.0" } } }
對(duì)于 build.gradle
(Groovy),使用:
publishing { publications { release(MavenPublication) { from components.release groupId = 'com.shuaici.lib' artifactId = 'scc' version = '1.0.0' } } }
3. 發(fā)布到本地 Maven 倉(cāng)庫(kù)
運(yùn)行以下代碼:
./gradlew publishToMavenLocal
這將在 ~/.m2/repository/com/yourcompany/library/your-library/1.0.0/ 目錄下生成 AAR 文件。例如我剛才打包的地址為~/.m2/repository/com/shuaici/lib/scc/1.0.0/,這個(gè)是隱藏文件夾。
這個(gè)地址是可以自定義的,但是不推薦修改。
這里容易遇到問(wèn)題,沒(méi)遇到還好,遇到了那就需要解決一下了。
3.1 Could not find method publications() for arguments...
說(shuō)明 publications {} 這個(gè)部分在 android {} 里面不被識(shí)別。
解決方案:移動(dòng) publications {} 代碼到 afterEvaluate {} 里
在 com.android.library 插件的 Gradle 7.0+ 版本中,publications {} 不能直接放在 android {} 代碼塊里,需要在 afterEvaluate {} 里定義:
plugins { id 'com.android.library' id 'maven-publish' } android { namespace 'com.shuaici.lib' 。。。。。。 } // 這里用 `afterEvaluate`,避免 `publications {}` 出錯(cuò) afterEvaluate { publishing { publications { release(MavenPublication) { from components.release groupId = 'com.shuaici.lib' artifactId = 'scc' version = '1.0.0' } } } }
為什么要用 afterEvaluate
?
publications {}
需要components.release
,但android {}
還沒(méi)完全加載時(shí),components.release
可能為空,導(dǎo)致 Gradle 解析失敗。afterEvaluate {}
確保android {}
配置完成后再執(zhí)行publications {}
,避免components.release
為空的問(wèn)題。
3.2 bash: ./gradlew: Permission denied
這表示 gradlew 腳本沒(méi)有執(zhí)行權(quán)限??梢园凑找韵路椒ń鉀Q:
1. 運(yùn)行 chmod +x gradlew
2. ./gradlew publishToMavenLocal
3. 如果還是報(bào)錯(cuò),嘗試使用 sh ./gradlew publishToMavenLocal
3.3 Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
解決方案:
1. 臨時(shí)切換 Java 版本 ;
2. 永久修改 Java 版本;
3. 在 gradle.properties
指定 Java 版本:
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.0.9.jdk/Contents/Home
如果不清楚自己放的位置,可通過(guò)以下方式找到。
4. 使用發(fā)布的 AAR 依賴
如果你想在 另一個(gè)項(xiàng)目 中使用這個(gè) AAR,編輯 build.gradle
:
repositories { mavenLocal() // 讓 Gradle 從本地 Maven 倉(cāng)庫(kù)查找依賴 mavenCentral() // 遠(yuǎn)程 Maven 倉(cāng)庫(kù)(如果本地找不到,會(huì)去這里找) } dependencies { implementation 'com.shuaici.lib:scc:1.0.0' // 依賴本地倉(cāng)庫(kù)發(fā)布的 AAR }
然后你就正常調(diào)用SDK中的內(nèi)容就行了。
以上就是Android Studio將AAR包發(fā)布到Maven本地倉(cāng)庫(kù)的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于Android Studio AAR包發(fā)布到Maven的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android GridView簡(jiǎn)單實(shí)例
這篇文章主要為大家詳細(xì)介紹了Android GridView簡(jiǎn)單實(shí)例,簡(jiǎn)單實(shí)現(xiàn)九宮格效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Kotlin中的密封類和密封接口及其應(yīng)用場(chǎng)景
在Kotlin中,密封類和密封接口是用于表示受限類型層次結(jié)構(gòu)的特殊類和接口。密封類和密封接口可以在一定程度上限制類型的繼承層次,使編譯器能夠更好地檢測(cè)代碼中的錯(cuò)誤,并增強(qiáng)代碼的可讀性和可維護(hù)性2023-05-05Android開發(fā)技巧之在a標(biāo)簽或TextView控件中單擊鏈接彈出Activity(自定義動(dòng)作)
a標(biāo)簽以及TextView自動(dòng)識(shí)別的特殊文本(網(wǎng)址、電話號(hào)、Email等),這些都可以通過(guò)單擊來(lái)觸發(fā)不同的動(dòng)作;但如果讀者想在單擊鏈接時(shí)執(zhí)行任意自定義的動(dòng)作,那么將要介紹的一定是你想要的了2013-01-01Android編程實(shí)現(xiàn)簡(jiǎn)單的UDP Client實(shí)例
這篇文章主要介紹了Android編程實(shí)現(xiàn)簡(jiǎn)單的UDP Client,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)UDP Clinet客戶端的實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-04-04Java和Android的LRU緩存及實(shí)現(xiàn)原理
本文主要介紹 Java和Android的LRU緩存及實(shí)現(xiàn)原理,這里整理了詳細(xì)的資料,有興趣的小伙伴可以參考下便于學(xué)習(xí)理解2016-08-08Android基于TextView不獲取焦點(diǎn)實(shí)現(xiàn)跑馬燈效果
這篇文章主要介紹了Android基于TextView不獲取焦點(diǎn)實(shí)現(xiàn)跑馬燈效果,結(jié)合實(shí)例形式分析了Android基于TextView實(shí)現(xiàn)跑馬燈的功能與布局相關(guān)技巧,需要的朋友可以參考下2017-02-02