發佈 Android Library 到 JCenter 從入門到放棄

来源:http://www.cnblogs.com/jpush88/archive/2017/05/25/6903766.html
-Advertisement-
Play Games

最近想倒騰一個小小的 UIKit 到 JCenter,為開源社區貢獻一點綿薄之力,於是就有了一系列慘無人道的踩坑史。好,接下來,直奔主題,以下是發佈流程。 發佈到 JCenter 發佈到 JCenter 需要以下幾個步驟。 註冊 Bintray 賬號並創建倉庫 Bintray 是 JCenter 庫 ...


最近想倒騰一個小小的 UIKit 到 JCenter,為開源社區貢獻一點綿薄之力,於是就有了一系列慘無人道的踩坑史。好,接下來,直奔主題,以下是發佈流程。

發佈到 JCenter

發佈到 JCenter 需要以下幾個步驟。

註冊 Bintray 賬號並創建倉庫

Bintray 是 JCenter 庫的運營商,首先要去這個網站註冊一下賬號 https://bintray.com/signup/oss

網上大多數教程會把你帶到註冊企業賬號的地方,這是第一個坑。

註冊完後創建一個倉庫:

填寫一下必填項即可:


在 Type 處選擇 Maven。接下來創建一個 Package:


註意下 name 這一欄


填上你要發佈的 Library 項目的名字。完成之後大概是這樣的:

插件配置

網上有很多教程是用 android-maven-gradle 插件來發佈 Library,甚至是官方推薦的 gradle-bintray-plugin,其實這兩個配置都比較複雜。下麵要推薦的是 bintray-release 插件,配置非常簡單。首先在項目的 build.gradle 加上:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.novoda:bintray-release:0.4.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

然後打開 Library 的 build.gradle,加入:

apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    lintOptions {
        abortOnError false
    }
}

publish {
    userOrg = 'KenChoi1992' // 改成你在 bintray 上註冊的用戶名
    groupId = 'cn.jiguang.imui' // 改成你的包名(影響別人引用的第一段)
    artifactId = 'chatinput' // 改成你的 Library 名字(影響別人引用的第二段)
    publishVersion = '0.0.1' // 版本號 (影響別人引用的第三段)
    desc = 'im uikit'
    website = 'https://github.com/jpush/imui.git'
}

完成了上面的配置之後,別人要引用你的 Library,就可以這樣:

// 由 groupId,artifcatId,version 三段組成
compile 'cn.jiguang.imui:chatinput:0.0.1'

檢查代理

在執行下一步之前,請確保 Android Studio 正確的配置了代理,因為大天朝要科學上網,你懂的。打開 Android Studio 的配置菜單:


點上面的 Check connection,在彈出的視窗輸入一個牆外網站:


然後點擊 OK,如果成功了,是這樣的:

運行任務

最後在 Android Studio 的終端運行:

./gradlew clean build bintrayUpload -PbintrayUser=Username -PbintrayKey=ApiKey -PdryRun=false

將上面的用戶名改成自己的,ApiKey 是從 bintray 網站上得到的:
點擊 Edit Profile,進入編輯資料界面:

然後點擊 API Key 即可查看:

如果執行完上述命令後,成功了,那麼恭喜你!你順利地發佈了自己的 Library,在別人的項目中,只要用一行代碼就可以引用你的庫,實在是高(裝)端(逼)大(必)氣(備),上檔次!請註意,如果失敗了,前方高能!非戰鬥人員撤退!

如果你失敗了!請不要驚訝,因為我也失敗了!!失敗的原因有很多,但是嘗試了許多解決方案之後,終於!……我放棄了!!而且嘗試了上述的三個插件都失敗了!!!所以我並不是標題黨……但是!儘管如此,如果輕易放棄,不是吾輩所為!所以我決定手!動!上!傳!

說是手動上傳,其實也用到了一個工具 release-android-library,在 Library 的 build.gradle 中配置一下:

apply plugin: 'com.android.library'

ext {
    PUBLISH_GROUP_ID = 'cn.jiguang.imui'
    PUBLISH_ARTIFACT_ID = 'chatinput'
    PUBLISH_VERSION = '0.0.1'
}

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.google.android:flexbox:0.2.5'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.android.support:support-v4:25.1.1'
    testCompile 'junit:junit:4.12'
}

apply from: 'https://raw.githubusercontent.com/blundell/release-android-library/master/android-release-aar.gradle'

主要是加入 ext 和 apply from 這兩個相關內容即可。然後在終端中執行命令:

./gradlew clean build generateRelease

