android p nexus,Android组件化(一)组件包管理之Nexus

Android组件化落地方案现在有两种,第一种是以jar/aar包的方式进行编译依赖,另外一种是以工程方式进行依赖,这两种方案各有优缺点,今天分享的是第一种,通过jar/aar方式进行编译依赖。

首先,如果要进行编译依赖就一定要有一个比较好的管理平台来发布以及后续的维护,所以我们使用现在服务端所用的nexus服务。今天主要就是介绍如何在Android里面进行配置,实现打包并且上传到nexus服务中去,以及如何在项目中进行引用。

第一步,创建你的Android工程。然后找到你的Module的build.gradle,做如下修改,以便于你assembleRelease后是jar/aar。

// 注释掉这行,咱们需要生成的是个aar包,而不是applicaiton

//apply plugin: 'com.android.application'

// 增加此行配置,表示当前包生成的是jar/aar

apply plugin: 'com.android.library'

android {

compileSdkVersion 25

buildToolsVersion "25.0.2"

defaultConfig {

// 由于library模式是不能设置applicationId,所以注释掉

// applicationId "com.android.xxx.logger"

minSdkVersion 17

targetSdkVersion 25

versionCode 1

versionName "1.0.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

exclude group: 'com.android.support', module: 'support-annotations'

})

compile 'com.android.support:appcompat-v7:25.3.1'

compile 'com.android.support.constraint:constraint-layout:1.0.2'

testCompile 'junit:junit:4.12'

}

第二步,在project的build.gradle同级目录中,创建一个publish.gradle

并且增加如下代码,此代码的作用是进行打包,并且上传到你的nexus目录地址中。

apply plugin: 'maven'

apply plugin: 'signing'

configurations {

deployerJars

}

repositories {

mavenCentral()

}

// 判断版本是Release or Snapshots

def isReleaseBuild() {

return !VERSION.contains("SNAPSHOT");

}

// 获取仓库url

def getRepositoryUrl() {

return isReleaseBuild() ? RELEASE_URL : SNAPSHOT_URL;

}

// type显示指定任务类型或任务, 这里指定要执行Javadoc这个task,这个task在gradle中已经定义

task androidJavadocs(type: Javadoc) {

// 设置源码所在的位置

source = android.sourceSets.main.java.sourceFiles

}

// 生成javadoc.jar

task androidJavadocsJar(type: Jar) {

// 指定文档名称

classifier = 'javadoc'

from androidJavadocs.destinationDir

}

// 生成sources.jar

task androidSourcesJar(type: Jar) {

classifier = 'sources'

from android.sourceSets.main.java.sourceFiles

}

// 产生相关配置文件的任务

artifacts {

archives androidSourcesJar

archives androidJavadocsJar

}

uploadArchives {

repositories {

mavenDeployer {

beforeDeployment {

MavenDeployment deployment -> signing.signPom(deployment)

}

pom.version = VERSION

pom.artifactId = ARTIFACT_ID

pom.groupId = GROUP_ID

repository(url: getRepositoryUrl()) {

authentication(userName: NAME, password: PASSWORD) // maven授权信息

}

}

}

}

// 进行数字签名

signing {

// 当 发布版本 & 存在"uploadArchives"任务时,才执行

required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }

sign configurations.archives

}

第三步,增加这个文件以后,syncy一下会发现报错,因为有些全局变量没有进行声明以及赋值,所以找到同级目录中的gradle.properties,增加如下代码。

# 用于上传到指定nexus服务配置

# 如果在版本号中有 -SNAPSHOT字段,这样在上传的时候会上传到 SNAPSHOT_URL 地址中,反之会上传到 RELEASE_URL 地址中

VERSION=1.0.0-SNAPSHOT

GROUP_ID=com.android.xxx.logger

ARTIFACT_ID=JFLogger

RELEASE_URL=http://maven.xxx.com/nexus/content/repositories/releases/

SNAPSHOT_URL=http://maven.xxx.com/nexus/content/repositories/snapshots/

NAME=***

PASSWORD=**********

第四步,反回来找到Module的build.gradle,然后在最底下增加如下代码,此代码的作用是把gradle的配置引入到项目中,这样你就可以在gradle的命令中调用uploadArchives方法进行打包上传。

apply from: '../publish.gradle'

第五步,执行uploadArchives,可以命令行执行,也可以用IDE的工具来执行,具体画面如下。

4eec7163df26

屏幕快照 2017-10-24 下午5.39.14.png

4eec7163df26

屏幕快照 2017-10-24 下午5.42.20.png

至此,所有都已经配置好了,这样你就可以在你的nexus中找到对应的版本了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值