Android开源库Gradle发布插件
原文链接 https://comsince.github.io/2017/02/21/gradle-plugin-for-publish/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
概述
Gradle插件,用于将开源项目发布到jcenter或者artifactory中,简化开发者接入配置,只需关心jcenter项目配置即可
一 插件配置
1.1 引用插件
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:1.3.1"
classpath "com.comsince.github:publish-plugin:1.0.0"
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4"
}
}
apply plugin: 'com.android.library'
// 在apply android gradle插件之后apply本插件
apply plugin: 'com.comsince.publisher'
1.2 JCenter支持
引用过本插件的Library工程, 可以打包aar,javadoc,jar 发布到 Jcenter 可以在 Android Studio 的gradle任务图形化界面中双击 publishing -> bintrayUpload
会失败, 因为没有配置 帐号, 密码
1.2.1 local.properties文件中配置jCenter基本信息
bintray.user=comsince
# 你的bintray 用户名bintray.apikey=your api key
# 你的bintray api keybintray.repo=
# 你创建的bintray repo名称bintray.name=
你所要发布的库的名称bintray.userOrg=
新版的jcenter,需要提供你创建的组织名称,不然无法上传成功
NOTE: 有关JCenter申请可参考
1.2.2 gradle.properties 文件中配置发布信息
Library开发者发布的时候, 可以在 工程里面修改以上数据, 也可以通过 gradle.properties
更改
libGroup=com.comsince.github
libId=publish-plugin
libVersion=1.0.0
默认的 Group 是工程的 包名 默认的 artifactId 是library工程的 项目名 默认的 version 是library工程的 versionName
此时通过 Android Studio 图形面板, 或者gradle命令
./gradlew bintrayUpload
二 Gradle参数说明
gradle.properties: build.gradle同级目录下
libGroup=com.comsince.github
# 建议不配置, 默认使用工程包名配置 aar 的group, 如果不配置, 默认使用 Library工程的 包名
libId=publisher
配置 aar 以及 proguard 的 id, 如果不配置, 默认使用 Library工程的 项目名
libVersion=1.1
# 建议不配置, 默认使用工程版本名VersionName配置 aar的 版本号, 如果不配置, 默认使用 Library工程的 versionName
local.properties: build.gradle同级目录下,
local.properties文件应该在.gitignore中屏蔽掉, 此文件仅用于本地开发
bintray.user=comsince
# 你的bintray 用户名bintray.apikey=your api key
# 你的bintray api keybintray.repo=
# 你创建的bintray repo名称bintray.packageName=
你所要发布的库的名称bintray.userOrg=
新版的jcenter,需要提供你创建的组织名称,不然无法上传成功-
bintray.vcsUrl=
你开源的项目地址
三 示例工程
注意事项
对于超大型应用, lintVital时OOM, 请按如下配置
gradle.properties 中开启org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true
对于引用了很多模块的超大型应用, dex时OOM, 请按如下配置
build.gradle中
android { dexOptions { jumboMode true incremental true preDexLibraries false javaMaxHeapSize "4g" } }