如何把開源項目發佈到Jcenter

轉載自:https://www.jianshu.com/p/f66972f0607a
首先咱們應該註冊一個JFrog Bintray的帳號
Jfrog Bintray官網

這裏咱們能夠注意到那個綠色的按鈕,START YOUR FREE TRIAL。註冊嗎,多簡單的一件事啊。點了直接進去註冊。註冊完以後,直接開整,到最後發佈的時候。你發現你會一直報錯,我明明按照網上一步一步來的,怎麼會報錯。真正註冊用於開發者的,是下面哪一行小字(我真的不明白爲啥要那麼不明顯),For Open Source Distribution Sign Up Here,你們千萬不要搞錯了。java

接下來輸入按照註冊的要求進行填寫就行了,ps:一些郵箱不支持,例如163和qq。這裏我是用gmai註冊的,沒有的話,你們不妨去註冊一個,如今註冊gmail須要使用手機了。選擇國家地區代碼的時候並找不到中國,前面國家隨便選一個,而後直接在你手機前面加上86就好了。android

註冊成功,就能夠看到咱們的首頁了。點擊Edit Profile,若是你發現,你和我同樣是七個那麼註冊成功。git

Edit Profile界面
github

這裏咱們須要注意的信息,一個是你註冊的帳號,另外一個是API Key,爲接下來發布作準備。web

準備一個須要發佈的Android Studio項目
建立一個Android Studio項目,這裏咱們就是用默認的Module - app。如今項目的Build.gradle文件中添加須要須要使用到的依賴。apache

buildscript {
repositories {
  jcenter()
}
dependencies {
  classpath'com.android.tools.build:gradle:2.3.0'
  classpath'com.github.dcendents:android-maven-gradle-plugin:1.5'
  classpath'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'
  // NOTE: Do not place your application dependencies here; they belong
  // in the individual module build.gradle files
  }
}
allprojects {
  repositories {
    jcenter()
  }
}
task clean(type: Delete) {
  deleterootProject.buildDir
}

有兩點點很是重要,第一點就是gradle build tools的版本設置成1.1.2以上,由於之前的版本有嚴重的bug,咱們將使用的是最新的版本2.3.0。第二點是根據你Gradle的版本,使用不一樣版本的android-maven-gradle-plugin。這裏個人Gradle版本是3.3,因此使用的是com.github.dcendents:android-maven-gradle-plugin:1.5,具體版本直接對應的關係請到以下網站去查詢,android-maven-gradle-plugin。
api

版本直接對應關係服務器

接下來咱們將修改local.properties。在裏面定義api key的用戶名以及被建立key的密碼,用於bintray的認證。之因此要把這些東西放在這個文件是由於這些信息時比較敏感的,不該該處處分享,包括版本控制裏面。幸運的是在建立項目的時候local.properties文件就已經被添加到.gitignore了。所以這些敏感數據不會被誤傳到git服務器。app

bintray.user=YOUR_BINTRAY_USERNAME
bintray.apikey=YOUR_BINTRAY_API_KEY

bintray.user對應的就是你註冊bintray時的帳號,bintray.apikey對應的就https://bintray.com/profile/edit頁面中的API KEY,點擊進入還須要輸入你註冊時的密碼。輸入完成直接保存下。
接下來,打開咱們module下的build.gradle文件,以下:maven

apply plugin:'com.android.library'     //建議使用library,畢竟你是給別人用的
apply plugin:'com.github.dcendents.android-maven'
apply plugin:'com.jfrog.bintray'

version="1.0.2"           // 對應的版本

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        // 請注意這裏沒有Application Id。別人在他的module下的build.gradle文件依賴中,添加你的你開源項目。你的
        //defaultConfig中有Application Id,別人也會有啊,那麼有兩個Application Id必然會報錯
        minSdkVersion15
        targetSdkVersion25
        versionCode
        versionName"1.0"
        testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir:'libs',include: ['*.jar'])
    compile'com.android.support:appcompat-v7:25.3.1'
    testCompile'junit:junit:4.12'
}

