Android Studio發佈項目到jcenter,一行代碼引入Module

来源:http://www.cnblogs.com/yishaochu/archive/2017/09/08/7495703.html
-Advertisement-
Play Games

前面我們使用自己封裝的okhttp項目時候,只需要app/build.gradle文件中加一行代碼就能使用項目。 那是因為我之前就把封裝的module提交到了jcenter伺服器。所以android sutdio把從jcenter伺服器把類庫下載下來。 提交項目到jcenter 當我們做好一個輪子的 ...


前面我們使用自己封裝的okhttp項目時候,只需要app/build.gradle文件中加一行代碼就能使用項目。

compile 'com.ansen.http:okhttpencapsulation:1.0.1'

那是因為我之前就把封裝的module提交到了jcenter伺服器。所以android sutdio把從jcenter伺服器把類庫下載下來。

提交項目到jcenter

當我們做好一個輪子的時候,或者項目中有一些好的module想分享給別人用的時候,首先把代碼提交到github(全球男性交友平臺)上開源,但是這還不夠,別人拿你的代碼作為module依賴太麻煩了,比較酷的方法應該是一行代碼引用。

首先我們得有一個jcenter賬號

這個網站註冊有點坑爹,有兩種方式(企業版跟個人免費版),個人版的項目必須要開源,個人註冊地址如下:

https://bintray.com/signup/oss

一定要註意不要註冊了企業版,沒法直接切換成個人版,必須要得試用期過重新註冊。用我貼的鏈接註冊就行。還有註冊郵箱不能是國內163郵箱或者qq郵箱,我用的是google郵箱註冊的。

上傳項目到jcenter

jcenter上創建Repository

登錄jcenter賬號,進入用戶首頁,點擊Add New Repository按鈕。
jcenter_main

進入Add New Repository頁面,Name輸入框輸入module名稱(okhttpencapsulation),Type選擇Maven。然後點擊最後的Create按鈕,Repository就創建成功了。
create_repository

Android Studio中添加代碼

項目的build.gradle中加入如下代碼:

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'

修改後效果圖如下:
project_build

修改要上傳的module下的build.gradle。例如我這邊路徑是:OkHttpEncapsulation/okhttpencapsulation/build.gradle。在文件尾部增加如下代碼:

// 這裡添加下麵兩行代碼。
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

// 定義兩個鏈接,下麵會用到。
def siteUrl = 'https://github.com/ansen666/OkHttpEncapsulation' // 項目主頁。
def gitUrl = 'https://github.com/ansen666/OkHttpEncapsulation.git' // Git倉庫的url。

group = "com.ansen.http"// 唯一包名,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的com.ansen.http就是這裡配置的。
version = "1.0.1"//項目引用的版本號,比如compile 'com.ansen.http:okhttpencapsulation:1.0.1'中的1.0.1就是這裡配置的。

install {
    repositories.mavenInstaller {
        // 生成pom.xml和參數
        pom {
            project {
                packaging 'aar'
                // 項目描述,複製我的話,這裡需要修改。
                name 'okhttpencapsulation'// 可選,項目名稱。
                description 'okhttp project describe'// 可選,項目描述。
                url siteUrl // 項目主頁,這裡是引用上面定義好。

                // 軟體開源協議,現在一般都是Apache License2.0吧,複製我的,這裡不需要修改。
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

                //填寫開發者基本信息,複製我的,這裡需要修改。
                developers {
                    developer {
                        id 'ansen' // 開發者的id。
                        name 'ansen' // 開發者名字。
                        email '[email protected]' // 開發者郵箱。
                    }
                }

                // SCM,複製我的,這裡不需要修改。
                scm {
                    connection gitUrl // Git倉庫地址。
                    developerConnection gitUrl // Git倉庫地址。
                    url siteUrl // 項目主頁。
                }
            }
        }
    }
}

// 生成jar包的task,不需要修改。
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

// 生成jarDoc的task,不需要修改。
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    // destinationDir = file("../javadoc/")
    failOnError false // 忽略註釋語法錯誤,如果用jdk1.8你的註釋寫的不規範就編譯不過。
}

// 生成javaDoc的jar,不需要修改。
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
artifacts {
    archives javadocJar
    archives sourcesJar
}

