Android 发布开源库到 JitPack、jCenter

JitPack、jCenter是我们常用的发布Android开源库的网站,发布成功后就可以在Android Studio中通过Gradle方便的引用到项目中了,相比Eclipse时代要方便的多,对于使用者确实简单了,但对于发布者来说可能还略有坎坷,这里记录下发布的过程,以及遇到的坑。

发布到JitPack

一、

准备好项目以及要发布的开源库,并先将其上传到github。



有一点需要注意,上传到JitPack的开源库默认使用项目的名称,而不是要发布的开源库的名称,所以尽量给项目起一个比较优雅的名字(这里我们使用同名)。

二、

这里我们要用到一个的插件android-maven-gradle-plugin

1、、在项目的build.gradle添加classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5',如下图:


2、在要上传的library的build.gralde文件添加如下代码:

// JitPack Maven
apply plugin: 'com.github.dcendents.android-maven'
// Your Group
group='com.github.username'

其中username需要替换为你在github上的用户名
如下图所示:



记得将修改后的代码提交到github哦。

三、

打开项目的github主页,创建一个Release或Tag,可按如下步骤:
1、


2、

3、

4、

四、

1、将项目的仓库提交到JitPack:https://jitpack.io/


2、版本提交完成后,JitPack会自动生成引用该library的配置信息:

最后就可以愉快的在项目中使用了。

发布到jCenter

一、

准备好要发布的library:


二、

1、jCenter属于bintray旗下的一个仓库,所以先要注册账号哦,https://bintray.com
2、按照如下步骤得到API Key,在上传library的时候需要用到。


3、创建一个名字为maven的Repository

4、在maven仓库中创建一个package,注意package的名字和要发布的library的名字相同

三、

关于上传可以使用gradle-bintray-plugin插件,但是略复杂,所以我们采用bintray-release
1、在项目的build.gradle添加bintray-release的classpath:classpath 'com.novoda:bintray-release:0.3.4',如下图:


2、在要上传的library的build.gralde文件添加如下代码:

apply plugin: 'com.android.library'
//新添加
apply plugin: 'com.novoda.bintray-release'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile 'com.squareup.okhttp3:okhttp:3.5.0'
}

//新添加
publish {
    userOrg = 'othershe' //在https://bintray.com上注册的用户名
    groupId = 'com.othershe' //jCenter上的路径
    artifactId = 'dutil' //要上传的library名称(和二、4中的package相同)
    publishVersion = '1.0.0' //library的版本号
    desc = 'A download library,that is based on okhttp' //library的简单描述
    website = 'https://github.com/Othershe/DUtil' //library的开源地址,例如在github上的地址
}

到这里必须的代码配置就完了,主要的注释都有了,按照上边的编写即可。

四、

1、可以在AndroidStudio的Terminal中执行命令:gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
其中PbintrayUser代表注册的用户名,PbintrayKey就是上边得到的API Key,PdryRun是一个配置参数,当为true的时候,会运行所有的环节,但是不会上传,如下图:


2、不出意外的话等待2到3分钟即可上传成功。但是呢这一步往往有许多的坑呀,这里简单的记录下:

  • 坑1:



    这个好处理,主要是因为lint检查时报错,因此中断了整个编译过程,在要上传的library的build.gralde文件的android标签里添加如下代码即可。

android {
    lintOptions {
        abortOnError false
    }
}
  • 坑2:



    网上大部分办法都说在项目的build.gradle文件的allprojects 标签里添加如下代码:

allprojects {
    tasks.withType(Javadoc) {
        options {
            encoding "UTF-8"
            charSet 'UTF-8'
            links "http://docs.oracle.com/javase/7/docs/api"
        }
    }
}

之前上传另外一个项目确实可行,但这次确无效了,最后找到了如下方案,在项目的build.gradle文件的allprojects 标签里添加如下代码:

allprojects {
    tasks.withType(Javadoc) {
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }
}

解决了遇到的问题,再执行上传命令,终于成功了:


五、

上传成功后就可以在maven仓库中看到我们的library:



点进去则可以看到详情:



此时我们还不能在项目中引用该库,要将其添加到jCenter,点击上图右下角的按钮:

填写一些对library的描述,然后发送。等待数小时审核通过后会邮件通知你的,之后就可以在项目中引用了:


到这里两种发布方式就介绍完了,布到jCenter的步骤虽然也不算复杂,但很少能一次发布成功,总会被一些问题折腾半天。相比之下发布到JitPack要简单的多,最重要的是省时省力,没有那么多的问题困扰,真是给力呀!如果你也有发布开源库的需求,选择哪种方式相信你也有答案了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容