defsiteUrl='https://github.com/x1ao3eng/GithubPro' // github上項目的地址
defgitUrl='https://github.com/x1ao3eng/GithubPro.git' //github上項目的git地址
group='com.x1aomeng.githubpro'
//通常用你項目的Application Id,這裏通常用到哪裏呢。
//舉一個使用RecyclerView須要添加的依賴,compile'com.android.support:recyclerview-v7:25.3.1'
//com.android.support對應的就是上面的group,recyclerview-v7對應的就是module名字,25.3.1對應的是上面的version
install{
    repositories.mavenInstaller{
        pom {
            project{
                packaging'aar'
                // Add your description here
                name'Android Jcenter Test'
                url siteUrl
                // Set your license
                licenses {
                    license {
                        name'The Apache Software License, Version 2.0'
                        url'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers{
                    developer {
                        id'huangxiaomeng'//填寫的一些基本信息
                        name'x1ao3eng'
                        email'x1ao3eng@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) {
    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
}
Properties properties =newProperties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    // 這裏就使用到了,你以前在local.properties中添加的信息
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    configurations = ['archives']
    pkg {
        repo ="maven"
        name ="GithubPro_for_jcenter_test"//發佈到JCenter上的項目名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish =true
    }
}

完成這些以後先Rebuild或者Sync下你的Project,沒什麼問題的話。就能夠把你項目生成到本地的倉庫中了,Android Studio中默認即在Android\sdk\extras\android\m2repository這裏,能夠打開你Android Studio下方的Terminal 或則在Project下打開命令行,輸入一下(可能還須要下載一遍Gradle):

gradlew install

把項目上傳到Bintray
把項目上傳到Bintray,須要plugin的支持,在project目錄下build.gradle文件的dependencies中添加(上面已添加過):

classpath'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.5'

接下來執行以下命令行,完成上傳:

gradlew bintrayUpload

這裏咱們通常會在進度97%或者98%卡住一下子,ps:須要FQ,出去抽根菸或者倒杯咖啡。上傳成功後,咱們打開bintray上倉庫的界面就能夠看到咱們的項目CithubPro_for_jcenter。

倉庫界面

到這一步已經接近尾聲了,可是咱們的項目尚未發佈到Jcenter,只是在你本身的倉庫中。別人若是想要使用你的開源項目,須要在project目錄下添加以下代碼:

allprojects {
    repositories {
        jcenter()
        maven { url'https://dl.bintray.com/huang3eng/maven/'}
    }
}

而後在相應module目錄下的build.gradle中添加:

compile 'com.x1aomeng.githubpro:app:1.0.2'

雖然這樣已經可使用,可是仍是有諸多不便的,若是有使用十個不一樣人寫的開源項目,那麼不是要先添加十個別人maven倉庫的地址。Android Studio如今默認已經關聯到Jcenter這個遠程倉庫,因此咱們最好仍是發佈到Jcenter上。打開你的項目,點擊Add to Jcenter,什麼也不須要填,直接Send就行了。接下來須要經過管理員的審覈都行了(我這邊審覈用了四個多小時),通常你的項目沒有什麼中文或者全英語註釋均可以經過(終於知道爲啥那些國內開源項目也不多會有中文註釋)。

審覈完成後,你會收到一份郵件讓你確認,審覈成功以後,你會發現項目中Linked to會多了一個Jcenter,這說明你的項目已經成功發不到Jcenter上了。我只能告訴你,你成功了與世界接軌的第一步。

總結
每一個人的開發環境是不同的,使用的版本也多是不同的。因爲種種的不一樣,可能照着個人步驟,你會出現報錯。網上將開源項目發佈到Jcenter的文章也很多,使用的方式也可能不一樣。我這邊文章主要把我本身踩過的一些坑記錄下來,但願對大家哪怕只有一點點的幫助。第一次寫簡書,感受又把整個過程梳理了一遍。若是有不對的地方或者更好的方法,請告訴我。

做者:奧斯特洛夫斯基c 連接:https://www.jianshu.com/p/f66972f0607a 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。

相關文章
相關標籤/搜索