釋出Android Library專案到JCenter
前言:本人在嘗試開源sdk庫時,搜尋了關於如何把Library釋出到JCenter的文章,網上的文章參差不齊,各種各樣的流程和說法,下面分享我看過比較好的一些文章,並整理分享給需要的朋友,另外感謝樂於分享的同學。
Android擴充系列(12)--使用Gradle釋出aar專案到JCenter倉庫
配置庫build檔案參考
原文參考
Could not create package 'huangweicai/maven/OkLib': HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]
關於自己寫的aar包釋出到maven過程中的一些問題解決
Android 快速釋出開源專案到jcenter
AndroidStuio快速釋出開源專案到Jcenter/Bintray
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外掛到最新版,然後新增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:2.2.2'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
android-maven-gradle-plugin外掛是用來打包Maven所需檔案的
gradle-bintray-plugin外掛是用來將生成的Maven所需檔案上傳到Bintray的
3. 配置專案資訊
下載project.properties檔案並放到你的library module目錄下
project.properties檔案的原始內容如下:
#project
project.name=
project.groupId=
project.artifactId=
project.packaging=aar
project.siteUrl=
project.gitUrl=
#javadoc
javadoc.name=
project.name:專案名稱
project.groupId:專案組ID,通常情況下如果你的包名為com.example.test,那麼專案組ID就是com.example
project.artifactId:專案ID,通常情況下如果你的包名為com.example.test,那麼專案ID就是test
project.packaging:包型別,Android庫是aar
project.siteUrl:專案官方網站的地址,沒有的話就用Github上的地址,例如:https://github.com/huangweicai/oklib
project.gitUrl:專案的Git地址,例如:https://github.com/huangweicai/oklib.git
javadoc.name:生成的javadoc開啟後主頁顯示的名稱,通常跟專案名稱一樣即可
完成配置後如下所示:
#project
project.name=oklib-core
project.groupId=com.oklib
project.artifactId=oklib
project.packaging=aar
project.siteUrl=https://github.com/huangweicai/oklib
project.gitUrl=https://github.com/huangweicai/oklib.git
#javadoc
javadoc.name=oklib-core
你無需配置專案版本,會自動從你的build.gradle中獲取版本名稱作為專案版本
4. 配置Bintray賬號以及開發者資訊
下載local.properties檔案並放到你的library module目錄下
local.properties檔案的原始內容如下:
#bintray
bintray.user=
bintray.apikey=
#developer
developer.id=
developer.name=
developer.email=
bintray.user:你的Bintray的使用者名稱
bintray.apikey:你的的Bintray的API Key
developer.id:通常是你在開源社群的暱稱
developer.name:你的姓名
developer.email:你的郵箱
完成配置後如下所示:
#bintray
bintray.user=huangweicai
bintray.apikey=*****************************
#developer
developer.id=huangweicai
developer.name=********
developer.email=huangweicai@yahoo.com
*號顯示的為個人資訊不反方便透露,還請見諒
注意要將local.proerties檔案加入忽略列表,以免被提交到Github或其他網站洩露個人資訊
5. 配置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"
推薦大家使用第一種方案,簡單快捷,至此配置工作已全部結束
6. 執行命令打包並上傳到Bintray
開啟終端進入專案目錄下,執行gradlew bintrayUpload命令即可
千萬不要在Android Studio的Gradle視窗中選擇"Run *** bintrayUpload"執行,這樣你會得到build/libs/-javadoc.jar could not be found. build/libs/-sources.jar could not be found. poms/pom-default.xml (No such file or directory) 錯誤
另外,如果你的本地已經配置了Gradle了,那麼執行gradle bintrayUpload命令也可以。gradlew是Gradle的一層封裝,如果你本地沒有安裝Gradle gradlew就會自動下載Gradle
7. 請求提交你的專案到jcenter
前面所有步驟走完之後實際上只是上傳了你的專案到Bintray而已,並沒有被包含在jcenter中,要想提交到jcenter中還需要Bintray的稽核。
登入Bintray網站,進入個人中心,在右側的Owned Repositories區域點選Maven的圖示,進入你的Maven專案列表。
如果已經上傳成功了,在這裡就能看到你的專案,進入專案詳情,在右下角的Linked To區域點選Add to JCenter,然後在Comments輸入框裡隨便填寫下資訊,最後點Send提交請求即可
一般情況下稽核需要4到5個小時,耐心等待就行了,稽核通過後會給你發郵件通知你,並且以後更新專案就不需要再稽核了。
8. 一句話匯入你的專案
當稽核通過後,別人就可以一句話匯入你的專案了,例如:
compile 'com.oklib:oklib:1.0.7'
9. 額外補充:
保持你的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保持一致,如果你們誰有更好的辦法,歡迎留言交流。
相關文章
- 【Android AAR】快速釋出 Android Library 專案到 JCenterAndroid
- Android開源專案釋出jCenterAndroid
- 利用Gradle釋出專案到JCenter、MavenGradleMaven
- 新版Bintray網站釋出Library到JCenter網站
- Android 上傳 Library 到 JCenterAndroid
- Android通過Gradle釋出開源專案到binary/JcenterAndroidGradle
- Android 專案打包到 JCenter 的坑Android
- Android擴充系列(12)--使用Gradle釋出aar專案到JCenter倉庫AndroidGradle
- Android:一個專案提交多個module到JCenterAndroid
- AS上傳Library到JCenter 教程+踩坑記錄
- 我是如何將Pluto作為library分享到jCenter
- Android library 釋出多渠道 AARAndroid
- 使用Gradle釋出SNAPSHOT版本到JCenter(oss.jfrog.org)Gradle
- flutter釋出專案到pub的流程Flutter
- Library Module上傳Jcenter詳解
- 教你一步步釋出一個開源庫到 JCenter
- Android(支援kotlin) 新版Bintray-極簡上傳Library到JCenter,可上傳自定義maven倉庫AndroidKotlinMaven
- 如何通過Gradle上傳Android庫到JCenterGradleAndroid
- Android專案如何進行簽名打包釋出Android
- Open Library 專案
- 手把手教你釋出自己的開源庫到 Jcenter
- QT從入門到入土(八)——專案打包和釋出QT
- jenkins專案釋出Jenkins
- 釋出android app到android market的方法AndroidAPP
- 教你釋出vue+.netCore專案到伺服器VueNetCore伺服器
- 如何釋出本地maven專案jar包部署到nexus私服?MavenJAR
- Android學習之 主專案合併Library子專案中的ManifestAndroid
- 上傳自己的庫到jcenter
- 淺入深出Vue:釋出專案Vue
- Qt 專案的打包釋出QT
- renren開源專案釋出
- 使用gradle外掛釋出專案到nexus中央倉庫Gradle
- 使用DHorse釋出SpringBoot專案到K8SSpring BootK8S
- Asp.Net專案釋出 到 IIS、 Core3.1 釋出到 IIS CentOS8.xASP.NETCentOS
- Bintray專案釋出-BintrayRelease
- java專案如何加密及釋出Java加密
- 使用Cordova執行專案到androidAndroid
- 通過 Github Action 釋出 SpringBoot Docker 專案到雲伺服器GithubSpring BootDocker伺服器