// 這裡是讀取Bintray相關的信息,我們上傳項目到github上的時候會把gradle文件傳上去,所以不要把帳號密碼的信息直接寫在這裡,寫在local.properties中,這裡動態讀取。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    user = properties.getProperty("bintray.user") // Bintray的用戶名。
    key = properties.getProperty("bintray.apikey") // Bintray剛纔保存的ApiKey。

    configurations = ['archives']
    pkg {
        repo = "okhttpencapsulation"  //Repository名字 需要自己在bintray網站上先添加
        name = "okhttpencapsulation"// 發佈到Bintray上的項目名字,這裡的名字不是compile 'com.ansen.library:circleimage:1.0.1'中的circleimage。
        userOrg = 'anhui'//Bintray的組織id
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true // 是否是公開項目。
    }
}

都有註釋,當有時候的時候直接複製代碼就行。然後修改一些值。在最後的bintray裡面有從local.properties文件中獲取用戶名跟apikey。這是保密信息,我們不能暴露給別人,build.gradle文件我們會提交到git伺服器上,但是local.properties文件不會提交。

打開OkHttpEncapsulation/local.properties文件,在尾部添加兩行,這個key是我隨便修改過的,是個錯誤的key,需要自己去替換:

bintray.user=anhui
bintray.apikey=ac8137c9138a8b49a18a323260041fcf1f75a6f

user是我們註冊的名字,apikey需要去jcenter官網查看。進入修改用戶界面,點擊左側apikey按鈕,然後輸入密碼就能看到了。把這個key複製到local.properties中替換掉。
apikey

gradle命令上傳

上傳項目到jcenter需要用到gradle命令,首先把gralde加入到環境變數。mac下加入環境變數教程,windows環境不會加入環境變數的自行搜索下:

http://blog.csdn.net/u013424496/article/details/52684213

在android studio底部有個Terminal的按鈕。點擊它進入Terminal界面。
terminal

輸入命令:

gradle install

出現BUILD SUCCESSFUL就表示成功了。

繼續輸入命令,提交項目到bintray:

gradle clean build bintrayUpload

這個命令會提示上傳進度,上傳到100%就成功了最後也會出現BUILD SUCCESSFUL。到了這一步你的進度條已經到了90%了,就差最後一步了。

Add to JCenter

我們提交成功了之後呢趕緊打開jcenter官網看看有沒有成功。在首頁點擊我們的package(okhttpencapsulation)名稱,在這個頁面應該就能看到我們提交的項目了,點擊項目進入項目詳細頁。
project_main
我們可以看到版本,看到gradle線上引用的代碼,還能切換到Maven跟lvy方式。然後右邊有個Add to JCenter,每個項目剛剛提交都必須要審核的,所以我們點擊Add to JCenter去進行審核。審核成功就能一行代碼引用這個module啦。

源碼下載


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

-Advertisement-
Play Games
更多相關文章
  • 近日壓力山大,找找樂子,看有沒有好的東西可以研究研究,剛好看到我的螞蟻森林居然可以種樹了,很好奇,難道馬雲真會種樹? 二話不說,利用本人專業所學(遙感專業,有木有同行??),來監測監測那些樹木長得如何了?是不是真有,二話不說,直接上圖!! 註意,這裡是螞蟻森林種植的大概範圍,我從高德地圖查詢到的,內 ...
  • [1]坐標定位 [2]四個坐標系 [3]圖形變換 [4]居中變換 ...
  • 說到原生瀏覽器事件函數處理相容,大家可能會想到addEventListener().....以及attachEvent()....相信看了下文,會給你提供不一樣的更優雅的實現方式,希望下文會對你有幫助~~~~~ 總結:以上方法也是jquery源碼中Event模塊中add的方法的借鑒來源,資料來源於此 ...
  • 創建畫布,驗證瀏覽器相容性我就省去了,也很簡單網上有代碼。 然就是蛇對象 食物 移動 控制方向 吃到食物 吃到自己 基本功能大概就是這樣。可能還不算完美,後面有時間繼續優化一下! ...
  • 撰文為何 身為一個前端開發者,ECMAScript(以下簡稱ES)早已廣泛應用在我們的工作當中。瞭解ECMA機構流程的人應該知道,標準委員會會在每年的6月份正式發佈一次規範的修訂,而這次的發佈也將作為當年的正式版本。以後的改動,都會基於上一版本進行修改。所以,我們這次就基於ES6的版本對ES7、ES ...
  • 前幾天看到一張圖片,倔強的嚮日葵。(BGM,《倔強》) 看著挺有感觸,就想用CSS做一個嚮日葵。 最終效果圖如下: 演示地址: http://suohb.com/work/sunflower.html 主要的難點就在花瓣的處理上,css暫時沒有做到這樣的尖角圓弧。 我想到的做法是用兩個橢圓的部分弧度 ...
  • <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #pbox{ width: 100%; height:100%; } #box{ width: 200px; heigh ...
  • <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0; } .box { width: 350px; height: 350px; ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...