1. 程式人生 > >Android Studio提交庫至Bintray jCenter從入門到放棄

Android Studio提交庫至Bintray jCenter從入門到放棄

平常在工作中我們常常會引用到第三方開源庫,比如butterknife, Gilde, RxJava等等。其中最簡單方便快捷的方式就是在gradle中用compile引用,例如

compile 'io.reactivex:rxjava:1.1.3'

有沒有想過自己也寫一個開源庫提供一個引用給別人用?本文介紹如何自己建立一個庫給別人用。

首先你要得有庫

建立庫很簡單,網上有大把的事例教程,為了節約篇幅本文只做簡單介紹。
在AndroidStudio中先建立一個普通工程,再建立好的工程上右鍵選擇->New->Module

這裡寫圖片描述

在彈出窗中選擇’Android Library’,這樣建立的就是傳說中的aar包了,一個類似傳統jar的包。
然後取一個霸氣的名字,這樣就搞定了!(但是如果你想讓你的主工程用到這個lib還需要在build.gradle中配置一番,網上文章很多不做介紹)

接下來是Bintray和jCenter

啥是Bintray?啥是jCenter?
首先說jCenter,是一個程式碼庫,相當於一個公共的儲存控制元件,簡單的來講就是你把你寫好的aar檔案及一些文件描述檔案之類的東西打包上傳到jCenter伺服器上,其他人就可以通過jCenter伺服器下載到你上傳的包了。
那Bintray又是啥?Bintray是jCenter的提供商,他支援上傳lib到多個平臺,jCenter只是眾多平臺中的一個,形象的說jCenter是位於某地的倉庫,Bintray是送貨的卡車,你寫的庫就是貨了。

因此我們要想把自己寫的lib分享給其他人,就必須通過Bintray上傳到jCenter。首先我們要去Bintray上註冊一個賬號,或者用Github帳號直接登入。
登入後,在

https://bintray.com/profile/edit頁面的左邊選單的最下面有API Key複製下來。

這裡寫圖片描述

在工程的Root gradle中加入

dependencies {
....
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}

可參考

在library的gradle中加入:

apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
version = "0.1.1" // 修改為你的版本號

def siteUrl = 'https://github.com/h3clikejava/ExtendImageView' // 修改為你的專案的主頁
def gitUrl = 'https://github.com/h3clikejava/ExtendImageView.git' // 修改為你的Git倉庫的url

group = "h3c.extendimageview" // Maven Group ID for the artifact,一般填你唯一的包名

