現(xiàn)在是個(gè)互相協(xié)作的互聯(lián)網(wǎng)世界称诗,我們開(kāi)發(fā)項(xiàng)目會(huì)引用系統(tǒng)sdk和第三方sdk痹愚,同時(shí)我們也可能是sdk提供方旗笔。如果我們自己開(kāi)發(fā)sdk,要通過(guò)什么方式發(fā)布才能更方便別人使用斩箫?這里總結(jié)一下android利用github制作maven遠(yuǎn)程倉(cāng)庫(kù)發(fā)布sdk的方法吏砂。
1.制作本地maven倉(cāng)庫(kù)
module build.gradle文件添加代碼段:
// 發(fā)布maven配置
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.systoon'
pom.artifactId = "TNLiveDetect-Android"
pom.version = "1.0.0"
pom.packaging = 'aar'
repository(url: uri("${rootProject.projectDir}/repo"))
}
}
}
project build.gradle文件添加代碼段:
allprojects {
repositories {
google()
jcenter()
maven {
url uri("${rootProject.projectDir}/repo")
}
}
}
build項(xiàng)目撵儿,Gradle窗口對(duì)應(yīng)module出現(xiàn)uploadArchives操作項(xiàng)
雙擊執(zhí)行uploadArchives乘客,項(xiàng)目repo目錄生成aar和pom文件
到這里,本地maven倉(cāng)庫(kù)就算制作完成了淀歇,本地項(xiàng)目可以直接引用sdk編譯生成apk
dependencies {
implementation 'com.systoon:TNLiveDetect-Android:1.0.0'
}
但本地maven倉(cāng)庫(kù)只能本地項(xiàng)目自己用易核,我們的目的是讓世界的所有人都能夠引用自己的sdk
2.制作遠(yuǎn)程maven倉(cāng)庫(kù)
前提需要一個(gè)github賬號(hào),創(chuàng)建一個(gè)項(xiàng)目和分支(具體操作細(xì)節(jié)不表)
將本地項(xiàng)目repo目錄下所有文件上傳至github所屬項(xiàng)目(一般git簡(jiǎn)單操作就可實(shí)現(xiàn))
此時(shí)遠(yuǎn)程maven就算制作完成浪默,sdk發(fā)布上線了
3.外部如何調(diào)用sdk
與google和jcenter等公共maven倉(cāng)庫(kù)不同牡直,我們自己做的maven倉(cāng)庫(kù)缀匕,調(diào)用方需要做些簡(jiǎn)單配置
allprojects {
repositories {
google()
jcenter()
maven {
url url 'https://raw.githubusercontent.com/systoon/TNLiveDetect-Android/master'
}
}
}
注意,不少人在此處遇坑碰逸,倉(cāng)庫(kù)地址用github.com乡小,導(dǎo)致sdk下載失敗。
有人問(wèn)了饵史,倉(cāng)庫(kù)地址為什么是raw.githubusercontent.com满钟,而不是github.com,可能github出于網(wǎng)絡(luò)安全考慮胳喷,將網(wǎng)頁(yè)瀏覽和文件下載分成兩個(gè)域名地址湃番。
4.maven倉(cāng)庫(kù)的選擇
眾所周知,mavenCentral吭露、google吠撮、jcenter、jitpack讲竿、阿里云maven等等常用的倉(cāng)庫(kù)有很多泥兰,我們是否可以做其他選擇?
- google戴卜、mavenCentral是androidstudio的默認(rèn)倉(cāng)庫(kù)逾条,但國(guó)內(nèi)訪問(wèn)速度慢,甚至需要翻墻投剥。
- jcenter是由JFrog公司提供的Bintray中的Java倉(cāng)庫(kù)师脂,功能強(qiáng)大,免費(fèi)試用一個(gè)月江锨,之后需要收費(fèi)吃警。
- 阿里云鏡像倉(cāng)庫(kù),只是mavenCentral啄育、jcenter酌心、google的復(fù)制品,只適合訪問(wèn)lib挑豌,沒(méi)有托管lib的功能安券。
- 阿里云制品倉(cāng)庫(kù),其實(shí)是私有倉(cāng)庫(kù)氓英,只能企業(yè)內(nèi)部使用侯勉。
- jitpack是由github提供的庫(kù),相對(duì)不錯(cuò)铝阐,但需要代碼上傳和在線編譯址貌,不利于代碼的私密性和錯(cuò)誤調(diào)試,如果是開(kāi)源項(xiàng)目可以考慮。
- 公司利用自己的服務(wù)器托管maven庫(kù)练对,成本太高遍蟋。
綜上對(duì)比,從網(wǎng)絡(luò)限制螟凭、免費(fèi)虚青、公共訪問(wèn)、代碼安全螺男、成本等幾方面考慮挟憔,利用github的托管功能做自己的遠(yuǎn)程maven倉(cāng)庫(kù),作者認(rèn)為是最佳選擇烟号。另外绊谭,號(hào)稱國(guó)內(nèi)github的碼云也提供類似功能,大家也可以考慮汪拥。
好了达传,文章到此結(jié)束,希望對(duì)大家有用迫筑,歡迎關(guān)注公眾號(hào):android-tech宪赶,文章轉(zhuǎn)載請(qǐng)注明出處,謝謝脯燃。