Android Studio發(fā)布項(xiàng)目到Jcenter

新版的Android Studio會(huì)將遠(yuǎn)程倉(cāng)庫(kù)指定為Jcenter,那Jcenter在哪里?它是干嘛的呢?

要回答這個(gè)問題,我們要了解一個(gè)公司,叫做jfog,它有個(gè)網(wǎng)站是Bintray,這個(gè)網(wǎng)站類似于github,但關(guān)注的領(lǐng)域不一樣,github管理的是文本文件,而Bintray專注于管理二進(jìn)制文件,個(gè)人感覺有些類似yy和qq的關(guān)系。扯回來,我們今天的主人公Jcenter就存放在Bintray網(wǎng)站里,Bintray下有名的庫(kù)可不止Jcenter只一個(gè),rpm-center,rubyinstaller都是它里面的倉(cāng)庫(kù)。所以,如果我們想把自己的開源庫(kù)存放在Jcenter上供其它人使用,主要步驟如下:

我們需要注冊(cè)Bintray賬號(hào),然后上傳我們的項(xiàng)目到Bintray,最后在Bintray里提交我們的項(xiàng)目,管理員會(huì)對(duì)項(xiàng)目審核,通過后我們就可以在Gradle里通過制定遠(yuǎn)程位置來使用自己的庫(kù)了。好,Let Go!

注冊(cè)Bintray賬號(hào)

Bintray官網(wǎng)傳送門:https://bintray.com/

但很遺憾的是這個(gè)網(wǎng)站國(guó)內(nèi)訪問有點(diǎn)尷尬,你需要翻墻才可以。

Bintray是支持Github登陸的,也比較推薦在這種方式,(這里我真的想吐槽下某些sb網(wǎng)站做的連排泄物都不如,通過第三方登陸像還得重新注冊(cè)!還得手機(jī)驗(yàn)證,這種網(wǎng)站必須拉黑)

登陸之后我們需要兩個(gè)參數(shù),一個(gè)是我們的用戶名,另外一個(gè)就是api key,api key的獲取可以參照我下面的gif圖片:

先記得這兩個(gè)數(shù)據(jù)的獲取方式,一會(huì)我們會(huì)用到。

上傳自己的Library到Bintray

關(guān)于怎樣使用Android Studio創(chuàng)建Library這里就不多講,這里假設(shè)我們有一個(gè)自己將要上傳到Binray,我這里的Library很簡(jiǎn)單,簡(jiǎn)單到不需要res文件,是我編寫和整理的和Android相關(guān)的工具類,我把這個(gè)Librasy命名為utils,整個(gè)Library目錄結(jié)構(gòu)如下:

接下里的步驟比較繁瑣,Gradle已經(jīng)支持通過命令來上傳Library到Bintray,但項(xiàng)目的相關(guān)信息需要在gradle的配置文件中制定,首先我們需要打開utils這個(gè)module下的build.gradle文件,將其替換如下:

apply plugin: 'com.android.library'

apply plugin: 'com.github.dcendents.android-maven'

apply plugin: 'com.jfrog.bintray'

// 這個(gè)version是區(qū)分library版本的,因此當(dāng)我們需要更新library時(shí)記得修改這個(gè)version

version = "1.0.0"

android {

compileSdkVersion 21

buildToolsVersion "21.1.1"

resourcePrefix "隨便填"

defaultConfig {

minSdkVersion 9

targetSdkVersion 21

versionCode 1

versionName version

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

}

def siteUrl = 'https://github.com/saymagic/AndroidUtils'? ? ? // 項(xiàng)目的主頁(yè)

def gitUrl = 'https://github.com/saymagic/AndroidUtils.git'? // Git倉(cāng)庫(kù)的url

group = "cn.saymagic" // 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 'Android Commonly used utils'? //項(xiàng)目描述

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 'saymagic'? ? ? //填寫開發(fā)者基本信息

name 'saymagic'

email 'cymmagic@gmail.com'

}

}

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"? //發(fā)布到Bintray的那個(gè)倉(cāng)庫(kù)里,默認(rèn)賬戶有四個(gè)庫(kù),我們這里上傳到maven庫(kù)

name = "utils"? //發(fā)布到Bintray上的項(xiàng)目名字

websiteUrl = siteUrl

vcsUrl = gitUrl

licenses = ["Apache-2.0"]

publish = true

}

}

注意里面的信息需要按照自己的個(gè)人資料進(jìn)行修改。

因?yàn)樯鲜龅奈募镄枰蕾囈恍┢渌膸?kù),所以接下來再到我們項(xiàng)目最外層build.gradle文件里,添加如下兩個(gè)依賴

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'

classpath 'com.github.dcendents:android-maven-plugin:1.2'

修改后的文件如下:

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:1.0.0'

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'

classpath 'com.github.dcendents:android-maven-plugin:1.2'

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

}

allprojects {

repositories {

jcenter()

}

}

最后,我們?cè)诖蜷_項(xiàng)目最外層的local.properties文件,添加如下兩行:

bintray.user=your_user_name

bintray.apikey=your_apikey

your_user_name和your_apikey這兩個(gè)數(shù)據(jù)就是我們?cè)诘谝徊阶?cè)Bintray時(shí)提到的兩個(gè)參數(shù),

解析來,在項(xiàng)目的根目錄下執(zhí)行

第一步是檢查代碼的正確性,以及編譯library文件(aar,pom等等),輸入下面的命令:

>?gradlew?install

如果沒有什么問題,會(huì)顯示:

BUILD?SUCCESSFUL

現(xiàn)在我們已經(jīng)成功一半了。下一步是上傳編譯的文件到bintray,使用如下的命令:

gradlew?bintrayUpload

如果顯示如下你就大喊一聲eureka吧!

SUCCESSFUL

在bintray的網(wǎng)頁(yè)上檢查一下你的package。你會(huì)發(fā)現(xiàn)在版本區(qū)域的變化



這樣,我們就可以到到我們的module下會(huì)生成如下目錄:/build/outputs/aar/

在arr目錄下有如下兩個(gè)文件:

以arr文件結(jié)尾的就是Gradle將我們的library打包成的二進(jìn)制文件,別忘記了,Bintray就是用于存儲(chǔ)二進(jìn)制文件的倉(cāng)庫(kù),所以執(zhí)行下面的命令。就可以將我們的library上傳到Bintary。

上傳成功之后,就會(huì)在bintray的maven倉(cāng)庫(kù)下看到我們上傳的Library:

提交項(xiàng)目到Jcenter

我們點(diǎn)開我們剛剛提交項(xiàng)目的主頁(yè),點(diǎn)擊右下角的add to jcenter按鈕

接下來寫一些評(píng)論:

點(diǎn)擊send后就可以等管理員的審核了。

大概一小時(shí)后,管理員就會(huì)審核通過:

這樣,我們就可以在Dependence里這樣來引用我們自己的項(xiàng)目了:

dependencies {

compile 'cn.saymagic.utils:utils:1.0.0'

}



參考

https://www.virag.si/2015/01/publishing-gradle-android-library-to-jcenter/

http://stackoverflow.com/questions/24852219/android-buildscript-repositories-jcenter-vs-mavencentral

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容