AndroidStudio加速之--(三)發佈aar到Artifactory
具體關於上傳的詳細說明可以查看官方的 Artifactory gradle插件 一文。
一、前言
經過前面的實戰,我們已經創建好了一個位於本地或者內網的構件倉庫。而且裏面也創建了一個Local倉庫,目的是用來上傳我們開發的共享文件等。下面我們就一起使用打包aar並上傳到倉庫的例子來講解。
本文章基於以下兩篇文章:
AndroidStudio加速之–(一)構件倉庫Artifactory,需要搭建好構件倉庫。
Android NDK、JNI之–(四)so打包發佈aar,使用其中的hello module。
二、添加jfrog gradle依賴
2.1、工程模塊下build.gradle
添加jfrog的gradle依賴,注意版本,不同版本的下文DSL寫法不同,本文使用的jfrog gradle版本是4.15.2:
dependencies {
...
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.15.2"
}
2.2、hello module下的build.gradle
該module主要是JNI的相關demo,提供了一個包含本地方法getHello()的ShowHello類,以及相關的cpp文件等。 關於該hello module請查看前言中的相關文章。
在該module下的build.gradle文件中添加maven-publish和artifactory的插件,並且使用jfrog gradle的DSL語法添加相關配置,然後構建工程,代碼如下,詳解見註釋:
...
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'
...
//定義artifactory倉庫的地址,按照你自己的修改
def MAVEN_LOCAL_PATH = 'http://192.168.x.x:xxxx/artifactory'
// 定義構件的相關信息
// 當其他項目遠程依賴該構件的時候,結構類似就是 implementation 'GROUP_ID:ARTIFACT_ID:VERSION_NAME'
def GROUP_ID = 'com.cooloongwu.hello'
def ARTIFACT_ID = 'hello.native'
def VERSION_NAME = '1.0.3'
publishing {
publications {
aar_pub(MavenPublication) {//注意這裏定義的 aar_pub,在artifactoryPublish 下需要使用
groupId = GROUP_ID
artifactId = ARTIFACT_ID
version = VERSION_NAME
// aar文件所在的位置
// module打包後所在路徑爲module模塊下的build/outputs/aar,生成的aar名稱爲:module名-release.aar
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
}
}
}
artifactoryPublish {
contextUrl = MAVEN_LOCAL_PATH
publications ('aar_pub') //注意這裏使用的是上面定義的 aar_pub
clientConfig.publisher.repoKey = 'local' //上傳到的倉庫地址
clientConfig.publisher.username = 'admin' //artifactory 登錄的用戶名
clientConfig.publisher.password = 'password' //artifactory 登錄的密碼
}
三、打包並上傳
經過上述步驟之後,在右側Gradle面板中找到hello module,然後找到Tasks->other->assembleRelease,雙擊執行後即可在hello module下的build/outputs/aar文件夾下看到生成的aar文件了。
然後我們在Gradle面板中,同樣是hello module下,找到Task->publishing->artifactoryPublish:
雙擊之後即可看到控制檯中會不斷的輸出執行信息。
等待片刻後可以看到倉庫中已經有了我們上傳上來的aar文件等:
注意:每次更新了hello module的代碼想要重新生成的aar文件時,需要先Clean Project,然後執行assembleRelease,然後再執行 artifactoryPublish,否則會無法上傳。
對此,我們可以在項目根目錄下使用命令:gradlew :hello:clean assembleRelease artifactoryPublish
,一條命令順序將這三步搞定,這樣就不會出現無法上傳的問題了。
四、其他項目使用
其他項目使用的時候首先你應該配置了使用內網倉庫的,那麼此時可以直接在你需要使用aar的模塊,添加依賴即可,例如我們剛剛上傳的aar:
implementation 'com.cooloongwu.hello:hello.native:1.0.3'
然後運行項目,log打印ShowHello().getHello() 即可看到相關信息。
五、總結
本文通過將相關aar文件上傳到artifactory進行了實際的操作。我自己踩到了一些坑,因爲參考的其他文章基本都是舊版本的,所以無奈又去官網查看了相關的資料,所以大家有什麼問題的話一定先去官網翻翻吧。
最後說下,我最近寫的一些文章知識點基本快串聯起來了。下面是相關的文章:
AndroidStudio加速之–(一)構件倉庫Artifactory
Android NDK、JNI之–(四)so打包發佈aar
Android 編譯插樁之–自定義Gradle插件