前言
在android开发中,当我们使用三方库时,如使用okhttp网络库,直接在gradle中添加一句依赖,"compile 'com.squareup.okhttp3:okhttp:3.6.0'",让我们在使用时很方便。当时还在疑惑,为什么只添加一句依赖,就会直接下载类库到项目中,还可以很方便的使用。后来在微信公众号上看到"Android快速发布开源项目到jcenter"后,才恍然大悟,原来如此。
然后决定自己去试一下,上传一个开源项目到jcenter,于是我就参考上面的文章,一步一步去执行了,这过程中曲折就不说了,但是...但是,就在成功上传项目到jcenter后,最后一步,该点击"Add to jcenter"按钮。可是,我怎么也找不到这个"Add to jcenter"按钮。。。当时各种谷歌,各种百度。。。也没有找到解决方法,当时我就感觉,我可能上了一个假的网站。。。
后来,时隔快两个月之久,无意间又看到"Android上传项目到jcenter"的文章,才发现,我当时确实是上了一个假网站。。。然后根据真网站,继续操作,也出现了很多问题。故写此文章将心酸历程记录下来,让各位老司机少走弯路。
本文采用鸿洋推荐的bintray-release这个插件,感觉比gradle-bintray-plugin要方便很多。(可以少写很多代码,哈哈。)
一,申请bintray账号
jcenter是一个有bintray.com维护的一个仓库,若想发布项目到jcenter,首先需将项目上传到bintray。我们需要在该网站上注册账户,这里建议直接使用github账户登录,完成注册即可。注册网址:https://bintray.com
走到这里,第一步就错了,我当时就是在这个网站上注册的账户,导致后来一直找不到"Add to jcenter"按钮。
个人免费版注册网址:https://bintray.com/signup/oss
这两个网站区别不是很大,需要注意。这里建议直接使用github账户登录,完成注册即可。登录成功后,点击网站右上角用户名,选择"Edit Profile"进入个人信息编辑页面,点击"Api Key",输入你的密码,即可查看Api Key信息,记录下该信息,后面会用到。操作如图:
二,在项目中引入"bintray-release"插件
首先你需要有一个待上传的项目,这里我是用的是customprogressbarlib,一个自定义带有进度显示的ProgressBar。
-
项目的build.gradle
在项目的build.gradle中添加bintray-release插件,注意:是项目的build.gradle,不是module的。
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.3 //添加 classpath 'com.novoda:bintray-release:0.3.4' } }
-
待上传module的build.gradle
找到待上传module的build.gradle,按照下面的编写即可,注释很详细,如果按照下面的编写,最终引入的方式为:compile 'com.listenergao:customprogressbarlib:1.0.0'
apply plugin: 'com.android.library' apply plugin: 'com.novoda.bintray-release' //添加 android { //保持不变 } dependencies { //保持不变 } //添加 publish { userOrg = 'listenergao'//bintray.com用户名 groupId = 'com.listenergao'//jcenter上的路径 artifactId = 'customprogressbarlib'//项目名称 publishVersion = '1.0.0'//版本号 desc = 'With a schedule, according to the horizontal direction or circular custom progress bar'//描述,不重要 website = 'https://github.com/ListenerGao/CustomProgressBar'//网站,不重要 }
三,上传到jcenter
上传很简单,执行下面的代码就可以了。
- win系统:
`gradlew clean build bintrayUpload -PbintrayUser=listenergao -PbintrayKey=填入自己的Api Key -PdryRun=false
`
- mac系统:
./gradlew clean build bintrayUpload -PbintrayUser=listenergao -PbintrayKey=填入自己的Api Key -PdryRun=false
user就是你bintray的用户名,key就是上面让你保存的Api Key,pdryRun是一个配置参数,当为true时,表示会运行所有环节,但不会上传。
这时我们打开Android Studio的Terminal控制台,注意是在当前项目下,输入上面的命令,然后enter运行。
接下来就是等待了,等到你看到如下图所示时,证明你上传成功了。
这时,你访问:https//bintray.com/自己的用户名/maven,即可看到:
看到我们上传的项目,点击进去查看库的信息,注意:此时还不能直接被引用。进入后,点击"Add to jcenter"按钮。
点击"Add to jcenter"按钮后,进入描述页面,写一下对该库的描述即可,点击send按钮。到此,终于完成了。我们只需要等待bintray的工作人员审核,审核通过后会给你发送站内Message,并且"Add to jcenter"按钮也会消失。此外,审核通过后,你还可以根据你上传时的groupId,访问该网站:https://jcenter.bintray.com/com/groupId, 例如:https://jcenter.bintray.com/com/listenergao,如果可以引用,即可看到:
四,上传中遇到的问题
上传过程中,可能需要下载gradle的一些依赖,速度比较慢。
JDK版本建议使用1.8,否则会出现:Unsupported major.minor version 52.0错误。
代码中如果有中文注释,会提示GBK乱码,别问我怎么会知道。。。
提示找不到class或者intface或者enum,解决办法如下:
用editplus把你文件的编码格式改成UTF-8,不要用notepad,我用了没效果。
提示找不到用户名和APIKEY,原因是大小写一定要统一。
提示HTTP/1.1 401 Unauthorized [message:This resource requires authentication]
apikey 和 用户名的值写错了。
若是提示BUILD FAILED 也很正常,看错误信息 Could not create package 'listenergao/maven/customprogressbarlib': HTTP/1.1 404 Not Found [message:Repo 'android' was not found] 仓库不存在,这里需要我们在bintray上简历仓库,name和type写maven即可。(我参考的文章中没有提到这一步)
基本上就这几个错误,关于其它错误,大家可以进行谷歌,这是我在操作中遇到的错误。
文章首发地址:http://blog.csdn.net/listeners_gao/article/details/55655018