標籤:android aar gradle publish jcenter
android-library-publish-to-jcenter是一個協助Android開發人員將AAR庫發布到jcenter的項目,android-library-publish-to-jcenter已經將需要寫的指令碼封裝好了,我們只需要配置相關屬性即可在5分鐘之內發布我們的項目到JCenter(不包括審核時間哦)
1. 註冊Bintray帳號 (傳送門)
Bintray是jcenter的託管商,因此你必須註冊一個Bintray帳號,註冊完帳號後記下你的使用者名稱以及API Key。
登陸後在首頁右上方點擊使用者名稱進入個人首頁,然後點擊使用者名稱下面的Edit進入個人資訊編輯頁面,接下來點擊頁面左邊列表的最後一項API Key
點擊最右邊箭頭指示的複製按鈕即可複製你的API Key
2. 檢查Android外掛程式版本
首先你要檢查你的Android外掛程式的版本,因為1.1.0版本有一個BUG會導致產生javadoc失敗,所以你只需升級到最新即可。目前最新版本是1.2.3,在你的項目根目錄下的build.gradle檔案中修改版本號碼即可,如下:
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:1.2.3‘ // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}allprojects { repositories { jcenter() }}
如果你在看到這篇文章的時候有更新的版本的話,直接改為最新的版本即可。
3. 添加所需外掛程式
在你的項目的根目錄的build.gradle檔案的dependencies中追加如下代碼:
classpath ‘com.github.dcendents:android-maven-plugin:1.2‘classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0‘
android-maven-plugin外掛程式是用來打包Maven所需檔案的
gradle-bintray-plugin外掛程式是用來就產生的Maven所需檔案上傳到Bintray的
完成後如下所示:
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:1.2.3‘ classpath ‘com.github.dcendents:android-maven-plugin:1.2‘ classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0‘ // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}allprojects { repositories { jcenter() }}
4. 設定項目資訊
下載project.properties檔案並放到你的library module目錄下
project.properties檔案的原始內容如下:
#projectproject.name=project.groupId=project.artifactId=project.packaging=aarproject.siteUrl=project.gitUrl=#javadocjavadoc.name=
詳解:
- project.name:項目名稱
- project.groupId:項目組ID,通常情況下如果你的包名為com.example.test,那麼項目組ID就是com.example
- project.artifactId:項目ID,通常情況下如果你的包名為com.example.test,那麼項目ID就是test
- project.packaging:包類型,一般的java是jar,那麼Android庫就是aar
- project.siteUrl:項目官方網站的地址,沒有的話就用Github上的地址,例如:https://github.com/xiaopansky/Sketch
- project.gitUrl:項目的Git地址,例如:https://github.com/xiaopansky/Sketch.git
- javadoc.name:產生的javadoc開啟後首頁顯示的名稱,通常跟項目名稱一樣即可
完成配置後如下所示:
#projectproject.name=Sketchproject.groupId=me.xiaopanproject.artifactId=sketchproject.packaging=aarproject.siteUrl=https://github.com/xiaopansky/Sketchproject.gitUrl=https://github.com/xiaopansky/Sketch.git#javadocjavadoc.name=Sketch
你無需設定項目版本,會自動從你的build.gradle中擷取版本名稱作為項目版本
5. 配置Bintray帳號以及開發人員資訊
下載local.properties檔案並放到你的library module目錄下
local.properties檔案的原始內容如下:
#bintraybintray.user=bintray.apikey=#developerdeveloper.id=developer.name=developer.email=
詳解:
- bintray.user:你的Bintray的使用者名稱
- bintray.apikey:你的的Bintray的API Key
- developer.id:通常是你在開源社區的暱稱
- developer.name:你的姓名
- developer.email:你的郵箱
完成配置後如下所示:
#bintraybintray.user=xiaopanskybintray.apikey=*****************************#developerdeveloper.id=xiaopandeveloper.name=********[email protected]
*號顯示的為個人資訊不反方便透露,還請見諒
注意要將local.proerties檔案加入忽略列表,以免被提交到Github或其他網站泄露個人資訊
6. 配置bintrayUpload.gradle方法1:直接使用遠程bintrayUpload.gradle檔案
修改你的library module的build.gradle檔案,在最後加上apply from: "https://raw.githubusercontent.com/xiaopansky/android-library-publish-to-jcenter/master/bintrayUpload.gradle",如下所示:
apply plugin: ‘com.android.library‘android { compileSdkVersion 22 buildToolsVersion "22.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 22 versionCode 100 versionName "1.0.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ } }}apply from: "https://raw.githubusercontent.com/xiaopansky/android-library-publish-to-jcenter/master/bintrayUpload.gradle"
方法2:下載後使用本地bintrayUpload.gradle檔案
首先下載bintrayUpload.gradle檔案並放到你的library module目錄下,然後修改你的library module的build.gradle檔案,在最後加上apply from: "bintrayUpload.gradle",如下所示:
apply plugin: ‘com.android.library‘android { compileSdkVersion 22 buildToolsVersion "22.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 22 versionCode 100 versionName "1.0.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ } }}apply from: "bintrayUpload.gradle"
我當然推薦大家使用第一種方案,簡單快捷,至此配置工作已全部結束
7. 執行命令打包並上傳到Bintray
開啟終端進入項目目錄下,執行gradlew bintrayUpload命令即可
另外,如果你的本地已經配置了Gradle了,那麼執行gradle bintrayUpload命令也可以。gradlew是Gradle的一層封裝,如果你本地沒有安裝Gradle gradlew就會自動下載Gradle
8. 請求提交你的項目到jcenter
前面所有步驟走完之後實際上只是上傳了你的項目到Bintray而已,並沒有被包含在jcenter中,要想提交到jcenter中還需要Bintray的審核。
登入Bintray網站,進入個人中心,在右側的Owned Repositories地區點擊Maven的表徵圖,進入你的Maven項目列表。
如果已經上傳成功了,在這裡就能看到你的項目,進入項目詳情,在右下角的Linked To地區點擊add in jcenter,然後在comment輸入框裡隨便填寫下資訊,最後提交請求即可
一般情況下審核需要4到5個小時,耐心等待就行了,審核通過後會給你發郵件通知你,並且以後更新項目就不需要再審核了。
9. 一句話匯入你的項目
當審核通過後,別人就可以一句話匯入你的項目了,例如:
compile ‘me.xiaopan:sketch:2.0.0‘
10. 額外補充:保持你的library module的名字同artifactId一樣
因為在Bintray上你的項目的maven-metadata.xml檔案的路徑是gruopId+"/"+module名稱。
例如你的groupId是com.example,artifactId是test,但module名稱是library。
這時候專案檔是在com.example.test目錄下的,但maven-metadata.xml檔案卻是在com.example.library目錄下的。
這樣一來如果你有多重專案groupId一樣,artifactId不一樣,但module名稱都是library的話,可能就會衝突。
目前為止我還沒有找到更好的解決辦法,就只能讓module名稱和artifactId保持一致,如果你們誰有更好的辦法,歡迎留言交流。
11. 參考文章
- Android拓展系列(12)–使用Gradle發布aar項目到JCenter倉庫
- 使用Gradle發布Android開源項目到JCenter
- 使用Gradle發布項目到JCenter倉庫
- Android 項目打包到 JCenter 的坑
Android - 5分鐘發布Android Library項目到JCenter