上传Library到jCenter仓库
这里记录一下上传用AndroidStudio上传lib到jCenter的一些步骤。
注册账号并创建仓库
1.到 https://bintray.com 网站先用个人邮箱注册账号(不支持qq、163邮箱);
2.注册并登录完成后,在个人页点击“Add New Repository”,添加仓库(使用novoda.bintray插件时,创建的仓库名称必须为”maven”);
3.进入仓库,并点击“Add New Package”新建一个程序包用于上传lib组件(包名会在build.gradle中配置);
4.点击个人头像-“Edit Profile”-“API Key”,输入密码后获取的自己的API Key,复制出来在上传Library时使用;
5.Library上传成功后,点击“Add to Jcenter”按钮,勾选相关选项并填写groupId(和gradle中配置的一样),Send后等待审核通过;
AndroidStudio中配置
可以使用novoda.bintray插件上传Library到仓库:
插件github地址:https://github.com/novoda/bintray-release
示例项目github地址:https://github.com/guangGG/AndroidEncryptLib
参考链接:
https://blog.csdn.net/sky837/article/details/78477534
https://blog.csdn.net/small_lee/article/details/52328613
https://blog.csdn.net/huangxuanheng/article/details/52495968
工程全局build.gradle中配置:
1 | buildscript { |
在Library Module的build.gradle中配置:
1 | apply plugin: 'com.android.library' |
使用bintrayUpload命令发布Library
1 | //在Terminal中执行此语句(BINTRAY_USERNAME替换为bintray网站的用户名,BINTRAY_KEY替换为bintray网站个人的API Key) |
引用Library
上传Library到仓库成功后,在网站上Add to Jcenter,添加成功后就可以直接引用此Library了。
在主工程build.gradle中配置:1
2
3
4
5
6
7
8
9
10……
repositories {
……
//引用时,若还未添加到Jcenter成功时,可配置私有仓库地址使用(如果已添加到Jcenter,不需要这个配置)
maven { url 'https://dl.bintray.com/username/maven' } //网站上Library主页的右上角给出的仓库私有地址
}
dependencies {
……
implementation 'com.demo:MyLib:1.0.0'
}
遇到的问题
1.build时报错:com.novoda.gradle.release.AndroidLibrary$LibraryUsage.getDependencyConstraints()Ljava/util/Set;
原因:导入插件版本比较低(0.7.0),不支持gradle-4.6
解决:使用最新的插件版本(0.9)2.上传到仓库时报错:bintrayUpload: Could not find publication: release
原因:apply plugin ‘com.android.library’要在apply plugin ‘com.novoda.bintray-release’上面,两个的顺序不能反,否则会出这个错
解决:先apply plugin ‘com.android.library’,再apply plugin ‘com.novoda.bintray-release’3.上传到仓库时报错:Execution failed for task ‘lib:bintrayUpload’. > java.net.ConnectException: Connection timed out: connect
原因:网络原因,当前使用的网络开了翻墙,导致连接失败
解决:换一个未翻墙的网络可以了4.上传到仓库时报错:Execution failed for task ‘lib:bintrayUpload’. > Could not create package ‘username/maven/libname’: HTTP/1.1 404 Not Found [message:Repo ‘maven’ was not found]
原因:插件默认上传Library到名字为maven的仓库,bintray网站上创建的Repository名称必须为”maven”
解决:在bintray网站上创建”maven” Repository,并在此仓库中创建对应Library的”Package”