install {

repositories.mavenInstaller {

// This generates POM.xml with proper parameters

pom {

project {

packaging 'aar'

// Add your description here

name 'auto extand ImageView for Android.' //專案描述

url siteUrl

// Set your license

licenses {

license {

name 'The Apache Software License, Version 2.0'

url 'http://www.apache.org/licenses/LICENSE-2.0.txt'

}

}

developers {

developer {

id 'H3c' //填寫的一些基本資訊

name 'H3c'

email '
[email protected]
' } } scm { connection gitUrl developerConnection gitUrl url siteUrl } } } } } 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 } Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) bintray { user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") configurations = ['archives'] pkg { repo = "maven" name = "extend-imageview" //釋出到JCenter上的專案名字 websiteUrl = siteUrl vcsUrl = gitUrl licenses = ["Apache-2.0"] publish = true } }

程式碼有點亂,懶癌犯了,其實蠻簡單的,複製上面這一段,修改成自己的引數就好了。具體可以參考這裡

這裡還需要將你的bintray使用者名稱和apikey寫到工程的local.properties檔案中

// 示例值, 僅供參考

bintray.user=h3 // your bintray user name
bintray.apikey=c5434272d522d35d1a0123459981225564155753 // your bintray api key

OK,以上配置完就準備上傳到Bintray。
通過gradew執行即可

gradew install
gradew bintrayUpload

這裡寫圖片描述

通常大家都會失敗的,原因很多。這裡非常坑爹的不做介紹!因為本文後續會教你放棄這個冗長又及其容易失敗的方法。

如果你編譯成功且正常上傳到Bintray,那麼恭喜你,你真是太牛了,接下來對於你來說就很容易了

在Versions看到你的版本就說明成功了,接下來點選Add to JCenter

這裡寫圖片描述

輸入一些描述就等待稽核。稽核完成後即可在第三方庫中引用了。

更簡單的方式novoda

看完以上的內容,相信你已經知道如何寫一個lib庫,並通過bintray上傳到jCenter了。但是有沒有覺得真的好複雜…build.gradle中要配置好多東西,幾乎沒法自己閉著眼睛寫出來,只能從網上搜索了貼上。

接下來介紹一個更簡單的方式是用novoda庫,它還是使用了bintray和jCenter,但是會大大簡便build.gradle的配置方法。
首先在Root gradle中加入這句話

apply plugin: 'com.novoda.bintray-release' // must be applied after your artifact generating plugin (eg. java / com.android.library)

注意,他必須寫在com.android.library 的下面
其次在你的lib gradle中寫上這個

publish { 
  userOrg = 'novoda' 
   groupId = 'com.novoda' 
  artifactId = 'bintray-release' 
  publishVersion = '0.3.4' 
}

在android{} 中需要加入

 lintOptions {
 abortOnError false
}

這裡寫圖片描述

這個時候在AS的終端中執行

$ ./gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false

把BINTRAY_USERNAME 替換成你的bintary的名字BINTRAY_KEY 替換成你的 Bintray的key 即可

如果成功就恭喜你,如果失敗….那原因就很多了,本文坑爹的不做介紹!用飄柔就是這麼自信,喜歡Bintray jCenter的同學們自己折騰去吧!

文尾福利,沒錯我就是飄柔
jCenter應該是目前應用最廣的第三方gradle倉庫了,但是其申請建立編譯上傳等流程實在是太麻煩了,感覺是上個世紀八十年代的產物,還需要上傳,自己編譯,稽核之類的,超級容易失敗有木有???

本文決定拿出珍藏多年的82年飄柔給大家,博主先乾為敬!
JitPack也是一個程式碼倉庫,等同於jCenter,只是暫時用的人沒有jCenter多,但是越來越多的開源專案開始使用JitPack了。

真的非常非常的簡單,有多簡單我們來看看。
比如博主寫了一個自用的Android基礎庫,便於快速構建工程,地址是:
AFastProject(不給我打賞的童鞋記得幫我點星…),由於引用了第三方的庫,所以用本文上面兩種方式釋出aar都出現了問題,各種各樣,要麼就是無法編譯,要麼就是丟包,反正折騰了好久。最後用JitPack一句話解決了。。。。

這裡寫圖片描述

在輸入框中輸入你的Github工程地址,點選Look up
他會自動遍歷出你的最近提交和釋出的版本

這裡寫圖片描述

點選你要引用的選擇Get it

這裡寫圖片描述

在文尾就會告訴你如何引用。
是的,你沒看錯,客戶端什麼都不用改。其他工程可以直接引用!

呵呵……用飄柔就是這樣麼自信

相關推薦

Android Studio提交Bintray jCenter入門放棄

平常在工作中我們常常會引用到第三方開源庫,比如butterknife, Gilde, RxJava等等。其中最簡單方便快捷的方式就是在gradle中用compile引用,例如 compile 'io.reactivex:rxjava:1.1.3'

ubuntu下Android Studio 提交程式碼Github

1. Github註冊 填寫使用者名稱,郵箱,密碼,這裡不再贅述。 2. 在Github上建立repository 點選右側的 new repository 建立倉庫,依次是,倉庫

Android Studio 上傳Bintary JCenter 流程

註冊賬號  地址:https://bintray.com/  可用第三方登入(github) 在個人資料裡找到API Key 儲存下,之後上傳有用 新建 Maven Repositor 和Package 在專案 root gradle 新增外掛cl

Android Studio提交程式碼到SVN

目的:1、將AndroidStudio中的Android專案提交給svn;2、從svn下載已儲存的android專案。 準備條件:1、svn客戶端和服務端;2、建立一個android專案 步驟: 1、安裝svn客戶端 當出現這個頁面時,在下拉框裡選擇第一個; 安裝完後找到它

android studio提交到開源git時出現:fatal: refusing to merge unrelated histories的解決辦法

android studio提交到開源git時出現:fatal: refusing to merge unrelated histories的解決辦法 1.cmd進入專案的根目錄。 2.執行下面的命令:git pull origin master –allow-unrela

關於Android Studio提交程式碼到Git上的操作(Mac)

第一步、先使用Android Studio建立一個新的Android工程。 第二步、在工具欄點選VCS,選擇Enable Version Control Integration, 之後會將版本控制選擇彈框開啟,如下圖所示: 第三步、選擇彈框中project root為Git

Android Studio平臺下使用hellochart實現txt檔案讀取資料繪折線圖

Android Studio平臺下使用hellochart實現從文字讀取資料繪折線圖 本人是一個剛剛接觸Android不超過兩個月的小白,最近在做的論文是關於這一塊的相關內容。所有的東西都是自學的,聽導師的建議也是第一次留個這樣的資料,可能有很多地方理解不到位,

Android Studio引入到專案中出現錯誤(例如Glide)

在學習的過程中,由於書上的版本,不能與自己的Android studio各種庫的版本相互對應。有時候錯誤資訊並不是只提示某個庫出現錯誤,而是會引發各種各樣的錯誤,直接導致相對應的控制元件無法使用。 所以可以採用一種方法去引入庫。 1、點選File,開啟Pro

Android Studio之maven Central,JCenter

Android studio 是從哪裡得到庫的? Android Studio是從build.gradle裡面定義的Maven 倉庫伺服器上下載library的。Apache Maven是Apache開發的一個工具,提供了用於貢獻library的檔案伺服器。總

Android Studio中gradle構建依賴JCenter下載太慢的解決方案

方案一:將jcenter下載由https修改為http,即由https://jcenter.bintray.com/調整http://jcenter.bintray.com/。 在build.gradle裡,增加jcenter(){url 'http://jcenter/bi

Android Studio 第三方依賴

說明:有關這些第三方庫的最新依賴,可以自己到GitHub上去搜索,新增相應版本即可: OkHttp:一個處理網路請求的開源專案,是安卓端最火熱的輕量級網路框架,由Square公司貢獻 簡介:用於替代HttpUrlConnection和Apache HttpC

Android Studio 提交專案到新的Git地址 怎麼修改

原文地址:http://blog.csdn.net/sunsteam/article/details/73478045 方法有三種: 1.修改命令  git remote set-url origin [url]  例如:Git remote set-url o

Android studio提交程式碼到[email protected]

2,有Android studio開發環境 3,在OSC上建立專案 4,android studio建立本地專案,create git repository,選擇當前專案的根目錄: 5,以下為命令列操作:開啟本地的git bash命令列工具,cd進入專案資料夾位置,

Android studio so找不到問題

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[ zip file "/dat

Ubuntu將Android Studio圖示設定左側欄

ubuntu中預設的是gnome桌面,也可以為你的程式設定快捷方式 下載好androidstudio並且配置好環境後, echo $PATH /home/yyb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/us

Android Studio之maven Central,JCenter(build.gradle、gradle-wrapper.properties、gradle.properties)

Android studio 是從哪裡得到庫的? Android Studio是從build.gradle裡面定義的Maven 倉庫伺服器上下載library的。Apache Maven是Apache開發的一個工具,提供了用於貢獻library的檔案伺服器。總的來說,只

Mac Android studio提交本地專案到Github 以及配置 SSH KEY

在本地配置ssh key祕鑰 配置好之後上面的圖這裡需要它 3 開始本地配置ssh key,首先檢視本地電腦是否有配置過ssh,進入終端 敲入$ defaults write com.apple.finder AppleShowAllFiles -b

[android ndk]android studio動態生成及jni底層呼叫步驟

android studio動態庫生成及jni底層呼叫步驟 1、建立一個用於關聯c程式碼的類(對映類) 方法名需要加native修飾 public class NDKUtils { public static native int getSum

Android Studio 2.3使用CMake方式NDK入門

在嚮導的 Configure your new project 部分,選中 Include C++ Support 複選框。點選 Next。正常填寫所有其他欄位並完成嚮導接下來的幾個部分。在嚮導的 Customize C++ Support 部分,您可以使用下列選項自定義專案:C++ Standard:使

新裝Android Studio中Gradle下載慢、Could not get resource 'https://jcenter.bintray.com/...'問題

Gradle是一個版本控制以及靈活構建app的應用,但Gradle的使用有很多坑: 比如Android Studio(以下簡稱AS)在構建第一個新工程的時候自動下載gradle速度很慢.. 或者Gradle在自動下載網路庫的時候經常Could not get resource 'https: