前言
作為安卓開發人員,經常使用第三方庫,都是通過build.gradle
中添加implementation
引入第三方庫。
今天主要講解我們提交自己制作第三方庫到GItlab上,并給其他項目引用。
一、制作library(module)如果你的模塊已經是library,請跳過這一章節
如果原來module
是application
的,可以按下面步驟改為library
1、app-build.gradle文件中
-
apply plugin: ‘com.android.application’
修改成apply plugin: ‘com.android.library’
-
注釋
applicationId,使我們的框架作為library
//apply plugin: 'com.android.application'
apply plugin: 'com.android.library'
defaultConfig {
// applicationId "com.sunsky.aardemo"
…
}
2、將AndroiMmanifest中
application
去掉以下內容:
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
activity
去掉以下內容:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
二、Maven發布 AAR到Gitlab
舉例: module名稱為sdk
,即要發布的library
1、創建maven腳本文件
1.1在sdk的目錄下,新建一個名為maven-release-aar.gradle
的文件,并在sdk目錄下的build.gradle 末尾
添加如下字段:
//aar打包
apply from: 'maven-release-aar.gradle'
1.2在maven-release-aar.gradle
的文件中添加以下代碼
apply plugin: 'maven-publish'
def BUILD_VERSION = '0.3'
// 源代碼一起打包
task androidSourcesJar(type: Jar) {
archiveClassifier.set('sources')
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives androidSourcesJar
}
afterEvaluate {
publishing {
publications {
aar(MavenPublication) {
// from components.java
groupId "com.xxx.sdk" // 包名
artifactId "sdk" // module的名字 這個不配置的話,默認為 library 的名字,
version BUILD_VERSION // 版本號
artifact androidSourcesJar
artifact("$buildDir/outputs/aar/<sdk>-release.aar") //<sdk>替換為Module名,可以在配置完成之后,先執行一下 build 命令,確認一下然后再調整。命令下面有介紹。
//maven-publish does not capture dependencies from this file
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
// Iterate over the api dependencies (we don't want the test ones), adding a <dependency> node for each
configurations.api.allDependencies.each {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
dependencyNode.appendNode('artifactId', it.name)
dependencyNode.appendNode('version', it.version)
}
}
}
}
repositories {
maven {
url "https://<gitlab.com>/api/v4/projects/<project_id>/packages/maven"
//<gitlab.com> 如果是私有化部署,需替換為自己的域名 <project_id> 項目ID(在Gitlab的項目主頁會有顯示)
allowInsecureProtocol true //開啟支持http協議,否則強制校驗https協議
name "gitlab"
credentials(HttpHeaderCredentials) {
name = "Private-Token"
value = "<GitLabPrivateToken>"http://<GitLabPrivateToken>需要替換為你自己的Token 獲取方式:gitlab進入你項目,Settings -> Access Tokens 填寫信息,然后創建Accessy token
}
authentication {
header(HttpHeaderAuthentication)
}
}
}
}
}
2、生產AAR文件并推送到Gitlab
2.1 打開 Andriod Studio 右上角的Gradle projects
依次展開appName -> moduleName -> Tasks -> build
,依次雙擊 clean
、build
依次展開appName -> moduleName -> Tasks -> publishing
,雙擊 publish
1.png
以上操作也可以用Terminal命令執行,效果一致
./gradlew sdk:clean
./gradlew sdk:build
./gradlew sdk:publish
sdk為library的名稱,根據實際名稱替換后執行
2.2 進入Gitlab項目頁面->Packages Registries-> Package Registry,查看是否成功上傳到gitlab
2.png
三、其他項目引入library庫
其他項目添加依賴
1、添加maven代碼,以下兩種選其一
- 如果您使用的是
新版的gradle
,則在項目根目錄下的setting.gradle
文件中添加一下maven代碼
pluginManagement {
...
}
dependencyResolutionManagement {
repositories {
...
//需要添加的代碼-開始
maven {
url "https://<gitlab.com>/api/v4/projects/<project_id>/packages/maven"
//<gitlab.com> 如果是私有化部署,需替換為自己的域名 <project_id> 項目ID(在Gitlab的項目主頁會有顯示)
allowInsecureProtocol true //開啟支持http協議,否則強制校驗https協議
name "Gitlab"
credentials(HttpHeaderCredentials) {
name = "Deploy-Token"
value = "Your-key"http://需替換為你自己申請的key 獲取方式:gitlab進入你項目,Settings -> Repository -> Deploy tokens ,然后創建deploy token
}
authentication {
header(HttpHeaderAuthentication)
}
}
//需要添加的代碼-結束
}
}
- 如果您使用的是
舊版的gradle
,則在項目根目錄下的build.gradle
文件中添加一下maven代碼
allprojects {
repositories {
...
//maven代碼添加在這里
}
}
2、在Module模塊中的build.gradle文件添加一下代碼
dependencies {
...
implementation 'com.xxx.sdk:sdk:0.3'
}
-
com.xxx.sdk
,即為maven-release-aar.gradle
文件中的groupId
-
sdk
,即為maven-release-aar.gradle
文件中的artifactId
-
0.3
,為版本號,即為maven-release-aar.gradle
文件中的BUILD_VERSION
四、更新AAR版本
1.修改 sdk 下的 maven-release-aar.gradle
中的版本號
def BUILD_VERSION = '0.3'
2.打開 Andriod Studio 右上角的Gradle projects
依次展開appName -> moduleName -> Tasks -> build
,依次雙擊 clean
、build
依次展開appName -> moduleName -> Tasks -> publishing
,雙擊 publish