1. 程式人生 > >關於《在AndroidStudio中,使用Gradle打包aar到JCenter倉庫!完整版教程!填補各種坑》更新驗證

關於《在AndroidStudio中,使用Gradle打包aar到JCenter倉庫!完整版教程!填補各種坑》更新驗證

七.在JCenterLib這個Module中新建一個檔案,名為bintray.gradle

內容為:

[javascript] view plain copy
  1. apply plugin: 'com.github.dcendents.android-maven'
  2. apply plugin: 'com.jfrog.bintray'
  3. group = PROJ_GROUP  
  4. version = PROJ_VERSION  
  5. project.archivesBaseName = PROJ_ARTIFACTID  
  6. task sourcesJar(type: Jar) {  
  7.     from android.sourceSets.main.java.srcDirs  
  8.     classifier = 'sources'
  9. }  
  10. task javadoc(type: Javadoc) {  
  11.     source = android.sourceSets.main.java.srcDirs  
  12.     classpath += project.files(android.getBootClasspath().join(File.pathSeparator))  
  13. }  
  14. task javadocJar(type: Jar, dependsOn: javadoc) {  
  15.     classifier = 'javadoc'
  16.     from javadoc.destinationDir  
  17. }  
  18. artifacts {  
  19.     archives javadocJar  
  20.     archives sourcesJar  
  21. }  
  22. javadoc {  
  23.     options{  
  24.         encoding "UTF-8"
  25.         charSet 'UTF-8'
  26.         author true
  27.         version true
  28.         links "http://docs.oracle.com/javase/7/docs/api"
  29.     }  
  30. }  
  31. install {  
  32.     repositories.mavenInstaller {  
  33.         // This generates POM.xml with proper parameters
  34.         pom.artifactId = PROJ_ARTIFACTID  
  35.         pom {  
  36.             project {  
  37.                 description PROJ_DESCRIPTION  
  38.                 packaging 'aar'
  39.                 name PROJ_NAME  
  40.                 url PROJ_WEBSITEURL  
  41.                 licenses {  
  42.                     license {  
  43.                         name LICENSE_NAME  
  44.                         url LICENSE_URL  
  45.                     }  
  46.                 }  
  47.                 developers {  
  48.                     developer {  
  49.                         id DEVELOPER_ID  
  50.                         name DEVELOPER_NAME  
  51.                         email DEVELOPER_EMAIL  
  52.                     }  
  53.                 }  
  54.                 scm {  
  55.                     connection PROJ_VCSURL  
  56.                     developerConnection PROJ_VCSURL  
  57.                     url PROJ_WEBSITEURL  
  58.                 }  
  59.             }  
  60.         }  
  61.     }  
  62. }  
  63. Properties properties = new Properties()  
  64. properties.load(project.rootProject.file('local.properties').newDataInputStream())  
  65. bintray {  
  66.     user = properties.getProperty("bintray.user")  
  67.     key = properties.getProperty("bintray.apikey")  
  68.     configurations = ['published','archives']  
  69.     publish = true
  70.     pkg {  
  71.         repo = "maven"
  72.         name = PROJ_NAME  
  73.         desc = PROJ_DESCRIPTION  
  74.         websiteUrl = PROJ_WEBSITEURL  
  75.         issueTrackerUrl = PROJ_ISSUETRACKERURL  
  76.         vcsUrl = PROJ_VCSURL  
  77.         licenses = ["Apache-2.0"]  
  78.         publicDownloadNumbers = true
  79.     }  
  80. }  

    *注:此檔案中規定了生成javadoc的編碼格式為utf-8,所以大家在使用各種IDE時為了避免各種亂碼問題,應在設定中將工作空間的編碼設定為統一採用utf-8編碼.

八.同樣在JCenterLib這個Module下新建一個名為gradle.properties的檔案

內容為:

