Android 上传开源项目到 jcenter 实战踩坑之路

本文微信公众号「AndroidTraveler」首发。

背景

其实 Android 上传开源项目到 jcenter 并不是一件新鲜事,网上也有很多文章。

包括我本人在将开源项目上传到 jcenter 的时候也是参考了一些文章。

不过由于版本和环境问题,很多很早以前写的文章并不完全适用。

基于此,这边总结一下近期(2019-07-02)我上传开源项目到 jcenter 的实战踩坑之路。

上传的开源项目是 Android 6.0 动态权限申请的项目。

基于软件的单一职责原则,我这里就不展开讲了。

本篇文章主要讲上传开源项目到 jcenter 的实战踩坑之路,后续如果需要再单独另写一篇文章介绍这个开源项目。

开发环境

设备:iMac
Android Studio 版本:3.2.1
java version:1.8.0_45

实战踩坑之路

1. 让项目跑起来

由于我这个开源项目是两年半前写的,所以要先保证 pull 下来的项目可以正常跑起来。

果然,控制台输出下面信息

No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android

明明之前可以 run 起来的。看来是因为 AndroidStudio 升级版本的问题。

这边的解决方法就是升级 gradle 版本

将原本的

classpath 'com.android.tools.build:gradle:2.2.2'

升级为

classpath 'com.android.tools.build:gradle:3.2.1'

然后其他的做相应调整,项目就可以正常运行到设备上面了。

2. 将要上传的开源项目独立成一个 Module

之前开源项目是把所有代码都放在 app Module 里面。

其他小伙伴使用前需要把相关文件夹拷贝到自己的项目里面。

这里的 Module 抽取其实做的是类似的事情,就是把相关文件迁移到新建的待上传 Module。

3. 新建 bintray.com 账号

我们要上传开源项目到 jcenter,首先得要有一个账号。

你以为新建账号很简单?

Android 上传开源项目到 jcenter 实战踩坑之路_第1张图片

这里面还是有不少坑的。容我一一道来。

网站为 https://bintray.com/。

点击进去,第一个坑来了。

Android 上传开源项目到 jcenter 实战踩坑之路_第2张图片

如图所示,个人开发者要点击右边。不要看到左边的按钮颜色鲜艳并且有个 FREE 字眼就去点了。

因为 START YOUR FREE TRIAL 的意思是开始你的免费试用,试用说明有期限,所以你懂了吧。

点击右边之后,进入注册界面。

Android 上传开源项目到 jcenter 实战踩坑之路_第3张图片

为了方便,我用的是第三方登录。

一开始我点击 Sign up with Github

Android 上传开源项目到 jcenter 实战踩坑之路_第4张图片

结果填写完资料之后点击完成注册,但是界面没有任何反应。

Android 上传开源项目到 jcenter 实战踩坑之路_第5张图片

最后发现是 QQ 邮箱的关系。

后面改为点击 Sign up with Google,结果账号顺利创建了。

所以第二个坑就是注册邮箱或者使用第三方注册的邮箱需要是 Gmail 邮箱。

这边亲测的结论是 QQ 邮箱不可以,Gmail 邮箱可以。其他的邮箱就不清楚了。

这就是注册账号的第二个坑。

4. 创建 maven 仓库

Android 上传开源项目到 jcenter 实战踩坑之路_第6张图片

登录进入主页后,点击 Add New Repository

Android 上传开源项目到 jcenter 实战踩坑之路_第7张图片

第一个和第二个必填。Name 填 maven,Type 选择 Maven 即可。

如果这一步没有操作,在最后上传的时候会报错。

5. 引入 bintray-release

在项目的 build.gradle 文件的 dependencies 块里面增加下面语句:

classpath 'com.novoda:bintray-release:0.9.1'

在要上传的 Module 的 build.gradle 添加如下语句:

在文件顶部添加:

apply plugin: 'com.novoda.bintray-release'

在文件末尾添加:

publish {
    userOrg = 'zengyuzhan'                                         //bintray.com 账号用户名
    groupId = 'com.zengyu'                                        //唯一 id,最后依赖的库名组成部分之一
    artifactId = 'permission'                                    //仓库名
    publishVersion = '1.0.0'                                    //版本号
    desc = 'for android dynamic request permission'            //描述
    website = 'https://github.com/nesger/PermissionManager'   //开源项目网址
}

