最近小明正在看一本名叫《歷代經濟變革得失》從歷史角度分析經濟變化的書。通過研究經濟方式,作為一個工科畢業的小明,當然直接想到是資料統計,建立數學理論模型,這本書入手方式就成為了第一個吸引點。除了耳熟能詳的歷史事件人物,階級的鬥爭之外,留下深刻印象的還是封閉專制和開放改革之間的博弈。彰顯出活力生態,Open和Share是一個很好的選擇。
上個月27號開源Pluto框架《我的開源Android開發框架Pluto》,得到客觀上多正面的反饋。至此,進入這次主觀上的第二步,將Pluto變的更容易使用--將Pluto作為library分享到jCenter。
一.文章價值
1、實現我的框架Pluto分享到jCenter,以後開發直接用一句gradle語句就可以使用框架。
2、嚴格參照我的實現步驟,就不用在其他blog一篇篇閱讀總結踏坑才實現自己的library分享。
dependencies {
compile 'com.minggo:Pluto:1.0'
}複製程式碼
其中,bintray.com要熟悉,要不要翻牆?不用;Gradle配置要分清楚配置library的Gradle還是Project Gradle;編譯和上傳要多久?編譯保證不出錯就行,上傳普遍是1分鐘;link to jCenter稽核要多久,我的是3個小時。
二.bintray賬號設定
1.新官網整體認知
其中“View Profile”是個人中心,下邊會介紹獲取appkey."Add New Organization"是新增組織,這個比較重要,為了保證順利上傳,手動配置自己Organization更為合適。
2.新增組織
1)選擇建立新組織
2)根據填寫組織相關資訊,主要完成帶星的填寫就行
3)檢視建立完成的組織頁面
3.建立創庫
手動配置自己的倉庫尤為重要,注意創庫名。因為pluto倉庫名將會在Gradle檔案中做關聯,type選Maven主要針對本文實現的方式,必須選擇。關於版權License選擇是個可選選項,我的Pluto專案在github上建立的時候就選擇了MIT,所以就選擇MIT。創庫描述也是一個可選填寫,我就把Pluto在github上的描述新增上去了。
在組織頁面下就可以看見一下倉庫,需要了解可以點選去看看。
4.獲取自己的apikey
依次點選頁面“Edit Profile”-->"API Key" -->"Show",最好先複製存下來,等下gradle配置用到。
三.Gradle配置
1.整體要留意的3個地方
第一處,Project的gradle用來配置maven和bintray外掛用的;第二處,Library的gradle用來配置版本、倉庫等等用的;第三處,local.properties用來配置bintray的賬號和apikey用的。那麼關鍵內容將會在Library的gradle中。
2.Project的Gradle配置maven和bintray外掛
找到Project的Gradle檔案,在dependencies 中新增一下兩句外掛路徑
dependencies {
//Gradle Android Maven plugin
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
//Gradle Bintray Plugin
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.1'
}複製程式碼
更詳細的Gradle Android Maven plugin和Gradle Bintray Plugin。
3.local.properties的賬號和appkey配置
找到local.properties檔案
bintray.user=minggo620 // bintray使用者名稱
bintray.apikey=ab02158f80eaa139423axxxxxxxxxx //bintray API KEY複製程式碼
之前複製下來的apikey派上用場了,貼上到local.properties檔案後邊。為什麼放在這個檔案原因是專案.gitignore檔案預設忽略這個檔案上傳,正好免除暴露key。
4.Library的Gradle配置
找到Library的Gradle檔案,進行一下配置
#####1)引用Maven和bintray外掛
頭部加上
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'複製程式碼
2)讀取local.properties檔案
頭部加上接上
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())複製程式碼
3)配置必要和可選常量
比如最終形式是 compile 'com.minggo:Pluto:1.0'
那麼group和version如下。至於Pluto是Library的名稱,在執行任務中會配置。
def siteUrl = 'https://github.com/minggo620/Pluto-Android' // 專案的主頁
def gitUrl = 'https://github.com/minggo620/Pluto-Android.git' // Git倉庫的url
version = "1.0"
group = "com.minggo"複製程式碼
4)配置bintray配對任務
以下寫有註釋的都要注意,特別是repo的值是自己建立的倉庫名稱不是倉庫型別,name寫是Library名稱。license只能寫bintray提供選擇型別,userOrg填寫bintray後臺建立organization。強調這個的原因是本人看了其他文章發現容易產生誤解的地方。
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
pkg {
repo = 'pluto'//自己bintray建立倉庫名字
name = 'Pluto'//Library的名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ['MIT']//不能隨便寫,只能是倉庫建立時選擇的license type
userOrg = 'minggoopen' //自己bintray建立的organization名稱
publish = true // 是否是公開專案。
version {
name = '1.0'
desc = 'High integrated development framework for Android applications.'
released = new Date()
vcsTag = 'v1.0'
attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
}
}
configurations = ['archives']
}複製程式碼
5)配置maven的Install任務
這個部分重要的就會生成POM.xml,如果沒有執gradlew install就執行Studio 中Gradle欄的publishing下bintrayUpload會提示,沒有預設default pom.xml。
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
// Add your description here
name 'Pluto Android'
description 'High integrated development framework for Android applications.'
url siteUrl
// Set your license
licenses {
license {
name 'MIT'
url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE'
}
}
developers {
developer {
id 'minggo620' //填寫bintray或者github的使用者名稱
name 'minggo' //姓名,可以是中文
email 'minggo8en@gmail.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}複製程式碼
6)配置原始碼和文件任務
記得在以下響應地方新增 failOnError false,否則出現install執行出現build failed。
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
failOnError false //必須新增以免出錯
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
}複製程式碼
7)這是我Library的Gradle完整配合
apply plugin: 'com.android.library'
apply plugin: 'android-apt'
apply from: "dependencies.gradle"
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
def siteUrl = 'https://github.com/minggo620/Pluto-Android' // 專案的主頁
def gitUrl = 'https://github.com/minggo620/Pluto-Android.git' // Git倉庫的url
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
version = "1.0"
group = "com.minggo"
android {
compileSdkVersion 23
buildToolsVersion "24.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
consumerProguardFiles 'proguard-rules.pro'
}
buildTypes {
release {
minifyEnabled false
}
}
}
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
pkg {
repo = 'pluto'//自己bintray建立倉庫名字
name = 'Pluto'//Library的名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ['MIT']//不能隨便寫,只能是倉庫建立時選擇的license type
userOrg = 'minggoopen' //自己bintray建立的organization名稱
publish = true // 是否是公開專案。
version {
name = '1.0'
desc = 'High integrated development framework for Android applications.'
released = new Date()
vcsTag = 'v1.0'
attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
}
}
configurations = ['archives']
}
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
// Add your description here
name 'Pluto Android'
description 'High integrated development framework for Android applications.'
url siteUrl
// Set your license
licenses {
license {
name 'MIT'
url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE'
}
}
developers {
developer {
id 'minggo620' //填寫bintray或者github的使用者名稱
name 'minggo' //姓名,可以是中文
email 'minggo8en@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) {
failOnError false
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
}複製程式碼
四.執行install和upload
window和mac命令有些不一樣,mac命令前邊加./
再敲命令。以下是window執行方式。
1.確保Gradle已經安裝
在studio中 Terminal中執行檢視安裝情況,如果沒有會自動安裝。
gradlew -v複製程式碼
安裝情況如下:
2.執行install任務
gradlew install複製程式碼
結果如下:
:Pluto:bundleRelease UP-TO-DATE
:Pluto:javadoc UP-TO-DATE
:Pluto:javadocJar UP-TO-DATE
:Pluto:sourcesJar UP-TO-DATE
:Pluto:install
BUILD SUCCESSFUL複製程式碼
3.執行upload任務
gradlew bintrayUpload複製程式碼
1分鐘後結果如下:
:Pluto:install
:Pluto:bintrayUpload
BUILD SUCCESSFUL
Total time: 1 mins 33.999 secs
複製程式碼
五.Link to jCenter
進入bintray的Organization倉庫管理後臺找到自己的對應的倉庫發現一個package如下圖
進入Package進行看到上傳後的結果以下兩個紅色框框關鍵資訊
如果是未釋出將會出現一下link提示,這時就可以點選提交稽核了。
完成這一步剩下的就是郵箱等待了。3個小時後...
六.文章總結
就這樣,我的Android開發框架Puto做了Library分享到了jCenter。以後每次更新就只需要修改gradle的compile 'com.minggo:Pluto:1.0'
。對於使用Pluto框架的開發者來說就不必再去github下載原始碼拷貝到自己的專案,想必是一件很cool的事。是否,也有了分享自己的Library到JCenter的衝動了?
Gradle配置和Pluto框架gitHub下載地址github.com/minggo620/P…
【原創出品 未經授權 禁止轉載】
【歡迎微友分享轉發 禁止公號等未經授權的轉載】