转载请注明地址:http://blog.csdn.net/u012402124/article/details/78189675
在AndroidStudio中导入开源库一般就是一句话的事: compile 'xxx.xx.xx:xx'
。 实际上我们也可以通过这种方式来导入自己的开源库,方便自己的使用。AndroidStudio执行compile 'xxx.xxx.xx:xx'
会先到jCenter上查找该开源库,所以需要我们把自己的开源库库发布到jCenter上。无法直接在jCenter上发布开源库,要通过它的托管商–Bintray(Bintray托管着很多仓库,jCenter只是其中一个)来完成。
把自己平时经常用到的一些代码写到一起上传到jCenter,以后不管做什么项目一句话就能导入,算来还是一个比较实用的功能。
总体步骤概览
1. 注册Bintray账号并创建仓库
2. 准备开源库
3. 修改gradle文件
4. 编译并上传至Bintray
5. linked to jCenter
1. 注册Bintray账号并创建仓库
使用Bintray当然要先注册个账号,注册地址
我选的是Sign up with Github
。
注册登录之后应该是这个样子, 点击Add New Repository
- Name:仓库的名字,写了之后不能再改,记住该名字,后面上传时会用到;
- Type:仓库类型,选择
Maven
; - License:开源协议,随便选一个就好;
- Description:仓库描述,随便写;
点击Create
完成仓库创建,到此第一步完成。
2. 准备开源库
备好你想要上传的开源库,有两种方式:
1. AndroidStudio中new一个project,然后在project中new一个Module,类型选择Android Library
;
2. 直接修改当前Module的build.gradle(注意区分project的build.gradle文件和Module的build.gradle文件,前者在project根目录下,后者在对应的Module目录下)文件,将第一行的apply plugin: 'com.android.application
改为 apply plugin: com.android.library
,再把下面的applicationId "你的包名"
这一行删除(library是不允许有applicationId的);
两种方式最终结果都是得到了一个Android Library
类型的Module,在Module里添加你想要上传的开源库代码(我随便弄了一个,里面有个我常用到的加载App Icon的方法)。
到此第二步准备开源库完成
3. 修改gradle文件
还是那句话,注意区分project的build.gradle文件和Module的build.gradle文件,前者在project根目录下,后者在对应的Module目录下
修改project的build.gradle文件,添加下面这两句话
Maven Github地址:对应里面的说明选择使用的版本号
Bintray Github地址:对应里面的说明选择使用的版本号修改Module的build.gradle文件(这步有点乱,认真看)
需要配置3个信息:- Bintray账号配置和Developer信息,告诉AndroidStudio传到哪及开发者介绍;
- Project信息,开源库的介绍;
- 上传配置,对以上3个信息的调用以及其他一些配置;
为了看起来条理清晰,我把能独立的部分都独立到单独文件里了,便于阅读,以下分别说明。
1. Bintray账号信息和Developer信息
AndroidStudio
创建项目时默认会在project根目录下创建local.properties
文件并添加到了.gitignore
文件中(如果没有请自行创建并添加至.gitignore
中),在其中添加以下内容:
- bintray.user:Bintray注册的用户名
- bintray.apikey:Bintray的API key
- developer.id:开源社区的昵称(一般指github,或是使用的其他开源社区)
- developer.name:姓名
- developer.email:邮箱地址
查看API key方法:
2. Project信息配置
在开源库Module目录下新建project.properties
文件,添加以下内容:
- project.name:开源库名字
- project.groupId:项目组ID,写包名
- project.artifaceId:项目ID,写Module名
- project.packaging:打包方式,写aar
- project.siteUrl:项目主页,没有就写github地址
- project.gitUrl:项目仓库地址
- javadoc.name:javadoc主页显示的名称,写项目名字就好
3. 上传配置
在开源库Module目录下新建bintrayUpload.gradle
文件,添加以下内容:(内容较多,直接贴源码了,阅读可能不太美观)
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
// load properties
Properties properties = new Properties()
File projectPropertiesFile = project.file("project.properties")
if(projectPropertiesFile.exists()){
properties.load(projectPropertiesFile.newDataInputStream())
}
// read properties
def projectName = properties.getProperty("project.name")
def projectGroupId = properties.getProperty("project.groupId")
def projectArtifactId = properties.getProperty("project.artifactId")
def projectVersionName = android.defaultConfig.versionName
def projectPackaging = properties.getProperty("project.packaging")
def projectSiteUrl = properties.getProperty("project.siteUrl")
def projectGitUrl = properties.getProperty("project.gitUrl")
def javadocName = properties.getProperty("javadoc.name")
File localPropertiesFile = project.rootProject.file("local.properties")
if(localPropertiesFile.exists()){
properties.load(localPropertiesFile.newDataInputStream())
}
def developerId = properties.getProperty("developer.id")
def developerName = properties.getProperty("developer.name")
def developerEmail = properties.getProperty("developer.email")
def bintrayUser = properties.getProperty("bintray.user")
def bintrayApikey = properties.getProperty("bintray.apikey")
group = projectGroupId
// This generates POM.xml with proper parameters
install {
repositories.mavenInstaller {
pom {
project {
name projectName
groupId projectGroupId
artifactId projectArtifactId
version projectVersionName
packaging projectPackaging
url projectSiteUrl
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id developerId
name developerName
email developerEmail
}
}
scm {
connection projectGitUrl
developerConnection projectGitUrl
url projectSiteUrl
}
}
}
}
}
// This generates sources.jar
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
// This generates javadoc.jar
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
// javadoc configuration
javadoc {
options{
encoding "UTF-8"
charSet 'UTF-8'
author true
version projectVersionName
links "http://docs.oracle.com/javase/7/docs/api"
title javadocName
}
}
// bintray configuration
bintray {
user = bintrayUser
key = bintrayApikey
configurations = ['archives']
pkg {
repo = "maven"
name = projectName
websiteUrl = projectSiteUrl
vcsUrl = projectGitUrl
licenses = ["Apache-2.0"]
publish = true
}
}
上传开源库的配置基本都是这样,不用改动什么,值得注意的是bintray
节点的repo
指的是第一步中创建的Maven仓库的名字,这两个名字要一致;此外开源库的版本号默认取的是project的版本号def projectVersionName = android.defaultConfig.versionName
,如果有需要也可把这两个属性抽取到project.properties
文件中,便于管理。
最后一个操作,在开源库Module的build.gradle
文件末尾中添加如下代码apply from: 'bintrayUpload.gradle'
来调用配置文件。
至此第3步配置gradle文件完成。
4. 编译并上传至Bintray
- 编译:打开AndroidStudio的Terminal窗口(一般在底部,没有的话点击
顶部工具栏
->View
->Tools Windows
->Terminal
),输入命令并回车:
gradlew install
install若因为javadoc失败,则可以在project的build.gradle最后加一行代码:
tasks.getByPath(":app:javadoc").enabled = false;
等待一段时间后提示BUILD SUCCESSFUL
,表示成功。
- 上传,同样在Terminal中输入以下命令并回车:
gradlew bintrayUpload
等待一段时间后提示BUILD SUCCESSFUL
,表示成功。
至此第4步编译并上传完成。
5. Linked to jCenter
按照上面4步,发送include request之后等待Bintray团队审核,审核完成后会收到邮件和站内信。
至此第5步Linked to jCenter完成。