隨著AS的更新(Arctic Fox 2020.3.1)及Android Gradle Plugin版本(7.0.2)的升高,原本的jitpack發(fā)布方法都會(huì)出現(xiàn)問(wèn)題,即利用android-maven-gradle-plugin的方法,記錄一下新的方法。
一、配置模塊的gradle文件
通過(guò) 'maven-publish' 來(lái)設(shè)置插件:
plugins {
id 'com.android.library'
id 'maven-publish'
}
然后再做對(duì)應(yīng)的發(fā)布參數(shù)的設(shè)置:
afterEvaluate {
publishing {
publications {
// Creates a Maven publication called "release".
release(MavenPublication) {
// Applies the component for the release build variant.
from components.release
// You can then customize attributes of the publication as shown below.
groupId = 'com.me.BaseModule'
artifactId = 'base'
version = '1.0'
}
// Creates a Maven publication called “debug”.
debug(MavenPublication) {
// Applies the component for the debug build variant.
from components.debug
groupId = 'com.example.MyLibrary'
artifactId = 'final-debug'
version = '1.0'
}
}
}
}
參考官網(wǎng) https://developer.android.com/studio/build/maven-publish-plugin#groovy
這里release和debug的話,建議根據(jù)實(shí)際,每次只用一個(gè),注掉另一個(gè)。
很簡(jiǎn)單,這樣就配置完了...
二、推代碼到GitHub發(fā)布版本
當(dāng)然這里還有個(gè)過(guò)程,就是我們得把代碼推到GayHub上,過(guò)程就不再贅述了,然后去創(chuàng)建庫(kù)的發(fā)布版本:

對(duì)應(yīng)填好參數(shù),拉到下面發(fā)布就行了:

三、Jitpack拉取
然后到j(luò)itpack(https://jitpack.io/)去拉取自己的項(xiàng)目就行了,一鍵操作,這里也不說(shuō)了。但這個(gè)時(shí)候你會(huì)發(fā)現(xiàn),報(bào)錯(cuò)了并沒(méi)有發(fā)布成功:

提示了Android gradle plugin要求使用Java11,這個(gè)時(shí)候需要新增jitpack.yml文件:
before_install:
- sdk install java 11.0.10-open
- sdk use java 11.0.10-open
jdk:
- openjdk11
好了,那就代碼推上去,再走一下GitHub的發(fā)布流程,打個(gè)新版本,再去jitpack拉取一下。這個(gè)時(shí)候你會(huì)發(fā)現(xiàn),誒還是有問(wèn)題:

提示說(shuō)庫(kù)工程不能設(shè)置appId,這里是因?yàn)樾陆∕odule的時(shí)候,相應(yīng)的配置會(huì)默認(rèn)設(shè)置applicationId,去掉即可:

然后提交代碼,重新再走個(gè)流程,你就會(huì)發(fā)現(xiàn)發(fā)布成功!

對(duì)應(yīng)的紅色log就是沒(méi)發(fā)布成功,點(diǎn)進(jìn)去就能看問(wèn)題出在哪。
四、測(cè)試
好了,那就讓我們來(lái)測(cè)試一下,在app模塊引入相應(yīng)的依賴,這里jitpack也會(huì)給對(duì)應(yīng)用法提示:

相應(yīng)的配置完之后你會(huì)發(fā)現(xiàn),誒,連編譯都編譯不過(guò)...
我們回頭看可以發(fā)現(xiàn),現(xiàn)在根目錄的build.gradle文件下,默認(rèn)并沒(méi)有生成allprojects這段配置:
allprojects {
repositories {
google()
mavenCentral()
maven { url "https://jitpack.io" }
}
}
那沒(méi)有這段配置還怎么獲取到對(duì)應(yīng)的倉(cāng)庫(kù)呢,其實(shí)新版本的gradle已經(jīng)把配置移到了settings.gradle里:

所以我們把對(duì)應(yīng)的jitpack地址配置進(jìn)去就行了,然后運(yùn)行就沒(méi)問(wèn)題啦。
四、多module發(fā)布
這里還有個(gè)小問(wèn)題,那如果同個(gè)項(xiàng)目下,我的幾個(gè)module都要發(fā)布呢?
其實(shí)一樣的,我們只需要在對(duì)應(yīng)的module下的build.gradle做上述的配置,然后一樣的操作發(fā)布就行,這個(gè)時(shí)候我們可以看到j(luò)itpack的log:

Build artifacts里就會(huì)出現(xiàn)我們需要發(fā)布的所有庫(kù),而至于版本號(hào)的話我是直接疊加讓兩個(gè)庫(kù)保持一致。
1.中間簡(jiǎn)化的流程可以參考:http://www.itdecent.cn/p/b7552cf8983b
2.參考:https://zhujiang.blog.csdn.net/article/details/115391998
這位博主說(shuō)的一個(gè)觀點(diǎn)很有道理,遇到問(wèn)題不要第一時(shí)間想著去百度看人家踏的坑,官方文檔始終是最新最有用的。另外,Google一定要放到第一位,別問(wèn)我為什么。
3.相關(guān)源碼:https://github.com/JaupeanChen/BaseModule