前面我們使用自己封裝的okhttp項目時候,只需要app/build.gradle文件中加一行代碼就能使用項目。 那是因為我之前就把封裝的module提交到了jcenter伺服器。所以android sutdio把從jcenter伺服器把類庫下載下來。 提交項目到jcenter 當我們做好一個輪子的 ...
前面我們使用自己封裝的okhttp項目時候,只需要app/build.gradle文件中加一行代碼就能使用項目。
compile 'com.ansen.http:okhttpencapsulation:1.0.1'
那是因為我之前就把封裝的module提交到了jcenter伺服器。所以android sutdio把從jcenter伺服器把類庫下載下來。
提交項目到jcenter
當我們做好一個輪子的時候,或者項目中有一些好的module想分享給別人用的時候,首先把代碼提交到github(全球男性交友平臺)上開源,但是這還不夠,別人拿你的代碼作為module依賴太麻煩了,比較酷的方法應該是一行代碼引用。
首先我們得有一個jcenter賬號
這個網站註冊有點坑爹,有兩種方式(企業版跟個人免費版),個人版的項目必須要開源,個人註冊地址如下:
https://bintray.com/signup/oss
一定要註意不要註冊了企業版,沒法直接切換成個人版,必須要得試用期過重新註冊。用我貼的鏈接註冊就行。還有註冊郵箱不能是國內163郵箱或者qq郵箱,我用的是google郵箱註冊的。
上傳項目到jcenter
jcenter上創建Repository
登錄jcenter賬號,進入用戶首頁,點擊Add New Repository按鈕。
進入Add New Repository頁面,Name輸入框輸入module名稱(okhttpencapsulation),Type選擇Maven。然後點擊最後的Create按鈕,Repository就創建成功了。
Android Studio中添加代碼
項目的build.gradle中加入如下代碼:
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
修改後效果圖如下:
修改要上傳的module下的build.gradle。例如我這邊路徑是:OkHttpEncapsulation/okhttpencapsulation/build.gradle。在文件尾部增加如下代碼:
// 這裡添加下麵兩行代碼。
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
// 定義兩個鏈接,下麵會用到。
def siteUrl = 'https://github.com/ansen666/OkHttpEncapsulation' // 項目主頁。
def gitUrl = 'https://github.com/ansen666/OkHttpEncapsulation.git' // Git倉庫的url。
group = "com.ansen.http"// 唯一包名,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的com.ansen.http就是這裡配置的。
version = "1.0.1"//項目引用的版本號,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的1.0.1就是這裡配置的。
install {
repositories.mavenInstaller {
// 生成pom.xml和參數
pom {
project {
packaging 'aar'
// 項目描述,複製我的話,這裡需要修改。
name 'okhttpencapsulation'// 可選,項目名稱。
description 'okhttp project describe'// 可選,項目描述。
url siteUrl // 項目主頁,這裡是引用上面定義好。
// 軟體開源協議,現在一般都是Apache License2.0吧,複製我的,這裡不需要修改。
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
//填寫開發者基本信息,複製我的,這裡需要修改。
developers {
developer {
id 'ansen' // 開發者的id。
name 'ansen' // 開發者名字。
email '[email protected]' // 開發者郵箱。
}
}
// SCM,複製我的,這裡不需要修改。
scm {
connection gitUrl // Git倉庫地址。
developerConnection gitUrl // Git倉庫地址。
url siteUrl // 項目主頁。
}
}
}
}
}
// 生成jar包的task,不需要修改。
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
// 生成jarDoc的task,不需要修改。
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
// destinationDir = file("../javadoc/")
failOnError false // 忽略註釋語法錯誤,如果用jdk1.8你的註釋寫的不規範就編譯不過。
}
// 生成javaDoc的jar,不需要修改。
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
// 這裡是讀取Bintray相關的信息,我們上傳項目到github上的時候會把gradle文件傳上去,所以不要把帳號密碼的信息直接寫在這裡,寫在local.properties中,這裡動態讀取。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user") // Bintray的用戶名。
key = properties.getProperty("bintray.apikey") // Bintray剛纔保存的ApiKey。
configurations = ['archives']
pkg {
repo = "okhttpencapsulation" //Repository名字 需要自己在bintray網站上先添加
name = "okhttpencapsulation"// 發佈到Bintray上的項目名字,這裡的名字不是compile 'com.ansen.library:circleimage:1.0.1'中的circleimage。
userOrg = 'anhui'//Bintray的組織id
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true // 是否是公開項目。
}
}
都有註釋,當有時候的時候直接複製代碼就行。然後修改一些值。在最後的bintray裡面有從local.properties文件中獲取用戶名跟apikey。這是保密信息,我們不能暴露給別人,build.gradle文件我們會提交到git伺服器上,但是local.properties文件不會提交。
打開OkHttpEncapsulation/local.properties文件,在尾部添加兩行,這個key是我隨便修改過的,是個錯誤的key,需要自己去替換:
bintray.user=anhui
bintray.apikey=ac8137c9138a8b49a18a323260041fcf1f75a6f
user是我們註冊的名字,apikey需要去jcenter官網查看。進入修改用戶界面,點擊左側apikey按鈕,然後輸入密碼就能看到了。把這個key複製到local.properties中替換掉。
gradle命令上傳
上傳項目到jcenter需要用到gradle命令,首先把gralde加入到環境變數。mac下加入環境變數教程,windows環境不會加入環境變數的自行搜索下:
http://blog.csdn.net/u013424496/article/details/52684213
在android studio底部有個Terminal的按鈕。點擊它進入Terminal界面。
輸入命令:
gradle install
出現BUILD SUCCESSFUL就表示成功了。
繼續輸入命令,提交項目到bintray:
gradle clean build bintrayUpload
這個命令會提示上傳進度,上傳到100%就成功了最後也會出現BUILD SUCCESSFUL。到了這一步你的進度條已經到了90%了,就差最後一步了。
Add to JCenter
我們提交成功了之後呢趕緊打開jcenter官網看看有沒有成功。在首頁點擊我們的package(okhttpencapsulation)名稱,在這個頁面應該就能看到我們提交的項目了,點擊項目進入項目詳細頁。
我們可以看到版本,看到gradle線上引用的代碼,還能切換到Maven跟lvy方式。然後右邊有個Add to JCenter,每個項目剛剛提交都必須要審核的,所以我們點擊Add to JCenter去進行審核。審核成功就能一行代碼引用這個module啦。