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

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

背景

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

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

不过因为版本和环境问题,不少很早之前写的文章并不彻底适用。git

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

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

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

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

开发环境

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

实战踩坑之路

1. 让项目跑起来

因为我这个开源项目是两年半前写的,因此要先保证 pull 下来的项目能够正常跑起来。app

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

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,首先得要有一个帐号。

你觉得新建帐号很简单?

这里面仍是有很多坑的。容我一一道来。

网站为 bintray.com/

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

image.png

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

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

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

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

一开始我点击 Sign up with Github

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

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

后面改成点击 Sign up with Google,结果帐号顺利建立了。

因此第二个坑就是注册邮箱或者使用第三方注册的邮箱须要是 Gmail 邮箱。

这边亲测的结论是 QQ 邮箱不能够,Gmail 邮箱能够。其余的邮箱就不清楚了。

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

4. 建立 maven 仓库

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

第一个和第二个必填。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 官网:github.com/novoda/bint…

6. 上传开源库

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

./gradlew clean build bintrayUpload -PbintrayUser=zengyuzhan -PbintrayKey=xxxxxx -PdryRun=false
复制代码

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

按照下图获取 API Key:

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

等到 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:

能够看到你开源的全部包名:

点击最新上传可是尚未添加到 Jcenter 的库。

点击 Go to Old Look

能够看到 Add to JCenter 按钮。点击

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

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

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

好比我以前审核经过的库:

以后你就能够像引用其余三方库同样引用到你的项目中了。

总结以下:

本文演示的仓库为:github.com/nesger/Perm…

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

参考连接:
blog.csdn.net/lmj62356579…
www.jianshu.com/p/6f808c29e…
blog.csdn.net/anydrew/art…

相关文章
相关标签/搜索