前言
作为安卓开发人员,经常使用第三方库,都是通过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>"//<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
以上操作也可以用Terminal命令执行,效果一致
./gradlew sdk:clean
./gradlew sdk:build
./gradlew sdk:publish
sdk为library的名称,根据实际名称替换后执行
2.2 进入Gitlab项目页面->Packages Registries-> Package Registry,查看是否成功上传到gitlab
三、其他项目引入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"//需替换为你自己申请的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