众所周知,将lib发布到jcenter的途径五花八门,八仙过海各显神通,各有各的插件,自己喜欢就好。我也在众多的方法中迷失过,有复杂也有简单,遇到的问题也奇奇怪怪,人都有选择综合征,一旦选择多了就无从下手。还好我找到了一种相对简单的上传方法。
首先你需要在https://bintray.com/上注册一个账号,这是必须的一步,后面在上传的时候会用到账号的一些信息。有了账号之后我们就可以开始在Android Studio中对build.gradle文件进行配置,以实现将我们的lib库上传到jcenter中。下面是build.gradle文件的配置步骤。
1.在项目根目录下面的build.gradle中添加插件的依赖路径,以及通过ext配置私有lib信息,包括库的包名,库名,版本号,库的源代码地址等等...
插件路径依赖
dependencies {
classpath 'com.novoda:bintray-release:0.3.4'
}
库信息的描述
def libVersion = "1.0.8"
ext {
userOrg = "iknow" //bintray.com用户名
groupId = "com.github.iknow4" //jcenter上的路径
publishVersion = libVersion //版本号
description = "It is a android utils Library"//类库的描述
website = "https://github.com/iknow4/Android-utils"//该库在github上对应的链接
uploadName = "AndroidUtils" //上传在bintray的文件夹
licences = ["Apache-2.0"]
}
完整的code如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
classpath 'com.novoda:bintray-release:0.3.4'
}
}
def libVersion = "1.0.8"
ext { userOrg = "iknow" //bintray.com用户名
groupId = "com.github.iknow4" //jcenter上的路径
publishVersion = libVersion //版本号
description = "It is a android utils Library"//类库的描述
website = "https://github.com/iknow4/Android-utils"//该库在github上对应的链接
uploadName = "AndroidUtils" //上传在bintray的文件夹
licences = ["Apache-2.0"]
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
2.在主工程目录下面的build.gradle文件中,将插件'com.novoda.bintray-release',apply到build.gradle中。
添加插件依赖:
apply plugin: 'com.novoda.bintray-release' //添加插件依赖
增加发布模块:
//添加发布模块
publish {
artifactId = 'android-utils-sdk'//模块名称
userOrg = rootProject.userOrg
groupId = rootProject.groupId
uploadName = rootProject.uploadName //模块上传后所在的文件夹名称
publishVersion = rootProject.publishVersion//模块版本号
desc = rootProject.description//模块的描述
website = rootProject.website //模块的网站
licences = rootProject.licences //模块的licences
}
完整的代码如下:
apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release' //添加插件依赖
android {
compileSdkVersion 23
buildToolsVersion "24.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
//添加发布模块
publish {
artifactId = 'android-utils-sdk'//模块名称
userOrg = rootProject.userOrg
groupId = rootProject.groupId
uploadName = rootProject.uploadName //模块上传后所在的文件夹名称
publishVersion = rootProject.publishVersion//模块版本号
desc = rootProject.description//模块的描述
website = rootProject.website //模块的网站
licences = rootProject.licences //模块的licences
}
3.在终端执行./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxx -PdryRun=false命令
其中PbintrayUser是你在https://bintray.com/注册的用户名,PbintrayKey是账户设置页面下的key。
如果命令执行成功,你的库就上传到bintray 网站上了,但是还无法被依赖使用,需要将库发布到jcenter 上,发布有时候需要等待一天时间,如果成功,你会收到发布成功的邮件。这时候,恭喜你,你和其他人就可以在Android Studio中依赖使用了,是不是觉得很不错。
以上是我选择发布库的一种方式,自己觉得还是蛮简单的,从配置到最后发布命令,只需要三步,简称:发布三部曲。需要注意的是,发布是不能将相同版本的库覆盖的,所以每次发布的版本号要求不一样。
可以参考我github上的一个项目Android-utils
该项目是一个开发工具库,如果想使用可以直接在build.gradle中进行依赖
dependencies {
compile 'com.github.iknow4:android-utils-sdk:1.0.8'
}
THE END
国际惯例附上微信,如有问题欢迎交流: