发布项目到Jcenter
使用别人的项目,一行gradle就可以用了,感觉非常爽,那么自己能不能造一些轮子给别人用呢?于是拿出我蹩脚的代码,写了一个库,发布到了jcenter库里,这样以后自己用和别人用都很方便,但是发布的过程可是踩足了坑,下面就来回顾一下吧!
1. 注册
首先我们访问网址:https://bintray.com,打开之后我们会看到如下页面。
点击图上我标黄字体,并且打了蓝圈的按钮
最大字体提醒 【坑1】:
别点绿色按钮!
别点绿色按钮!
别点绿色按钮!
好奇么?告诉你,那是企业版,注册进去你后面的操作将不会再有效。
一定要注册个人版。
注册的时候填入相应的名字,密码(名字不能跟别人重复)
最大字体提醒 【坑2】:
用Google邮箱,不能用QQ,163邮箱!
用Google邮箱,不能用QQ,163邮箱!
用Google邮箱,不能用QQ,163邮箱!
上网自行处理。
注册完我们就登录进来,然后我们新建一个库
首页
这里又要提醒了,我们必须建立一个叫maven的库,可以看到图片上我已经建立过了,这里我演示一下怎么建立,点击蓝色圈的地方。
新建
出现如上界面,这几个字段分别如下:
- Name : maven(注意必须要这么写)
- Type:选择maven
- Default Licenses:选Apache2.0即可
- 最后一项是描述,随便写。
提交即可。
2. 准备项目
现在就要准备项目了。
这里有两种方法。
一是新建一个项目,然后在项目内新建一个module,在新建的module中写你的库,在app项目中写测试demo
另一个方式是新建一个项目,写完你的库,然后再新建一个项目导入你的库,然后在后者中写测试demo。
我都是习惯用第二种,我说一下步骤,举个栗子,我写一个叫PikaQ的库
-
新建项目PikaQ,然后写完其中的内容。
-
新建项目PikaQDemo,然后导入PikaQ,导入步骤如下。
在Android Studio中,依次点击File->New->Import Module,打开如下页面。
new
选择我们刚才的PikaQ的路径,选择后点击右边的Import复选框,会让你修改模块名,我们要改成合适的名字(比如PikaQ),确定后即可导入。
-
修改PikaQ的Gradle,第一行的
apply plugin: 'com.android.application'
改成
apply plugin: 'com.android.library'
并且将版本配置里的第一行applicationId删掉
defaultConfig {
applicationId "cn.surine.coursetableviewapp"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
……
}
结果如下:
画圈的地方是我修改后的,其中第二个划掉的我们是一会会写的,暂时不用管他。
- 在PikaQDemo的build.gradle(app)的dependencies{}中导入库(和导入依赖一样)
compile project(':你写的模块名')
现在应该就没啥问题,如果出现了文件名冲突,合并冲突等等的还需要修改文件名, 具体的可以遇到问题去查询一下。
- 可以在PikaQ的页面中调用使用PikaQ了,并且写好Demo给其他要用你的库的人用。
3.发布
发布之前,我们配置了项目,但是还有很多关于Jcenter的东西还没配置,我们打开build.gradle(Project),修改内容如下:
// 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.0'
//下面是新添加的
classpath 'com.novoda:bintray-release:0.8.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
//下面这个语句段是新添加的
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
为了方便直观,我直接把所有代码贴上来了,我主要在默认的gradle文件中添加了2个内容(在注释上我都写了)
一个是(简化发布流程的库)
classpath 'com.novoda:bintray-release:0.8.0'
另一个是(JavaDoc中文防止乱码)
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
这两个必须写,其他的一不一样不用管,以你默认的为主。
加好了之后同步,成功之后我们打开build.gradle(PikaQ)(就是你的库的gradle)
修改代码如下,下面我们看一下有哪些新添加的。
共三个地方。
apply plugin: 'com.android.library'
//新添加的
apply plugin: 'com.novoda.bintray-release'
android {
compileSdkVersion 26
defaultConfig {
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//新添加的
lintOptions {
abortOnError false
}
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'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
//新添加的
publish{
userOrg = 'suriner'//bintray.com你的用户名
groupId = 'cn.surine'//jcenter上的路径
artifactId = 'CourseTableView'//项目名称
publishVersion = '1.0.1'//版本号
desc = 'Android-简洁的课程表控件'//描述,不重要
website = 'https://github.com/surine/CourseTableView'
}
一是,第二行,我刚才提过不用管,现在该加上了。
二是lintOptions那一块,我加注释了。
三是最后的publish那一块。
除了这三块,其他的不一样也不用管。
我详细说下最后的一块。
publish{
userOrg = 'suriner' //bintray.com你的用户名
groupId = 'cn.surine' //jcenter上的路径
artifactId = 'CourseTableView' //项目名称
publishVersion = '1.0.1'//版本号
desc = 'Android-简洁的课程表控件'//描述,不重要
website = 'https://github.com/surine/CourseTableView'
}
我注释写的很详细,userOrg是你刚才注册的用户的用户名,groupId是你的访问路径(一般跟你项目用的包名前缀一样就行了),下面是项目名,下面是版本号,以后要更新的话,注意向上加哦,再下面是描述,最后写一个github地址就行了(没来的急发布github的,先写上,然后再发,别告诉我你不知道github的项目链接长啥样。)
4. 真的要发布了
打开终端,AndroidStudio内置的那个
输入命令
gradlew clean build bintrayUpload -PbintrayUser=你的用户名 -PbintrayKey=一个密钥 -PdryRun=false
上面有两个需要根据你自身情况写,一个是用户名,写你自己的注册用户名,另一个是密钥,在哪里呢?随我来看!
这是我们刚才的首页,右上角会有一个Edit Profile的按钮,点击它
点击最后一项 API Key:
会要求你输入密码,输入之后有一串值,这就是key
复制到终端填入即可。
回车
等待几分钟,当看到构建成功的绿色字样就是发布成功了,你可以在bintray的首页看到你刚才建立的maven库里面已经有你刚才上传的库了。
那么现在你需要Add to Jcenter才能行。
点开我们刚才上传的库,我这里拿我之前的库演示一下。
右上角,有个action按钮,点击里面会有add to jcenter,但是我这里没有,主要是因为我已经发过了,而且过审了。
点击后会弹窗,让你填申请理由,就随便填,其他的不用管提交即可。
但是很有很能会提示你的VCS地址(github地址)是404,这时候先去把整个项目发布到github吧,注意要是有仓库名字不对应的情况(比如你的仓库叫PikaQDemo,而Jcenter库叫PikaQ,在github的仓库设置页面改一下仓库的名字,改成与Maven库里的这个项目的VSC上面用的这个名字),好绕好绕。
改完了再提交,一般一会,几个小时就过审了。
现在你可以去完善你的Github文档了。
bye,下篇文章见。