2017最最最最新的Android釋出aar給別人使用方法
目測現在網上釋出aar的方法的教程都是一個版本,也就是maven-plugin為1.3,jfrog為1.0那個版本,老掉牙了有木有,還是自己寫個給自己備用吧。授之以魚不如授之以肉,從頭開始流程走一遍。
零、新建專案
新建一個專案起名為YourLibraryDemo,然後新建一個Module->Library起名為YourLibrary。
這個Module就是將來要給別人使用的你的庫了。
一、引入gradle-bintray-plugin
The Gradle Bintray Plugin allows you to publish artifacts to Bintray.
大意是這個外掛允許你釋出你的作品到Bintray(某國外網站,部分地區需FQ)
在專案根目錄下有個build.gradle,先在這裡新增
plugins {
id "com.jfrog.bintray" version "1.7.3"
}
上面這一步替代了舊版本中的在dependencies中新增classpath
去jFrog註冊個賬戶,然後各種填完了找到自己資料裡面的API Key。
然後進YourLibrary下的build.gradle新增
bintray {
user = System.getenv('BINTRAY_USER')
key = System.getenv('BINTRAY_KEY')
}
要說這個System.getenv是什麼玩意兒,就是為了防止你把你的bintray賬戶的user和key傳到github中開源了。
那麼user和key要放到哪裡呢?
回到專案的根目錄local.properties中加入
BINTRAY_USER=yzlee
BINTRAY_KEY=你的key
再回到YourLibrary下的build.gradle新增
bintray {
user = properties.getProperty('BINTRAY_USER') //這裡注意原Demo不是這麼寫的,還有上面兩行也別忘了
key = properties.getProperty('BINTRAY_KEY')
//目測有三種方式打包上傳到bintray,我們要用Maven Publications模式。
// Configurations 模式貌似只能在java plugin下使用,反正嘗試gradlew bintrayUpload之後,網站上是看不到的。
//安卓上要用的話例子在{@link https://github.com/bintray/bintray-examples/tree/master/gradle-bintray-plugin-examples/android-maven-example}裡。
configurations = ['archives']
pkg {
repo = "maven" //在bintray中的已經存在的倉庫,貌似有好多現成的比如'maven' 'nuget' 'boxes' 'registry' 'generic' 'rpm' 'opkg' 等等等等……還可以自己建立
name = 'YourLibrary' //專案名字
licenses = ['Apache-2.0'] //開源許可
vcsUrl = 'https://github.com/yzlee/YourLibrary.git' //如果這個專案不存在的話,是要強制填寫的。
//version {
// name = '1.0' //這個是版本號,建議不要寫,而是定義一個全域性的版本號
//}
publish = true //一定要填寫,這個不填寫bintrayUpload預設是不釋出的!!!!!!!!
}
}
照著安卓例子複製貼上就行了,不過授之以漁的話還是要搞明白到底別的東西是啥。所以再看要引入的另一個包。
二、引入android-maven-gradle-plugin
找到剛剛
plugins {
id "com.jfrog.bintray" version "1.7.3"
}
的地方新增一行
plugins {
id "com.jfrog.bintray" version "1.7.3"
id "com.github.dcendents.android-maven" version "1.5"
}
然後在YourLibrary下的build.gradle檔案裡的最外層加上
group = 'cn.liyongzhi' //這個就是引入依賴時候的字首了。
version = '1.0' //這就是版本,bintray{}中的版本還是不要寫了,預設用這個
至於install{}那個選項,是因為想要同步到Maven Central給別人使用的話,除了aar還需要sourcesJar,javadocJar,以及一個叫pom.xml的東西,而install中就是這個pom。這是釋出到maven的requirements。
先說sourcesJar,javadocJar……好吧沒搜到出處。拿來用吧
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
}
至於這個install不寫的話bintray上也會有pom.xml,內容只有bintray{}上填的幾行,應該也可以。
之後直接在android studio log視窗底下的teminal中打上 gradlew bintrayUpload 就好了。
如果網站上能找到了,那麼add to JCenter,等就好了,估計有時差。
出現問題
1、javadocJar編譯不過。
在library的build.gradle中新增
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('charSet', 'UTF-8')
}