目的
方便组件化流通,搭建私有库有助于多人协作开发项目,提高集成的稳定性和库引用版本的可控性,也减少繁琐的第三方库的发布工作。
1.环境搭建
-
下载 安装Nexus–>配置环境,启动服务器(请看“参考1”)
-
修改localhost为电脑的ip (方便在局域网上查看)
2.制作aar并上传
在Android Studio(AS)中新建module,写测试的接口,供打包成aar,方便项目引用
gradle.properties中的配置信息:
#Maven仓库的URL
MAVEN_REPO_RELEASE_URL=http://192.168.1.7:8081/repository/maven-releases/
MAVEN_REPO_SNAPSHOT_URL=http://192.168.1.7:8081/repository/maven-snapshots/
#对应maven的GroupId的值
GROUP = demo.yangjun.com
#登录nexus ossde的用户名
NEXUS_USERNAME=admin
#登录nexus oss的密码
NEXUS_PASSWORD=admin123
# groupid
GROUP_ID = testmaven
# type
TYPE = aar
# description
DESCRIPTION = 添加了xxx接口
module中的build脚本如下:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'maven'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 17
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
//是否混淆 注意混淆后有些api会被隐藏
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
lintOptions {
abortOnError false
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
uploadArchives { //新增 ,因为Android Studio gradle 支持maven插件,所以可以添加此task
configuration = configurations.archives
repositories {
mavenDeployer {
snapshotRepository(url: MAVEN_REPO_SNAPSHOT_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
repository(url: MAVEN_REPO_RELEASE_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version '1.1.8' //版本名称 上传是不能和之前的一样,否则上传失败
artifactId GROUP_ID //和前面网站上填写的一样
groupId GROUP //和前面网站上填写的一样
packaging TYPE //填写aar
description DESCRIPTION //更新描述
}
}
}
}
之后找到AS中的gradle,执行该方法上传到指定的maven地址。
maven服务器的aar显示情况:
3.远程项目中使用aar方法
在项目中build.gradle(Module:app)添加
repositories {
maven {
url 'http://192.168.1.7:8081/repository/maven-releases/'
}
}
使用当前的库:
implementation 'demo.yangjun.com:testmaven:1.1.8'
4.注意事项
4.1 aar版本号
发布的aar版本号不要和之前服务器的重复
4.2仓库中的依赖能否使用
在仓库中的代码所依赖的第三方是可以使用的maven不能识别谷歌新推出来的 implementation/api
,都会被当做compile
,只能等待谷歌的更新了。
4.3.混淆文件能否起作用
使用如下配置,Android studio 可以自动识别library中的混淆文件,不需要使用者手动添加:
在android.defaultConfig
中增加
consumerProguardFiles 'proguard-rules.pro'
这样在项目调用中主项目 不用再去添加混淆规则,module中添加以上代码即可。
5.参考
1.Android 打包上传AAR文件到本地Maven仓库并且引用
3.Pom files missing dependencies declared with implementation/api