publish 书写之后,后面依赖的引入就是 implementation 'groupId:artifactId:publishVersion'

具体到上面例子就是

implementation 'com.zengyu:permission:1.0.0'

这一步骤有一些坑,比如 classpath 的引入这里,我引入版本为 0.8.1 的时候,报了如下错误:

Cause: com.novoda.gradle.release.AndroidLibrary$LibraryUsage.getDependencyConstraints()Ljava/util/Set;

引入版本为 0.6.1 时,报错:

No such property: FOR_RUNTIME for class: org.gradle.api.attributes.Usage

引入版本为 0.3.4 时,报错:

Unable to load class 'org.gradle.api.internal.component.Usage'.

修改为最新版本的 0.9.1 之后就没问题了。所以假设当你看到这篇文章按照上面引入时报错,可以到官网 GitHub 看下最新版本是否是 0.9.1。

GitHub 官网:https://github.com/novoda/bintray-release

6. 上传开源库

在项目根目录执行上传命令,直接在 Android Studio 的 Terminal 面板输入命令即可。

./gradlew clean build bintrayUpload -PbintrayUser=zengyuzhan -PbintrayKey=xxxxxx -PdryRun=false

其中 PbintrayUser 指定的是你注册的 bintray.com 账号的用户名。PbintrayKey 指定的是你 bintray.com 网站的 API Key。

按照下图获取 API Key:

Android 上传开源项目到 jcenter 实战踩坑之路_第8张图片

Android 上传开源项目到 jcenter 实战踩坑之路_第9张图片

点击拷贝按钮拷贝到剪贴板即可,需要使用的话再粘贴。

等到 Terminal 编译成功之后,会显示 BUILD SUCCESSFUL。

这边编译的时候出了一个错误,如下:

Execution failed for task ':permission:javadocRelease'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): 

这个是 Javadoc 任务报错,我不需要这个,因此解决方法是不执行上面的 task :permission:javadocRelease

在项目的 build.gradle 文件的 allprojects 语句块中,增加下面语句:

tasks.getByPath(":permission:javadocRelease").enabled = false

可以看到小括号里面就是上面报错的 task。

如果你的 Javadoc 报错 task 跟我这个不一致(大概率不一致,跟 Module 名有关系),那么你就要进行对应修改。

添加之后 Sync 项目再上报就没这个问题了。

7. Add to JCenter

上传完成之后,我们还需要到 bintray.com 网站上面点击 Add to JCenter,然后等待审核才算大功告成。

因为上面的项目我已经发布成功并且点击了,所以我用另一个开源库来演示这个步骤。

进入首页,点击 maven:

Android 上传开源项目到 jcenter 实战踩坑之路_第10张图片

可以看到你开源的所有包名:

Android 上传开源项目到 jcenter 实战踩坑之路_第11张图片

点击最新上传但是还没有添加到 Jcenter 的库。

Android 上传开源项目到 jcenter 实战踩坑之路_第12张图片

点击 Go to Old Look

Android 上传开源项目到 jcenter 实战踩坑之路_第13张图片

可以看到 Add to JCenter 按钮。点击

Android 上传开源项目到 jcenter 实战踩坑之路_第14张图片

简单写下对这个库的描述即可。

Android 上传开源项目到 jcenter 实战踩坑之路_第15张图片

点击 Send 之后网页会显示一个提示。接下来就等待邮箱通知就可以了。

审核完毕之后你进来就不会看到 Add to JCenter 按钮了。

比如我之前审核通过的库:

Android 上传开源项目到 jcenter 实战踩坑之路_第16张图片

之后你就可以像引用其他三方库一样引用到你的项目中了。

总结如下:

Android 上传开源项目到 jcenter 实战踩坑之路_第17张图片

本文演示的仓库为:https://github.com/nesger/PermissionManager

有不清楚的可以留言或者直接查看我演示仓库的提交记录和源码。

参考链接:
https://blog.csdn.net/lmj623565791/article/details/51148825
https://www.jianshu.com/p/6f808c29e378
https://blog.csdn.net/anydrew/article/details/51286998

Android 上传开源项目到 jcenter 实战踩坑之路_第18张图片

你可能感兴趣的:(Android 上传开源项目到 jcenter 实战踩坑之路)