Android开源库Gradle发布插件

2017-02-21 Renfei Yu 更多博文 » 博客 » GitHub »

原文链接 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 key
  • bintray.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 key
  • bintray.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"
        }
    }
    

参考文档