前言
在Android Studio 中使用aar庫非常方便靶草,在模塊化開發(fā)中尤為重要。在項目中經(jīng)常從網(wǎng)絡(luò)上獲取公開的第三方類庫進行開發(fā),而這個網(wǎng)絡(luò)位置就是JCenter幢哨。在在gradle中使用:
repositories {
jcenter()
}
jCenter是Bintray提供的公開下載服務(wù),使用自身開發(fā)的artifactory開源應(yīng)用搭建襟企,后緒會介紹如何使用artifactory來搭建團隊內(nèi)部的私有倉庫嘱么。
dependencies {
compile 'com.facebook.fresco:fresco:0.14.1'
}
在 Android Studio 中引用一個 Module Library 是不是很方便,類似于這樣格式的開源庫都是上傳到了`bintray`上的顽悼,然后在發(fā)布成開源曼振。
JCenter 是全世界最大的 Java 倉庫,也是 Android Studio 中 repositories 的默認節(jié)點蔚龙。JCenter 支持 Maven, Gradle, lvy , SBT 等大部分構(gòu)建工具冰评。
需要注意,發(fā)布到JCenter上面的庫是開源的或是經(jīng)過混淆的木羹,否則就放棄這種想法甲雅,直接提供Jar包給第三方好了解孙。
一、注冊 Bintray 賬號
JCenter是由 [Bintray](https://bintray.com/) 公司在維護抛人,所以先注冊一個Bintray賬號弛姜。
在bintray
上注冊一個賬號 建議注冊個人賬號⊙叮可以使用github
賬號直接授權(quán)登錄廷臼。
由于 Bintray網(wǎng)站 改版了,增加了Organization的概念绝页。如果點擊中間那個大大的綠色按鈕荠商,用那個點了注冊就錯了!续誉! 變成了注冊一個組織莱没,注冊地址是 https://bintray.com/signup 提交aar的時候就會出現(xiàn)Unauthorized這個錯誤 注意:個人的注冊地址為https://bintray.com/signup/oss
注意一點:不能使用國內(nèi)的郵箱注冊。
上圖:點擊首頁默認注冊的是組織號
個人注冊如上圖
注冊完了不知道自己注冊是個人賬號還是組織賬號酷鸦?
如果不小心注冊成了組織賬號了怎么辦饰躲?
用國外的郵箱谷歌、雅虎等井佑。新注冊個賬號即可属铁。
二、獲取 API Key
然后輸入登錄密碼就可以獲取到API KEY了躬翁。
三焦蘑、后臺創(chuàng)建Maven倉庫
上圖中注意:創(chuàng)建的maven倉庫名字和類型都要寫成maven。
四盒发、添加依賴
添加 maven-gradle和gradle-bintray插件
項目的Project
下的build.gradle
中添加:
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
android-maven-gradle-plugin
插件是用來打包Maven所需文件的例嘱。
gradle-bintray-plugin
插件是用來將生成的Maven所需文件上傳到Bintray的。
五宁舰、Gradle配置
1.在library model
下創(chuàng)建一個bintrayUpload.gradle
文件拼卵,文件內(nèi)容如下:
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
// This is the library version used when deploying the artifact
// 配置版本
version = "1.0.0"
// 定義相關(guān)網(wǎng)站
def siteUrl = 'https://github.com/lugq/permissionDemo' // 項目的主頁
def gitUrl = 'git@github.com:lugq/permissionDemo.git' // Git倉庫的url
group = "com.lugq.jcenterdemo" // Maven Group ID for the artifact,一般填你唯一的包名
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓定義 pom 并打包 aar↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
// Add your description here
name 'JCenter Demo'
url siteUrl
// Set your license
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id 'luguoqiang' //填寫的一些基本信息
name 'luguoqiang'
email 'luguoqiang@yahoo.com' // 填寫郵箱
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
// ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑定義 pom 并打包 aar↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
// 打包 javadocjar 和 sourcejar
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))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
configurations = ['archives']
pkg {
repo = "maven"
name = "JcenterDemo" //發(fā)布到JCenter上的項目名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}
javadoc { //jav doc采用utf-8編碼否則會報“GBK的不可映射字符”錯誤
options{
encoding "UTF-8"
charSet 'UTF-8'
}
}
2.在library model
的build.gradle
中追加如下代碼:
apply from: "bintrayUpload.gradle"
3.在local.properties
文件中添加從Bintray
申請到的API Key
#bintray
bintray.user=your bintray username
bintray.apikey=your apikey
建議將local.properties文件加入忽略文件中不上傳蛮艰,以保護你的apikey腋腮。
六、將項目提交到Bintray
如果你一完成了上述的配置后壤蚜,下面只需要一行代碼就可以完成將項目提交到Bintray即寡。
打開終端進入項目目錄下,執(zhí)行gradlew bintrayUpload
命令即可袜刷。
或者雙擊Tasts
文件夾下的publishing
下的bintrayUpload
文件聪富;
執(zhí)行完成后,打開你的bintray主頁如果在Owned Repositories
下的maven
選中看到你的倉庫著蟹,則說明你已經(jīng)將你的倉庫成功上傳到bintray了墩蔓。
最后蒂萎、中途遇到的坑
坑一
Error:Execution failed for task ':module:bintrayUpload'.
> java.io.FileNotFoundException: /Users/peter/AndroidStudioProjects/JCenterDemo/module/build/poms/pom-default.xml (No such file or directory)
如果是這樣的話說明你執(zhí)行bintrayUpload的方式是在Android Studio的Gradle窗口中選擇"Run *** bintrayUpload"湃交,請不要用這種方式執(zhí)行bintrayUpload
正確的姿勢應(yīng)該是在命令行中執(zhí)行g(shù)radlew bintrayUpload
坑二
peter:JCenterDemo peter$ gradlew bintrayUpload
bash: gradlew: command not found
解決:
mac
和windows
不同 要在gradlew
命令下加上./
胸蛛,
于是添加上了./蝎土,開始執(zhí)行./gradlew bintrayUpload
命令
坑三
peter:botbrain-sdk-video peter$ ./gradlew bintrayUpload
bash: ./gradlew: Permission denied
peter:botbrain-sdk-video peter$
解決:改變gradlew的權(quán)限
chmod +x gradlew