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

其实 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 实战踩坑之路

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

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

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

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

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

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

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

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

一开始我点击 Sign up with Github

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

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

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

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

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

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

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

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

4. 创建 maven 仓库

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

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

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

第一个和第二个必填。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 = 'http://github.com/nesger/PermissionManager' //开源项目网址 }

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

具体到上面例子就是

implementation 'com.zengyu:permission:1.0.0'

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygfdz.html