1. 程式人生 > >android將library釋出至jcenter的趟坑之路

android將library釋出至jcenter的趟坑之路

            最近接手了一個sdk的任務,雖然原有任務已經比較多了,哈哈哈。一般sdk讓別人用可以打成jar包,但是如果是有資原始檔的就不行了,就可能需要打成aar包讓別人依賴了,但是這有個不好的地方每次自己的sdk有更新,還得讓被人更換aar包,頗顯麻煩啊,所以最終還是需要將其釋出至一個地方讓別人一行程式碼引用,還是很方便。

          其實也是參考了鴻洋大神的http://blog.csdn.net/lmj623565791/article/details/51148825這篇部落格。不過需要注意幾個點,第一:到https://bintray.com/這裡註冊時候不要點選如下圖左邊的綠色按鈕,因為他是企業版的,需要收費的,只讓免費試用30天,應該也是沒有api key的。要點選右側的for an open source的。

          第二:在自己library裡面apply plugin: 'com.novoda.bintray-release'後報錯Error:Exception thrown while executing model rule: PublishingPlugin.Rules#addConfiguredPublicationsToProjectPublicationRegistry(ProjectPublicationRegistry, PublishingExtension, ProjectIdentifier),是因為自己沒有在該gradle檔案裡面新增publish,加上就好了;

          第三:執行那個命令時候,一定是./gradlew開頭的,不能是gradle開頭的,否則是會報錯如下A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApk'.
   > Exception thrown while executing model rule: PublishingPlugin.Rules#publishing(ExtensionContainer)
      > org/gradle/api/internal/component/Usage;

         第四:執行命令過程中報錯:Execution failed for task ':wjbridge:mavenAndroidJavadocs'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): 'build/tmp/mavenAndroidJavadocs/javadoc.options' ,是因為進行了javadoc檢測,則需要在project層級的gradle檔案裡面新增tasks.withType(Javadoc) {
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }這個任務忽略doc檢測就好了;

        如果以上幾點做好了,另外按照大神的命令執行了,就應該在自己的bintray裡面建立的倉庫裡面看到自己上傳的專案了,如下圖所示

此時需要做的也只是點選library 名稱進去“add to jcenter”等待稽核完畢就可以依賴了。

        可能大家都會有疑惑,要是我改了程式碼想要再次上傳,但是又不想升級版本,如上面還想是0.0.1。我試了好多種方式,都沒實現我上面說的改了程式碼但是版本號不變的想法。我有將我上傳的專案直接delete掉,但是你會發現依賴依然是在的,因為程式碼還是在jcenter的,同時此時會在jcenter中看到如下圖所示的情況:

會看到自己已經不是這個專案的creator了,此時可能會想我再次上傳一個就好了,然後再次add to jcenter就好了,其實是不行的,bintray會給自己發站內信說jcenter已經存在該庫了,所以需要做的就是刪除自己原來上傳的,然後點選上面的I‘m the creator算是認領自己的專案了。我也試過將某個版本version刪除,同樣是不可以的。後來我在官方文件中發現瞭如下的話:“if a package of yours has been linked to someone else’s repository and you then delete the package, Bintray will automatically create a copy of this package in the repository. This means that even though you deleted the data, the data still exists in another version somewhere”大意是:“如果別的人倉庫已經依賴了你的釋出,那麼你刪除了這個package的話,Bintray會自動建立一個副本,這個就意味著 即使你刪除了這個資料,但是這個資料仍然會議另外一個版本在某個地方存在”所以就是你刪除也刪除不掉的,反正我是沒找到刪除的方法,如果哪位知道,煩請告知,多謝了。所以能做的就是每次發版時候都謹慎,如果新增了功能就升級版本就好了。

        然後我們會用這個sdk依賴,其實這個sdk裡面也是用了很多庫,也是需要將一些類去除混淆的了,一種方式是將這些去除混淆的程式碼寫在使用sdk的專案的proguard-rules檔案裡面,但是樣子也是很麻煩的,對於呼叫方不方便,所以有另外一種方式就是在sdk專案即library裡面的gradle檔案裡面的android標籤的defaultConfig標籤裡面新增consumerProguardFiles 'proguard-rules.pro',是的這個consumerProguardFiles作用就是當library釋出的時候會將混淆檔案打包進aar檔案中,這樣子。呼叫方就不用操心library的混淆情況了。

         以上就是本次內容,如有錯誤還請提出。多謝。

相關推薦

androidlibrary釋出jcenter

            最近接手了一個sdk的任務,雖然原有任務已經比較多了,哈哈哈。一般sdk讓別人用可以打成jar包,但是如果是有資原始檔的就不行了,就可能需要打成aar包讓別人依賴了,但是這有個不好的地方每次自己的sdk有更新,還得讓被人更換aar包,頗顯麻煩啊,所以

百度富文字Ueditor圖片上傳

之所以寫這片文章是自己在使用Ueditor當中,自己遇到的一些問題整理一下 1. 專案說明:使用Ueditor的專案是一個後臺管理的專案,採用maven搭建的ssh框架另外添加了redis等元件,當中使用了struts2,對於struts2自身瞭解不深,所以導

Xcode10

設置 directory 繼續 multipl hone 除了 代碼 origin ima https://www.jianshu.com/p/12558d39ba08 先默念別有太多坑啊 跑起來吧 結果沒有跑起來 1.第一個坑 Showing Recent

教你輕鬆Android library 釋出JCenter

