前言:现在网上很多开源项目库,上传到jcenter上,使用起来也很方便,直接在build.gradle中添加依赖,下载下来就可以使用, 所以自己也想尝试上传一个试试。学习这个的时候,自己也是在网上各种找资料,中途也遇到了很多坑,觉得有必要做下笔记,写成博客,怕自己以后忘记,再翻翻博客就知道了。
1、首先我们要注册一个bintray,注册网址https://bintray.com/signup/oss,直接点击进行注册,注册的时候需要用到一个邮箱,这里邮箱不能使用qq 163等邮箱,需要用到谷歌和outlook邮箱,我用的是谷歌的邮箱,大家可以翻墙去谷歌邮箱注册一个自己的邮箱账号,如果没有翻墙的,这里也有一个比较方便的方法:大家去下载一个百度浏览器,里面有一个谷歌访问助手的工具,按照提示的步骤安装一下,然后重启浏览器,就可以访问谷歌邮箱,进行注册了,

具体的步骤我就不赘述了,安装成功之后,就是如上页面,就可以访问谷歌邮箱了,邮箱注册号之后,下面我们就开始注册bintray账号,如果有bintray直接略过这一步

账号创建好之后,登陆进入到个人中心界面,如下图:

我们需要创建一个仓库,来存放我们的开源项目,所以点击Add Repository会跳转到如下界面

创建成功之后,仓库列表会多一个你刚才创建的仓库,仓库创建好之后我们就需要准备你需要上传到jcenter的开源项目库,这里需要是module,如下界面:

winfoutils只为测试,所以这里就只写了一个ToasUtils类,没有复杂的功能,只是测试上传的,下面我们需要来配置项目,这里我们需要用到一个插件,在你工程的build.gradle文件中添加插件支持
classpath 'com.novoda:bintray-release:0.7.0' 添加好之后文件详情如下
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.novoda:bintray-release:0.7.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
// maven { url 'https://dl.bintray.com/wj19940409/maven' }
}
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
再到自己需要上传的module中的build.gradle文件中添加
apply plugin: 'com.novoda.bintray-release'//添加
//添加
publish {
// repoName = 'WinfoSdk'//不指明,默认是上传到maven,指明的话这里的名字需要和你创建的仓库的名字一样
userOrg = 'wj19940409'//bintray.com你的用户名
groupId = 'com.winfo.msa'//jcenter上的路径
artifactId = 'winfoUtils'//项目名称
publishVersion = '1.0.0'//版本号
desc = 'my first module'//描述,不重要
website = 'https://github.com/wj576038874'//网站,不重要;尽量模拟github上的地址,例如我这样的;当然你有地址最好了
}
最后都添加好之后的文件,如下:
apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'//添加
android {
compileSdkVersion 26
defaultConfig {
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
//添加
publish {
userOrg = 'wj19940409'//bintray.com你的用户名
groupId = 'com.winfo.msa'//jcenter上的路径
artifactId = 'winfoUtils'//项目名称
publishVersion = '1.0.0'//版本号
desc = 'my first module'//描述,不重要
website = 'https://github.com/wj576038874'//网站,不重要;尽量模拟github上的地址,例如我这样的;当然你有地址最好了
}
接下来,我们需要到bintray来创建package,之前创建的是仓库,现在创建package,否则会上传失败
点击我们创建的仓库:

点击Add New Package:

需要注意的是Name需要和artiufactid一样,否则会上传失败

创建好之后,我们下面就可以开始上传了,如果是更新版本的话,直接修改publishVersion的值,然后再执行上传的那句代码即可。上传之前我们还需要做一件事,找到apikey


把apikey复制出来放在一边备用
下面我们就开始上传我们的开源项目了,打开android studio的Termainal界面

执行如下代码
gradlew clean build bintrayUpload -PbintrayUser=**** -PbintrayKey=********** -PdryRun=false
需要注意的是每一个-前面都需要加上空格
gradlew clean build bintrayUpload
-PbintrayUser=jcenter用户名
-PbintrayKey=apikey就是刚刚查看到的
-PdryRun=false 写false代表要上传
然后回车,即可,等到上传。如果按回车,无法执行,那么你需要将你的gradle添加到系统的环境变量中,再执行此代码就可以了,执行过程中如下图

等待几分钟,保证你的电脑有网络,当你看到BUILD SUCCESS那么久上传成功了,上传成功之后,进入到你的仓库中就可以看到你上传的项目了

点击进入详情页:

已经大功告成了,但是你现在还不能用,因为还没有添加到jcenter,但是你可以用maven的方式来用
在你的工程的build.gradle文件中,添加maven支持
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/wj19940409/maven' }
}
maven的url直接在详情中可以看到,将这个链接复制出来粘贴进去就可以了

然后再你的项目中的build.gradle文件中添加依赖
compile 'com.winfo.msa:winfoUtils:1.0.0'
然后编译就可以使用了,你可以在详情页面中,点击add jcenter按钮之后即可 等到审核,审核通过,就可以直接添加依赖,去掉maven { url 'https://dl.bintray.com/wj19940409/maven' }支持了

我这里已经审核通过了,所以不会再出现add jcenter,没有添加审核的时候,这里是一个add jcenter按钮点击一下就可以了。,等待审核,审核通过jcenter会通过站内消息,通知你,你的请求已被认可,接下来,就可以直接在你的项目中添加
compile 'com.winfo.msa:winfoUtils:1.0.0'
就可以使用你的开源库了。
总结一下,整个过程中遇到的坑
1、上传是报如下错,那是因为你没有创建package,所以需要你按照上面的步骤先创建package再进行上传


2、这里是生成javadoc报错,需要在你的工程build.gradle文件中添加就不会报这个错了

3、jdk版本问题

可以具体错误:
可以参照https://www.jianshu.com/p/5eebd3c609d6
https://stackoverflow.com/questions/38209522/circleci-android-unsupported-major-minor-version-52-0
就是java的编译环境版本太低,java 8 class file的版本是52,Java 7虚拟机只能支持到51。所以需要升级到java 8 vm才行
Android studio自带jdk 需要将gradle的jdk升级到跟android stuido自带jdk一致,找到gradle.properties文件做如下修改

org.gradle.java.home的地址指向到android studio自带的jdk地址即可
整个上传流程可参考一下其他博客:
http://blog.csdn.net/baidu_34012226/article/details/65444901
网友评论