對於Android 的開源庫,通常經過 JCenter 或者 JitPack 發佈開源。兩種方式都可~java
- 儘可能不要在官網註冊,由於官網註冊的是企業版,咱們須要的是我的版
- 直接關聯
Github
帳號進行註冊 & 登陸(建議)
PS:若是Github帳戶使用了qq郵箱,163郵箱等可能會沒法註冊,能夠嘗試給Github帳戶 增長一個郵箱例如 Gmailandroid
Module
文件夾步驟以下git
Android Studio中github
Module
文件夾的結構和 原有的項目文件夾(app
)很是相似View
爲例子View
代碼包括:1個類文件Library Module
的Gradle
文件中配置//Library build.gradle apply plugin: 'com.novoda.bintray-release' // 添加bintray插件 publish { userOrg = 'dmingou' // Bintray用戶名 repoName = 'AnimatedFloatingButton' // Bintray上的新建的倉庫名(Repository) groupId = 'qg.odm' // 依賴名 implemention 'x:y:z'中的包名x artifactId = 'AnimatedFloatingButton' // 依賴名implemention 'x:y:z'中的項目名y publishVersion = '1.0.0' // 依賴名implemention 'x:y:z'中的版本號z desc = 'XXXXXXXX' // 對該開源組件的說明 website = 'https://github.com/DMingOu/AnimatedFloatingButton' // VCS地址 }
注意:儘可能保持你的library module的名字同artifactId同樣web
緣由:Bintray上,你的項目的 maven-metadata.xml 文件的路徑 爲 gruopId+"/"+module名稱。api
假設你的groupId=qg.odm,artifactId是AnimatedFloatingButton,但module名稱是AnimatedFloatingButtonLibrary。
此時,項目文件在qg.odm.animatedfloatingbuttondemo目錄下的,但maven-metadata.xml文件倒是在qg.odm/AnimatedFloatingButtonLibrary目錄下的,可能會有衝突。bash衝突:若你有多個項目groupId同樣 & artifactId不同,但module名稱都是library的話,maven-metadata.xml文件的地址可能會同樣,即都是:gruopId+"/"+module名稱,那麼就可能產生衝突。oracle
解決方案:保持module名稱和artifactId一致。app
Gradle
文件中配置使用插件前應該看下最新版本 Bintray-release 的github地址maven
//Project build.gradle classpath 'com.novoda:bintray-release:0.9.2' allprojects { tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') options.addStringOption('encoding', 'UTF-8') } } allprojects { tasks.withType(Javadoc) { options{ encoding "UTF-8" charSet 'UTF-8' links "http://docs.oracle.com/javase/7/docs/api" } } }
AndroidStudio
的 Terminal
輸入如下命令// 每行命令均用空格隔開,此處是爲了展現纔會分行 <-- Windows版本 --> gradlew.bat clean build bintrayUpload -PbintrayUser=UserName // Bintray用戶名 -PbintrayKey=********* // Bintray上的API key -PdryRun=false <-- Mac版本 --> ./gradlew clean build bintrayUpload -PbintrayUser=carson-ho -PbintrayKey=***************************** -PdryRun=false
//一行命令直接在Terminal執行,例子以下 gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false
Jcenter
網站)注:通常來講不會一次成功,可能出錯的問題(坑),詳情拉到末尾總結
到這一步,你已經將項目上傳到 JCenter
了,可進入查看到 Package 已被添加進去
JCenter
Library
了!在對應的 Package 頁點擊對應的版本號,在Maven Info中能夠查看
當須要進行Android Library
版本更新時,只須要如下2個步驟:
Library Module
的Gradle
文件中的配置2中 從新配置版本號,其餘的都不用更改!!在AndroidStudio
的 Terminal
輸入如下命令
//一行命令直接在Terminal執行,例子以下 gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false
等待必定時間,就能夠看到 Bintray
網站上更新了Android Library
的新版本。
MacOS可能出現的坑
// 錯誤日誌:說明權限有問題 bash: ./gradlew: Permission denied // 解決方案:得到權限,直接在終端輸入如下命令 chmod +x gradlew
研究一番,相似的錯誤還有 **Not Found Repo …**網上回答清一色是說配置中寫錯了或者檢查下空格問題。而後我認真檢查發現無錯後,我直接按原來的命令,再次執行,而後竟然就 Build Successful 了,有點玄學
bintray網站,Package上傳成功後,點擊「add to jcenter」按鈕時,提示以上信息。
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
gradlew clean build gradlew bintrayUpload.........
gradlew clean build bintrayUpload...
解決辦法就是手動執行task。那何時執行?怎麼執行呢?
在gradlew clean build 和 gradlew bintrayUpload… 兩個Task之間執行;
首先在android studio 中打開gralde task視圖,前後右擊run運行下面的兩個Task便可;
執行完之後,對應module下的build目錄會生成對應的pom文件
再按照如上操做,而後再去官網點擊「add to jcenter」按鈕便可順利進入申請界面
在Github上傳須要開源的項目,與 上傳JCenter步驟中的準備工做對項目代碼的操做相似。
參照 上傳JCenter開源 的 準備工做的 步驟3,步驟4,步驟5
classpath ‘com.github.dcendents:android-maven-gradle-plugin:2.1’
PS:jitpack的android-maven-gradle-plugin版本要和gradle版本對應。具體的對應呢?查看官方說明~~
以下圖:
在library的 build.gradle中添加代碼
// JitPack Maven apply plugin: 'com.github.dcendents.android-maven' // 其中username須要替換爲你在github上的用戶名 group='com.github.username'
以下圖所示:
修改後的部分要提交到github上去!!
綁定了帳戶後,能夠在左方的 Repositories欄挑選;也能夠在輸入框中填入 發佈release的項目地址
Log欄是綠色,表明OK,點擊 Get It 按鈕,版本提交完成後,JitPack會自動生成引用該library的配置信息:
在項目依次添加這兩處,就可使用發佈的代碼庫了
謝謝閱讀的同窗~,但願文章能對您有用