用AndroidStudio开发的用户都知道,我们需要使用别人的开源库的时候只需要在Module中的
build.gradle
添加一句compile 即可,使用起来是多么的方便那你是否想过这是如何实现的呢?也让自己也可以弄一个让别人直接complie装一波大神,下面就来带你入坑_。
###一:当我们创建一个新的项目的时候在项目的build.gradle
中可以看到如下代码:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
可以看到这个为我们默认添加了
jcenter()
远程仓库,这样我们在依赖的时候默认都是去jcenter远程仓库拉取代码,所以哪些大神都是把代码上传到了jcenter啦。那现在让我们也来装一波大神吧…
###二:首先我们需要去Bintray官网注册一个账号,这里要非常注意的是注册账号的时候分公司账号和个人账号;我们需要使用的话一定要注册个人账号,一开始我就入坑了导致一直不成功。
####1.Bintray官网:https://bintray.com/
####2.千万不要在这里注册,这里是公司账号注册的地方:https://bintray.com/signup
####3.个人账号的注册地址在这里:https://bintray.com/signup/oss
####4.这里还需要注意的一点是,使用的邮箱账号并不是支持所有公司出品的;我这里使用的是Gmail,看官可以根据自己的喜欢来选择。
###三:接下来就是登录自己的账号,来创建一个自己的仓库了这个跟github还是差别不大的,我们点击Add New Repository
就可以创建一个仓库了。
四:创建一个Maven仓库,Name:为仓库的名字、Type:一定要选择Maven、Default Licenses:开源协议这个可以选择一个你自己喜欢的、Description:描述可以随便填;创建好了就可以开始紧张又刺激的上传library了。
五:下面这个ratingbar Library将是我要上传的库,下面就来一步步配置项目将他上传上去吧
####1.首先我们需要在项目的build.gradle
中添加上传的插件,
dependencies{
//.....
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.1'
}
####2.前往Bintray官网点击Edit Profile—>API Key—>然后复制
####3.在local.properties
文件中添加如下内容,用来授权
bintray.user=azhon//用户名
bintray.apikey=57ca96**************5676bfa68aaeb46//api key
####4.在你需要上传的Library中的build.gradle
中添加如下许多代码:
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
最终我们的依赖的效果是
compile 'com.azhon:ratingbar:1.0.0'
<dependency>
<groupId>com.azhon</groupId>
<artifactId>ratingbar</artifactId>
<version>1.0.0</version>
</dependency>
####5.添加仓库里面创建package的配置,
def siteUrl = 'https://github.com/azhon/RatingBar' //项目的主页
def gitUrl = 'https://github.com/azhon/RatingBar.git' //github仓库的地址
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
version = "1.0.0"//version
group = "com.azhon"//groupId
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
pkg {
repo = 'azhon'//创建的仓库名字
name = 'rating-bar'//packageName
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ['Apache-2.0']//创建仓库时选择的license type
userOrg = 'azhon' //自己bintray创建的organization名称
publish = true // 是否是公开项目。
version {
name = '1.0.0'//版本号
desc = 'A RatingBar.'//版本描述
released = new Date()
vcsTag = 'v1.0'
attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
}
}
configurations = ['archives']
}
install {
repositories.mavenInstaller {
pom {
project {
packaging 'aar'
//项目描述
description 'A RatingBar.'
url siteUrl
// 填写开源协议
licenses {
license {
name 'Apache-2.0'
url ' http://www.apache.org/licenses/LICENSE-2.0'
}
}
developers {
developer {
id 'azhon'
//填写邮件地址
email 'azhon.cn@gmail.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
//打包源码
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
//打包源码doc文档
task javadoc(type: Javadoc) {
options.encoding = "UTF-8"
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
}
####完整的配置可以查看这里build.gradle
####这里需要注意的是我们并没有在代码中配置artifactId但最后为什么又有了,因为jcenter默认会将你的Library名字作为这个artifactId。
###六:接下来就是神坑的地方了、在Terminal中执行gradlew install
命令。当你看到BUILD SUCCESSFUL,那么恭喜你离成功又进了一步。
在这一步被其他人写的教程坑惨了,叫我执行
gradle install
命令一敲回车tmd竟然不是内部命令,唉说多了多是泪…编译的过程中打包Javadoc时可能会出现编码问题,只需要在task javadoc
中添加options.encoding = "UTF-8"
即可。各位看官如果还遇到了其他错误欢迎留言提出…
###七:在执行gradlew bintrayUpload
命令即可将Library上传至创建的仓库了,你以为这里就没有坑吗?我反正执行下去一直卡在了98%死活不成功,最后通过Gradle的Task竟然上传成功了
###八:如果上面都没有问题的话,那么恭喜你了可以在Bintray官网看到你自己上传的Library了,如下图:
一开始我注册的是公司类型账号上传成功后一直没有出现Add to JCenter非常郁闷!剩下的你只需点击次按钮将你的库添加至JCenter即可然后默默的等待那边审核通过就可以直接依赖使用了。
###End:第三方引用成就感,足足踩了两天才爬出来。