完成後,在 build 文件夾下就會生成一個壓縮文件:

回到 bintray 的 package 下,點擊 New Version:

然後創建一個 version,名字和你要發佈的版本號一致,然後點擊確定,接著點擊上傳文件按鈕:

在頁面中上傳剛纔的壓縮文件:

請註意上面紅色方框,一!定!要!勾選這個 Checkbox,否則會發生奇妙的錯誤,別問我怎麼知道的!

然後點擊 Save Changes,接著點擊頁面中的 Publish 按鈕,這樣就發佈了!

接著回到 Package,將 Library 發佈到 JCenter。

點擊 Add to JCenter,點擊後輸入一下評論,然後點擊 OK 即可,等待幾個小時後的審核就可以了。到此為止,我們已經完成了發佈!但是!你以為這就完了?接下來介紹一個快捷,簡單到令人髮指的開源倉庫:JitPack

發佈到 JitPack

打開 JitPack 網站,使用 GitHub 賬號登錄即可,很方便,只需要簡單的兩步即可發佈到 JitPack。

  • 在 GitHub 上發佈一個版本

  • 把 GitHub 的倉庫地址粘貼到 JitPack,然後點擊 Look up 按鈕:

然後在從下麵的列表中選擇一個版本,然後點擊 Get it 即可!接下來,別人只需要在項目的 build.gradle 中加入:

    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

然後在 Module 的 build.gradle 中引用即可:

    dependencies {
        compile 'com.github.User:Repo:Tag'
    }

就是這樣,so easy !

總結

目前來說 JCenter 雖然是 Android 的預設倉庫,但是發佈的流程還是比較麻煩,而且發佈的過程是一個聞者傷心,見者流淚的辛酸血淚填坑史。JitPack 更加簡單快捷,使用的方式也相差無幾。順便一提,文中的 chatinput 是一個 IM UIKit,可以方便地為聊天界面集成文字,錄音、發圖片、視頻消息。另外我們也發佈了 imui,可以方便地集成聊天界面功能,使用方式:

compile 'cn.jiguang.imui:imui:0.0.1'

更多信息請登錄我們的 GitHub 地址:https://github.com/jpush/imui
後續我們也會不斷地完善和維護,歡迎大家提 PR。


作者:KenChoi - 極光開發者
原文:發佈 Android Library 到 JCenter 從入門到放棄
知乎專欄:極光日報


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 描述:這段時間給公司做個後臺管理系統,功能差不錯實現了,回過頭來吧登錄頁完善下,剛好碰到了‘記住用戶名‘這個小東西。之前有看過不少代碼,都沒有太留意這部分,這次自己從頭至尾做,那就好好的處理下。 目的:用戶在登錄的時候勾選“記住我”,登錄、退出之後,用戶再次來到登錄頁,預設填寫上次登錄的用戶信息。 ...
  • 在也個html頁面中加入bootstrap是很方便,就是一般的將css和js文件通過Link和Script標簽就行。 那麼在一個用vue-vli生成的前端項目中如何加入?因為框架不一樣了,略微要適應一下。 腳手架生成項目 執行命令用webpack模板生成一個名為vuestrap的項目(名字任意) 在 ...
  • 六邊形 今天看到別人分享的六邊形學習 自己也試著做了一下 原理: 圖片旋轉 transfrom:rotate(120deg); 溢出隱藏 overflow:hidden; 我們要用三層div來實現旋轉效果 第一次 rotate(120deg) 第二次 rotate(-60deg) 第三次 rotat ...
  • ...
  • 作者寫的很有意思拿出來和大家分享 作者:Shadow鏈接:https://www.zhihu.com/question/19553117/answer/114306637來源:知乎著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。 你是否好奇標識瀏覽器身份的User-Agent,為 ...
  • 如下圖點擊Assers.xcassets,點擊下方的“+”,即可通過下麵方法增加launchimage 點擊launchimage,右邊出現方格 將圖片拖入方格中,Main Interface清空, Launch Images Source選擇Launchimage Launch Screen Fi ...
  • SoftReference可以用於bitmap緩存 WeakReference 可以用於handler ...
  • 支付寶插件 2016年11月的時候支付寶進行了一次更新,支付寶的SDK升級到2.0版本。以前在app中使用支付寶進行支付叫做移動支付,11月之後更名為APP支付。 1 根據支付寶的說明文檔的建議,為保證安全,簽名都放到後端去做,前端只需要接收後臺傳入簽名字元串,使用該插件調用支付寶SDK完成支付 2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...