JitPack、jCenter是我们常用的发布Android开源库的网站,发布成功后就可以在Android Studio中通过Gradle方便的引用到项目中了,相比Eclipse时代要方便的多,对于使用者确实简单了,但对于发布者来说可能还略有坎坷,这里记录下发布的过程,以及遇到的坑。
发布到JitPack
一、
准备好项目以及要发布的开源库,并先将其上传到github。
有一点需要注意,上传到JitPack的开源库默认使用项目的名称,而不是要发布的开源库的名称,所以尽量给项目起一个比较优雅的名字(这里我们使用同名)。
二、
这里我们要用到一个的插件android-maven-gradle-plugin
1、、在项目的build.gradle添加classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
,如下图:
2、在要上传的library的build.gralde文件添加如下代码:
// JitPack Maven
apply plugin: 'com.github.dcendents.android-maven'
// Your Group
group='com.github.username'
其中username需要替换为你在github上的用户名
如下图所示:
记得将修改后的代码提交到github哦。
三、
打开项目的github主页,创建一个Release或Tag,可按如下步骤:
1、
2、
3、
4、
四、
1、将项目的仓库提交到JitPack:https://jitpack.io/
2、版本提交完成后,JitPack会自动生成引用该library的配置信息:
最后就可以愉快的在项目中使用了。
发布到jCenter
一、
准备好要发布的library:
二、
1、jCenter属于bintray旗下的一个仓库,所以先要注册账号哦,https://bintray.com
2、按照如下步骤得到API Key,在上传library的时候需要用到。
3、创建一个名字为maven的Repository
4、在maven仓库中创建一个package,注意package的名字和要发布的library的名字相同
三、
关于上传可以使用gradle-bintray-plugin插件,但是略复杂,所以我们采用bintray-release
1、在项目的build.gradle添加bintray-release的classpath:classpath 'com.novoda:bintray-release:0.3.4'
,如下图:
2、在要上传的library的build.gralde文件添加如下代码:
apply plugin: 'com.android.library'
//新添加
apply plugin: 'com.novoda.bintray-release'
android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
defaultConfig {
minSdkVersion 10
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
}
//新添加
publish {
userOrg = 'othershe' //在https://bintray.com上注册的用户名
groupId = 'com.othershe' //jCenter上的路径
artifactId = 'dutil' //要上传的library名称(和二、4中的package相同)
publishVersion = '1.0.0' //library的版本号
desc = 'A download library,that is based on okhttp' //library的简单描述
website = 'https://github.com/Othershe/DUtil' //library的开源地址,例如在github上的地址
}
到这里必须的代码配置就完了,主要的注释都有了,按照上边的编写即可。
四、
1、可以在AndroidStudio的Terminal中执行命令:gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
其中PbintrayUser代表注册的用户名,PbintrayKey就是上边得到的API Key,PdryRun是一个配置参数,当为true的时候,会运行所有的环节,但是不会上传,如下图:
2、不出意外的话等待2到3分钟即可上传成功。但是呢这一步往往有许多的坑呀,这里简单的记录下:
-
坑1:
这个好处理,主要是因为lint检查时报错,因此中断了整个编译过程,在要上传的library的build.gralde文件的android标签里添加如下代码即可。
android {
lintOptions {
abortOnError false
}
}
-
坑2:
网上大部分办法都说在项目的build.gradle文件的allprojects 标签里添加如下代码:
allprojects {
tasks.withType(Javadoc) {
options {
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
之前上传另外一个项目确实可行,但这次确无效了,最后找到了如下方案,在项目的build.gradle文件的allprojects 标签里添加如下代码:
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}
解决了遇到的问题,再执行上传命令,终于成功了:
五、
上传成功后就可以在maven仓库中看到我们的library:
点进去则可以看到详情:
此时我们还不能在项目中引用该库,要将其添加到jCenter,点击上图右下角的按钮:
填写一些对library的描述,然后发送。等待数小时审核通过后会邮件通知你的,之后就可以在项目中引用了:
到这里两种发布方式就介绍完了,布到jCenter的步骤虽然也不算复杂,但很少能一次发布成功,总会被一些问题折腾半天。相比之下发布到JitPack要简单的多,最重要的是省时省力,没有那么多的问题困扰,真是给力呀!如果你也有发布开源库的需求,选择哪种方式相信你也有答案了。
网友评论
Error:Could not find com.github.decendents:android-maven-gradle-pligin:1.3.
Searched in the following locations:
file:/C:/Program Files/Android/Android Studio/gradle/m2repository/com/github/decendents/android-maven-gradle-pligin/1.3/android-maven-gradle-pligin-1.3.pom
file:/C:/Program Files/Android/Android Studio/gradle/m2repository/com/github/decendents/android-maven-gradle-pligin/1.3/android-maven-gradle-pligin-1.3.jar
https://jcenter.bintray.com/com/github/decendents/android-maven-gradle-pligin/1.3/android-maven-gradle-pligin-1.3.pom
https://jcenter.bintray.com/com/github/decendents/android-maven-gradle-pligin/1.3/android-maven-gradle-pligin-1.3.jar
https://repo1.maven.org/maven2/com/github/decendents/android-maven-gradle-pligin/1.3/android-maven-gradle-pligin-1.3.pom
https://repo1.maven.org/maven2/com/github/decendents/android-maven-gradle-pligin/1.3/android-maven-gradle-pligin-1.3.jar
Required by:
:BottomBarViewDemo:unspecified