Android上传Library到JCenter可能遇到的问题

这并不是一篇教你如何step by step上传Android Library到JCenter,因为你随便搜一下,都会发现很多那样的文章,而且几乎都大同小异(互相抄)。正式因为抄来抄去,可能很多人并不会深究这个教程有什么问题,自己按照这个教程能够达到目的吗,可能会遇到了什么问题?本文的主要目的就是结合自己完成的过程告诉你按照网上的大部分教程你可能会遇到什么问题,当你因为参考网上大多数教程而又一直失败正在抓狂的时候,看看本文也许有帮助。

问题一:在bintray.com上注册自己的账号

大部分教程都是告诉你打开https://bintray.com/然后注册一个账号,然而随着bintray的更新,你现在打开该网站看到的是这样的(截止2017年03月29):

你可能有点懵,为什么注册账号看起来还要钱,当你点击START YOUR FREE TRIAL去注册的时候,你其实已经进入了团队账号注册,类似于企业账号,所以你会发现会让你填写Company Name和Organization ID,除此之外和注册个人账号都一样了,如果你是这样注册的,等你按照网上大多数的教程step by step往下走的时候,你会发现到最后执行上传命令的时候,一直出现这样的错误:

1
HTTP/1.1 401 Unauthorized [message:This resource requires authentication]

按照网上的教程你以为是用户名或者apikey填错了,但是你会发现你怎么改都没用

正确的个人账号注册方法是点击START YOUR FREE TRIAL下方的For Open Source Distribution Sign Up Here来Sign Up,细心的你可能会发现,二者的注册地址是不一样的,企业的注册地址是https://bintray.com/signup,个人账号的注册地址是https://bintray.com/signup/oss

这个坑浪费了我很多时间,当然也不是说如果按照企业账号注册最后就不能完成上传,一样可以,但是网上的教程几乎都是针对个人账号而言,如果你注册的是企业账号按照网上的教程是一定不能成功的,因为企业账号需要配置组织名称。

问题二:artifactId要和Library module的名字一样

当你到最后上传Library到JCenter的时候,你可能会遇到这样的错误:

1
2
HTTP/1.1 400 Bad Request [
message:Unable to upload files: Maven group, artifact or version defined in the pom file do not match the file path...]

网上大多数可能会说是要artifactId要和libraryName保持一致,其实是artifactId要和你要上传的Library module的名字保持一致

这是我按照网上的大多数教程上传的时候遇到的两个比较坑的问题,其他如果还有什么问题,那应该就是个例了,google一下,应该都好解决。当然,针对网上大多数的教程,我还有一些建议:

配置bintrayRepo的时候,并没有所谓的默认就是maven这一说,不要以为新建仓库的时候仓库类型选择是maven,默认名字就应该是maven,这个可以随便写,而且建议新建康库的时候最好不要叫maven,要么结合自己的用户名新建,要么结合功能用处新建,比如Android-xx等

配置bintrayName的时候,网上的教程基本上也是所谓的要和你在仓库里面新建的package保持一致,保持一致这句话没毛病,然而其实你没必要在仓库里面先新建一个package,只要你有仓库,其他信息都配置正确,上传的时候会自动按照你配置的bintrayName在你的仓库里面创建的

最后

自己在github上放了上传到JCenter过程中简化gradle文件配置的模板文件,README里面也写清楚了如何使用,有需要的可以去参考一下:github配置文件

同时自己也放上自己第一次上传的一个Library,需要的可以去查看:slidingtabindicator