个人博客:haichenyi.com。感谢关注
前面两篇说了怎么生成jar包,aar包及其用法。这篇讲讲android studio的在线依赖——JCenter仓库。早期AS默认的依赖是google和maven仓库,也就是,我们的项目目录下面的build.gradle文件下的这个位置:
allprojects {
repositories {
google()
jcenter()
}
}
这里我们看到的是后来把maven替换调的jcenter仓库。
其实,这个最重要的就是怎么配置的问题。前面其他的我都是简单的说一下。
第一步:你得有一个bintray帐号,去注册一个,你可能会看到需要公司的信息,你可以选择注册一个个人的。个人的注册地址。个人邮箱是必须的,qq,163邮箱都不能用,我用的是网易的@yeah.net的邮箱,你可以去网易邮箱注册一个, 点我,记得把后缀改成yeah.net的就可以了。
第二步:新建一个仓库。用你刚才注册的帐号密码,登录bintray,然后,你在屏幕的左边会发现一个Add New Repository按钮,点击。会看到如下界面:
name:名字,也就是你仓库的名字。后面提交的时候会用到
type:类型,选择Maven类型
Licenses:许可,拍照之类的。我选的是Apache-2.0
Description:描述,随便你写。也可以不写
然后,点击新建。其他就不用操作了。添加packages,不用添加,我用的方法是,用命令新建。
第三步:找到我们的API Key。这个也是最后提交的时候会用到。如下图:
第四步:新建一个项目,然后new 一个library,(PS:这里的library名字还是比较重要的,它就是你添加依赖的时候第一个冒号和第二个冒号之间的名字,并且,无法更改。比方说:implementation 'com.android.support:appcompat-v7:27.1.1',它就是这里的appcompat-v7)写好我们的library,然后,开始配置上传信息。
1、在你的项目build.gradle添加如下代码:
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
//加入以下两句配置
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
2、打开library的build.gradle,注意,是library的build.gradle。添加如下很长的代码。我这里直接把我自己的library的build.gradle文件全部拷贝过来了。我一行一行的加注释,你可以看。
//这个是自带的,原本就有的。表明这是一个library,并不是application
apply plugin: 'com.android.library'
//插件,下面这两行,就是上面1里面我们加的插件
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
//Git项目主页。我做的时候,就是卡在这里,我没有这个东西啊。这个东西其实没啥具体的作用,
//就类似一个中转连接一样,但是必须要有。怎么弄呢?你直接在你的github创建一个仓库就可以了,把链接丢过来就可以了
def siteUrl = 'https://github.com/haichenyi/MyUtils'
// Git仓库url,就是前面的项目主页后面加一个.git
def gitUrl = 'https://github.com/haichenyi/MyUtils.git'
//这个照写,不用管。因为,我们要在local.properties这个文件下面写
//我们的bintray.user和bintray.apikey。就是我们的帐号和apikey。不需要写密码。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
//最终引用形式,如compile'com.haichenyi.aloe:utils:1.0.0'
//其中utils就是我们的library名字,我们无法修改
version = "1.0.0" //发布版本号
group = "com.haichenyi.aloe"
android {
compileSdkVersion 27
// 随意命名,我不知道干啥用的
resourcePrefix "wz_"
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
//这个是,我这个library里面需要依赖的第三方库
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation'com.android.support:appcompat-v7:27.1.1'
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
implementation 'io.reactivex.rxjava2:rxjava:2.1.6'
implementation 'com.squareup.okhttp3:okhttp:3.8.0'
implementation 'com.google.code.gson:gson:2.8.0'
}
bintray {
//这里就是我们刚说过的user和apikey
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
pkg {
repo = 'Utils'//自己创建的仓库名字,要跟Bintray上创建的仓库一样
name = 'MyUtils'//上传到JCenter的package的名字
websiteUrl = siteUrl
vcsUrl = gitUrl //这个好像是必须的,我尝试过传空字符串好像是不成功的
licenses = ['Apache-2.0']//不能随便写,只能是仓库创建时选择的license type
// userOrg = 'mumusalibrary' //自己创建的organization名称
publish = true // 是否是公开项目,公开别人可以引用
version {
name = '1.0.0'//版本名,上面好像已经有配置了
desc = '工具类'//描述,自己定义
released = new Date()
vcsTag = 'v1.0.0'
attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
}
}
configurations = ['archives']
}
install {
//这里的xxx按你自己的填就可以了,其他都不用改
//这里的xxx按你自己的填就可以了,其他都不用改
//这里的xxx按你自己的填就可以了,其他都不用改
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
// Add your description here
name 'xxx'//项目名
description 'xxx//项目描述
url siteUrl
// Set your license
licenses {
license {
name 'Apache-2.0' //和之前自己定义的协议一致
url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE'
}
}
developers {
developer {
id 'xxxxxx' //填写bintray或者github的用户名,这里我填的是我的github名
name 'xx' //姓名,这里我填的是Bintray上的昵称
email 'xxxx'//邮箱
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
failOnError false //必须添加以免出错
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
javadoc {
options {
//如果你的项目里面有中文注释的话,必须将格式设置为UTF-8,不然会出现乱码
encoding "UTF-8"
charSet 'UTF-8'
author true
version true
links "http://docs.oracle.com/javase/7/docs/api"
}
}
第五步:上传
配置完成之后,上传JCenter,在Android Studio的Terminal下
编译:(所有模块)gradlew assembleRelease
(单独模块)gradlew :xxx:assembleRelease安装:gradlew :xxx:install
上传到JCenter仓库:gradlew :xxx:bintrayUpload
这里的xxx就是你的library的名字。然后你就会发现,你的bintray创建的仓库下面,有一个package。你点你的package,你就会发现,如下图片:
我这里是添加成功了的,你那里应该显示的是add to JCenter,你点击,然后,在新页面点send。提交审核。耐心等待即可。快则半个小时,慢则1到2天。