Android 發(fā)布開(kāi)源庫(kù)到JitPack

隨著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ā)布版本:


tag.png

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


release.png

三、Jitpack拉取

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

error_1.png

提示了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)題:


error_2.png

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


setting_1.png

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

對(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)用法提示:


use.png

相應(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里:


gradle_setting.png

所以我們把對(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:


multi_module.jpg

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容