JCenter是全世界最大的Java倉庫,也是Android Studio中repositories的預設節點。JCenter支援Maven, Gradle, Ivy, SBT 等大部分構建工具。將專案釋出到JCenter大致流程如下: 具體步驟:

AndroidLibrary上傳到jcenter超簡單完整圖文步驟以及遇到的各種

轉載於:http://blog.csdn.net/linglongxin24/article/details/53415932 補充bug: 按照上面連結,出現這個問題 HTTP/1.1 404 Not Found [message:Repo 'maven' was not

android開源庫釋出jcenter圖文詳解與填

相信很多人都用過開源專案,特別是android studio普及以後,使用開源庫更方便簡單。而如何上傳開源庫到jcenter供大家方便使用,雖然網上也有教程,但還是遇坑了,最後總結一下,希望可以幫助大家。 AndroidStudio是從Maven

Android SDK 開發——釋出使用踩

前言 在 Android 開發過程中,有些功能是通用的,或者是多個業務方都需要使用的。 為了統一功能邏輯及避免重複開發,因此將該功能開發成一個 SDK 是相當有必要的。 背景 剛好最近自己遇到了類似需求,在開發完 SDK 之後,整合到專案或者提供給別人的時候遇到了一些坑,這裡分享一下,以避免其他需

Android Studio 3.0+以上 版本 填依賴報錯。

Error:java.lang.RuntimeException: Annotation processors must be explicitly declared now.  The following dependencies on the compile classpath a

WORDPRESS安裝

前些天有個朋友需要搭建品牌宣傳的網站,我第一個就想到了WordPress。忙活了一晚上網站終於執行起來了。不愧是個人部落格系統中的佼佼者,安裝過程十分便利。 但是當我在系統後臺配置這個部落格的時候卻遇到了無數的坑,例如登入成功後頁面白屏、設定無法儲存、主題無法進行自定義設定等等

阿里雲訊息佇列MQTT踩(阿里雲MQTT Android客戶端)

最近需求需要實現收款語音的播報,如果不考慮費用問題,使用推送與百度AL開發平臺的語音合成功能就可也實現收款語音的播報功能,但是考慮到費用問題,同時還考慮到ios與Android可以同步使用的問題(ps:ios如果使用推送需要把應用上架到蘋果商店,需要有證書,而且還需要通過稽核

微信支付單頁面應用

        年初產品引入了微信支付到現在不到半年的時間,一直沒有過太大的坑爹經歷,自認為微信支付也能hold住了,沒想到上週還是被微信支付團隊的同學狠狠的擺了一道。在這裡留個記錄,希望同入此坑的同學能儘快爬上來。 背景:        上半年上線了商城的微信支付,此專案

Android Studio填

Android Studio是個強大Android開發工具,每個新版本的釋出都有帶來新的驚喜和爽快,但是同時也帶來驚嚇和糟糕,這邊文章就是收集開發中遇到的細節問題以及解決方法。 解析打包出的Apk沒有versionCode和versionName 開發環境背

一名Android開發者的微信小程式填(2)

前言 上一篇是九月二十七日寫的,而這一篇我動筆的時間是十月十日(特殊的日子),中間相隔十三天——當然是因為國慶節。說老實話,這十三天裡面我都沒有碰和小程式有關的東西——畢竟學習小程式的開發也只是起於興趣,而平時的工作並不會涉及與其相關的東西——但是在這十三天裡

一名Android開發者的微信小程式填(1)

前言 首先要宣告的是,我是一名 Android 開發者,之前基本沒有前端開發經驗,甚至連 JS ,HTML 都是為了開發小程式現學的一些皮毛——所以文章中所提到的一些點也許在資深前端開發者看來只是小case,但是站在一個 Android 開發者的角度來看確實是

React Native踩 — 執行Android專案的各種(Windows)

之前我們已經初始化了一個Raect Native 專案,驗證了Android環境的正確性,接下來就執行起來吧! 執行命令:        ① react-native start        ② react-native run-android 執行步驟: 1.

angular踩:初探webpack

match 了解 contex tex component logs pen erro nco 之前費了一番力氣安裝好了angular開發環境,後面的幾天都是在angular中文官網上看文檔,照著英雄教程一步一步操作,熟悉了angular的一些基本特性,這部分沒

Angular4.0踩:探索子路由和懶加載

ati clas per 而是 配置 trap child property one 參考文章: Angular4路由快速入門 http://www.jianshu.com/p/e72c79c6968e Angular2文檔學習的知識點摘要——Angular模塊(NgMo

webpack踩 (2)——圖片的路徑與打包

img url rom file filename png 一起 類型 emp webpack踩坑之路 (2)——圖片的路徑與打包 剛開始用webpack的同學很容易掉進圖片打包這個坑裏,比如打包出來的圖片地址不對或者有的圖片並不能打包進我們的目標文件夾裏(bund

記錄一下openvpn,填

openvpn題目,占位。。。整理一下,工作中遇到的openvpn的問題需求:兩個辦公地點:青島、北京;北京的小夥伴需要訪問青島辦公區的內網,同時需要訪問阿裏雲服務器。解決方案:在阿裏雲跳板機上以及青島辦公區安裝openvpn。jumper上之起server,青島辦公區起server+client。遇到的問題

angular4(2)angular腳手引入第三方類庫

scrip 1-1 sta 引入 logs .json 類比 ima 第三方 如何在angular4腳手架中引入第三方類庫呢比如jquery、swiper、bootstrap。。。。。。 例如引入jquery:(其他類庫類比jquery即可) 第一步:在我們的項目目錄下