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插件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章