前言:
在经历了从eclipse到Android studio过渡之后,引入第三方库的操作也变得相对简单起来,再也不是自己去下载相应的jar,而只需要在build.gradle一句简单的配置信息即可。如下:
compile 'com.voctex.banner:banner:1.0.7'
其实Android studio在配置了这句信息之后,在build的时候会去jCenter服务器去下载相应的库到本地引用,而不需要我们自己去下载包再引用,这么简单的一句代码就帮我们做了很多事了。
我们接下来就是要把我们自己的library库上传到jCenter服务器上,然后让别人也可以方便引用。
准备工作:
首先我们要先对gradle有一定的了解,还有Android studio这个工具有一定的熟悉,这样操作起来才不会老是觉得问题一大堆,而是简简单单的直接成功,基本功还是需要的。以下我会以我的一个项目作为栗子。
首先新建个app项目,默认有个app模块,再新建个module,这个module作为library的模块,如下图
然后需要注册一个可以国际通用的邮箱,在我测试之后,QQ邮箱(@qq)和网易邮箱(@163)都不行,其他没测过,有人说要注册谷歌邮箱(@gmail)就行了,可谷歌在天朝都被墙了,每次用都要翻墙,也不是最好的选择,然后试了一下阿里邮箱(@aliyun),发现可以。接下来就要用到这个邮箱了。
邮箱注册完毕之后就要注册一个Bintray账号了,在这里会有一个坑,特别注意,直接搜Bintray进入官网,然后注册的时候会是注册组织的账号,而且还是试用一个月的期限,这里要通过以下链接去注册一个个人账号:
https://bintray.com/signup/oss
创建仓库
进入了Bintray之后,因为是个人账号,这时候你可以自己建立一个组织,或者直接忽略这操作,因为你是个人开发者,我就直接忽略了。
————————————图片分割线——————————
在上面一系列操作之后,就会得到一个空的仓库,有了仓库就可以上传我们的项目上去了,当然,这是下一步要操作的内容。
配置gradle
需要配置三个文件,分别是项目根目录下的build.gradle文件,library模块根目录下的build.gradle文件,以及项目根目录下的local.properties。
1、项目根目录下的build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
//加入以下两句配置
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
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
}
}
allprojects {
repositories {
jcenter()
}
}
2、library模块下的build.gradle的配置,这一步的配置信息有点多,基本只要注意那些加了注释的就行了,然后改成你自己的信息。
apply plugin: 'com.android.library'
//插件
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
def siteUrl = 'https://github.com/voctex/VtBanner' // Git项目主页
def gitUrl = 'https://github.com/voctex/VtBanner.git' // Git仓库url
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
version = "1.0.0" //发布版本号
group = "com.voctex.banner" //最终引用形式,如compile 'com.voctex.banner:banner:1.0.0',其中banner在后面配置
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
resourcePrefix "vt_" // 随意命名
defaultConfig {
minSdkVersion 14
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.github.bumptech.glide:glide:3.7.0'
}
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
pkg {
repo = 'maven'//自己创建的仓库名字,要跟Bintray上创建的仓库一样
name = 'vtbanner'//上传到JCenter的名字,最终引用的名字
websiteUrl = siteUrl
vcsUrl = gitUrl //这个好像是必须的,我尝试过传空字符串好像是不成功的
licenses = ['MIT']//不能随便写,只能是仓库创建时选择的license type
// userOrg = 'mumusalibrary' //自己创建的organization名称
publish = true // 是否是公开项目,公开别人可以引用
version {
name = '1.0.0'//版本名,上面好像已经有配置了
desc = 'voctex open library.'//描述,自己定义
released = new Date()
vcsTag = 'v1.0.0'
attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
}
}
configurations = ['archives']
}
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
// Add your description here
name 'Android Banner'//项目名
description 'open library.'//项目描述
url siteUrl
// Set your license
licenses {
license {
name 'MIT' //和之前自己定义的协议一致
url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE'
}
}
developers {
developer {
id 'voctex' //填写bintray或者github的用户名,这里我填的是我的github名
name 'jreproxy' //姓名,这里我填的是Bintray上的昵称
email 'voctex@aliyun.com'//邮箱
}
}
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"
}
}
3、配置项目根目录下面的local.properties信息
sdk.dir=/Users/yidont/Library/Android/sdk
bintray.user=jreproxy(Bintray的名字)
bintray.apikey=xxx(这里需要填写你的key,需要去bintray取获取,如下图)
执行gradle命令
这里先说明一下windows系统和mac系统执行命令的些许区别,比如
(windows)
gradlew -v
(mac)
./gradlew -v
因为我用的mac电脑,所以其他人要注意区别。
还有一个要注意的点就是,要对单独模块进行编译,如果在执行命令的时候不顺便指定模块的话,每一次都会默认执行所有模块,所以这里要养成一个好习惯。要对单独模块进行操作的做法就是加入模块名,如下
(所有模块)
./gradlew assembleRelease
(单独模块)
./gradlew :app:assembleRelease
然后在Android studio下面的Terminal敲gradle命令,先执行
./gradlew :banner:install
安装一些需要的东西,然后就把该项目上传到Bintray中的仓库里,执行
./gradlew :banner:bintrayUpload
然后耐心等待,等出现了BUILD SUCCESSFUL字眼就说明上传成功了,这时候你就可以去你的Bintray上查看你的项目了,进入项目之后还有最后一步需要你操作,就是add to jCenter,然后等待审核,有人十分钟就搞定了,有人审核很慢,我一般都是等了上半天才被审核成功。
————————————图片分割线——————————
————————————图片分割线——————————
最后
到这里就告一段落了,基本都很简单,这么简单就可以把自己封装的库上传到jCenter中,瞬间有点高大上的样子。当然,我只是简单的分享一下我的经验而已,方便别人也可以简单学会。
QQ:361561789
有事可直接加Q联系