Android 中打包成aar并上传到Nexus搭建的maven仓库

版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 https://blog.csdn.net/jun5753/article/details/83864023

目的

方便组件化流通,搭建私有库有助于多人协作开发项目,提高集成的稳定性和库引用版本的可控性,也减少繁琐的第三方库的发布工作。

1.环境搭建

  1. 下载 安装Nexus–>配置环境,启动服务器(请看“参考1”)

  2. 修改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仓库并且引用

2.Android 发布项目到私服Nexus仓库

3.Pom files missing dependencies declared with implementation/api

4.Android Studio的Proguard(代码混淆)

猜你喜欢

转载自blog.csdn.net/jun5753/article/details/83864023