1. 程式人生 > >利用Gradle釋出Android Studio專案到JCenter

利用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了。