利用Gradle釋出Android Studio專案到JCenter
Android Studio預設的遠端倉庫是JCenter,在bintray網站。本文將介紹如何將studio專案釋出到Jcenter。
獲取使用者名稱和APIkey
nobady即為使用者名稱
通過圖中的1、2、3、4步驟可以獲取apikey
建立組織
點選圖中 的Create Organization即可進入建立組織頁面
根據自己的實際情況填寫資訊,完成之後點選Create即可建立組織,其中第一行是組織id,第二行是組織名稱。後面提到的gradle.properties檔案中的PROJ_USER_ORG的值就是組織id
新增Repo
建立完組織之後,還要在組織中新增一個Repository
其中的Name的值 為 配置檔案中PROJ_USER_MAVEN的值。
- 新增package
建立完Repo後,還需要新增package
其中Name的值就是配置檔案中PROJ_NAME的值。
接下來,就是在studio進行的操作
- 外掛依賴
在工程的build.gradle檔案中新增如下程式碼
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
即可完成對“gradle-bintray-plugin”以及“android-maven-plugin”外掛的依賴
指令碼程式碼
在工程目錄下建立檔案bintray.gradle,然後將以下內容複製進去即可
group = PROJ_GROUP
version = PROJ_VERSION
project.archivesBaseName = PROJ_ARTIFACTID
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += configurations.compile
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
javadoc {
options{
encoding "UTF-8"
charSet 'UTF-8'
author true
version true
links "http://docs.oracle.com/javase/7/docs/api"
title "$PROJ_NAME $PROJ_VERSION"
}
}
artifacts {
archives sourcesJar
archives javadocJar
}
install {
repositories.mavenInstaller {
pom.project {
name PROJ_NAME
description PROJ_DESCRIPTION
url PROJ_WEBSITEURL
inceptionYear '2016'
packaging 'aar'
groupId PROJ_GROUP
artifactId PROJ_ARTIFACTID
version PROJ_VERSION
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
scm {
connection PROJ_VCSURL
url PROJ_WEBSITEURL
}
developers {
developer {
id DEVELOPER_ID
name DEVELOPER_NAME
email DEVELOPER_EMAIL
}
}
}
}
}
bintray {
user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : project.property('BINTRAY_USER')
key = project.hasProperty('bintrayKey') ? project.property('bintrayKey') : project.property('BINTRAY_KEY')
configurations = ['archives']
dryRun = false
publish = true
pkg {
userOrg = PROJ_USER_ORG //這個是你建立時的organization,必須要有,不然沒辦法找到指定路徑
repo = PROJ_USER_MAVEN
name = PROJ_NAME
licenses = ['Apache-2.0']
vcsUrl = PROJ_VCSURL
websiteUrl = PROJ_WEBSITEURL
issueTrackerUrl = PROJ_ISSUETRACKERURL
publicDownloadNumbers = true
version {
name = PROJ_VERSION
desc = PROJ_DESCRIPTION
vcsTag = PROJ_VERSION
gpg {
sign = true
}
}
}
}
- Module配置
在需要釋出到Jcenter的module(比如library)的build.gradle裡配置以下內容,必須在最後一行新增,否則報錯
apply from: '../bintray.gradle'
- gradle.propreties檔案的配置
BINTRAY_USER= 在bintray上的賬號名
BINTRAY_KEY= 在bintray上的API KEY
PROJ_USER_ORG=在bintray上的組織id
PROJ_USER_MAVEN=在bintray上的repo名字
PROJ_NAME=在bintray上的repo名字下的包名
PROJ_GROUP= groupId,自己配置
PROJ_VERSION=version,自己配置
PROJ_ARTIFACTID=artifactId
PROJ_WEBSITEURL=github上的url就好了,可以不填
PROJ_ISSUETRACKERURL=可以不填
PROJ_VCSURL=github上的ssh就好了,可以不填
PROJ_DESCRIPTION=描述,可以不填
DEVELOPER_ID=釋出人id,自己填
DEVELOPER_NAME=釋出人名字,自己填
DEVELOPER_EMAIL=釋出人郵箱,自己填
別人引用專案時的格式為
compile 'PROJ_GROUP:PROJ_ARTIFACTID:PROJ_VERSION'
上傳至JCenter
如果你到了這一步,那麼說明離成功已經很近了。接下來就是將專案上傳到JCenter
在studio的Terminal中依次執行下面程式碼gradlew install gradlew bintrayUpload
如果是第一次執行,那麼這個過程會很久,不用著急,慢慢等待。
不出意外,會在Terminal中看到BUILD SUCCESS.
如果出現401錯誤,那麼就是自己的配置檔案中的值沒有寫對,如果還不行,就檢測自己的使用者名稱和apikey是不是正確的。
上傳成功之後,即可在自己的組織下看到專案
然後點選進去,在右下角有個按鈕 add to jcenter
點選send,等待稽核通過,通過後,即可完成上傳
如果不點選add to jcenter ,那麼就無法通過compile 'xxx:xxx:xxxx'
這種方式進行引用專案
專案更新
上傳的庫進行升級的時候,須更改build.gradle下的version、versionCode、versionName,否則無法進行打包上傳。更改完之後重新執行上傳至Jcenter步驟。上傳完成可在專案主頁下看到更新的版本號。
至此,說明你的專案已經上傳到jcenter了。