[javascript] view plain copy
  1. PROJ_GROUP=com.github.ls1110924.library  
  2. PROJ_VERSION=1.0.0  
  3. PROJ_NAME=JCenterLib  
  4. PROJ_WEBSITEURL=https://github.com/ls1110924/JCenterDemo
  5. PROJ_ISSUETRACKERURL=https://github.com/ls1110924/JCenterDemo/issues
  6. PROJ_VCSURL=https://github.com/ls1110924/JCenterDemo.git
  7. PROJ_DESCRIPTION=A Test Lib  
  8. PROJ_ARTIFACTID=JCenterLib  
  9. LICENSE_NAME='The Apache Software License, Version 2.0'
  10. LICENSE_URL='http://www.apache.org/licenses/LICENSE-2.0.txt'
  11. DEVELOPER_ID=ls1110924  
  12. DEVELOPER_NAME=A Shuai  
  13. [email protected]  

    我先依次解釋一下每個條目的意義

    PROJ_GROUP 為你上傳的構件的Group,如compile 'com.Android.support:appcompat-v7:22.2.0'中的com.android.support

    PROJ_VERSION 為你此次上傳構件的版本號,如compile 'com.android.support:appcompat-v7:22.2.0'中的22.2.0,以後更新構件重新上傳的時候只需要修改這裡就好。

    PROJ_NAME 為上傳到你bintray的maven倉庫的倉庫名,即他會在你的maven倉庫中新建一個子倉庫,並使用這個值作為倉庫名。

    PROJ_WEBSITEURL 為你的工程網站的url,一般為你的Github專案地址,如https://github.com/ls1110924/LightUtils

    PROJ_ISSUETRACKERURL 為你的工程issue的url,一般為https://github.com/ls1110924/LightUtils/issues

    PROJ_VCSURL 為你的專案版本控制系統的url,一般為https://github.com/ls1110924/LightUtils.git,切不可忘記最後面的.git

    PROJ_DESCRIPTION 為你的專案描述,大家隨意填寫

    PROJ_ARTIFACTID 為你的構件ID,如如compile 'com.android.support:appcompat-v7:22.2.0'中的appcompat-v7

    LICENSE_NAME和LICENSE_URL保持不變即可

    DEVELOPER_ID為開發者ID,大家隨意填寫

    DEVELOPER_NAME為開發者姓名,隨意填寫

    DEVELOPER_EMAIL為開發者郵箱,最後填寫正確的郵箱,什麼郵箱都可以

    *注意:這裡最好把構件ID的命名和你要打包上傳的Module同名,如若不喜歡Module名作為構件ID,下面教大家動態修改Module名,這裡必須同名是因為一會的上傳任務是預設使用Module名作為構件ID的,這裡宣告的構件名就沒有了效果。

    這時咱們上傳的構件依賴就為  complile 'com.github.ls1110924.library:JCenterLib:1.0.0'

    *這裡因為gradle.properties檔案是咱們個人的一些私人資訊配置,一般不會同步到Github的遠端倉庫上,這裡需要在JCenterLib這個Moduel的.gitignore檔案配置忽略上傳gradle.properties這個檔案

[javascript] view plain copy
  1. /gradle.properties  

九.有心的旁友可能已經注意到第七步中的user和key還沒有配置

    其實這兩個值就是我們第二步中申請bintray的UserID和分配的APIKey

    開啟專案根目錄下的local.properties檔案,這個檔案專案預設提供了忽略,所以可以把一些非常私人的資料放在這裡

[javascript] view plain copy
  1. bintray.user=ls1110924  
  2. bintray.apikey=xxxxxxxxxxxxxxxxxxxxx  

十.Module改名

    如果一些人不喜歡使用Module名作為PROJ_ARTIFACTID構件ID的使用者可以看這一步,無所謂的朋友可以跳過這一步

    開啟專案根目錄的settings.gradle檔案,加一句

[javascript] view plain copy
  1. def submoduleProject = project(':JCenterLib')  
  2. submoduleProject.name = 'jcenter'

    JCenterLib為我們原始的Module名,現在動態改為jcenter,修改後的setting.gradle檔案內容為

[javascript] view plain copy
  1. include ':app'':JCenterLib'
  2. def submoduleProject = project(':JCenterLib')  
  3. submoduleProject.name = 'jcenter'
    這是這個Module雖然目錄還為JCenterLib,但是它實際的名字已經變成了jcenter,所以這時候app這個Module繼續引用JCenterLib就會報錯,所以應修改為app這個Module

下的build.gradle檔案中的依賴,

[javascript] view plain copy
  1. complile project(':JCenterLib')  

修改為 [javascript] view plain copy
  1. compile project(':jcenter')  

    同時修改JCenterLib這個Module中gradle.properties中的

[javascript] view plain copy
  1. PROJ_ARTIFACTID=jcenter