grade中遠(yuǎn)程倉庫的so導(dǎo)入

工作記錄:今天偶遇需求 上傳so和jar為三方庫,使其他用戶可以使用gradle 配置獲取三方so庫

之前并沒有接觸過maven與jcenter的小白果斷的google了一下

收獲1.jcenter與maven都可以自行配置上傳資源庫,但是流程復(fù)雜,第一次配置還需要審核,另外就是項(xiàng)目必須開源,目前還未找到不開源的方式(如有錯(cuò)誤或其他解決方法,望不吝賜教)

有興趣的可以去看看這些資料:

http://www.cnblogs.com/qianxudetianxia/p/4322331.html

http://blog.csdn.net/maosidiaoxian/article/details/43148643

收獲2.另一種方式是自己搭建私服來上傳資源庫,這種方式一勞永逸,不需要開源,但是耗費(fèi)成本較高。

就在糾結(jié)要不要自己去搭建maven私服的時(shí)候意外發(fā)現(xiàn)公司內(nèi)部已有牛人搭建了一個(gè)對(duì)外的maven私服。

剩下的就是點(diǎn)點(diǎn)手指頭上傳了 。當(dāng)我以為這個(gè)任務(wù)就這么結(jié)束了的時(shí)候,事實(shí)證明了我的天真。。。

首先jar包在上傳以后使用起來很簡單

? a.添加maven私服地址

? ?在build.gradle中添加maven{url "私服地址"},如下:

? ?allprojects{

? ? ? ? ? ? ? repositories {

? ? ? ? ? ? ? ? ?jcenter()

? ? ? ? ? ? ? ? ? ? ? ?maven {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? url"http://mvnrepo.********.com/mvn/repository"

? ? ? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ?}

b.在依賴中添加 GAV,如下:

dependencies{

? ? ? ? compile fileTree(include:'*.jar',dir:'libs')

? ? ? ? compile 'com.demo.api.android:test:0.0.1'

}

簡簡單單兩步就將一個(gè)jar引入了工程

但是so庫并沒有這么簡單。。。。。。。。。。

但是so庫并沒有這么簡單。。。。。。。。。。

但是so庫并沒有這么簡單。。。。。。。。。。

原因:導(dǎo)入后并不能被正確的識(shí)別

首先官方推薦做法應(yīng)該是so庫與jar里的源碼一起打成aar包再上傳到maven,偏偏在下這邊的需求目前是已有jar包,需要單獨(dú)添加依賴的so庫。遇到問題解決問題乃人生一種樂趣。二話不說繼續(xù)找google爸爸。

功夫不負(fù)有心人,在一堆糾結(jié)本地導(dǎo)入so的帖子中找到一位大神的解決方案。

收獲2.大神提供了一個(gè)gradle插件,叫做android-native-dependencies

傳送門:https://github.com/nhachicha/android-native-dependencies

實(shí)現(xiàn)原理應(yīng)該是gradle中獲取到so后復(fù)制到特定的目錄下,但是需要引入插件比較不方便而且配置會(huì)隨著so增多而變復(fù)雜。

有沒有更加簡單的方式,答案當(dāng)然是yes

就在找尋插件的過程中有位在stackoverflow上的提問用戶提供的一些信息吸引了我

原文:http://stackoverflow.com/questions/35133530/how-to-add-an-so-file-to-an-android-studio-1-5-project

收獲3.文中提到另一種方案:將so打包為jar庫,然后再引入。提問者自己解壓apk后得到so的路徑為lib/armeabi*/*.so 。另外在回答者的gradle腳本中得到了驗(yàn)證,總結(jié)為:將so打包到xxx.jar下,目錄為lib/armeabi*/*.so.再將xxx.jar引入就可以了。也就是將so的導(dǎo)入方式轉(zhuǎn)變?yōu)榱艘粋€(gè)普通的jar包的方式,具體參考上文。


至此,本人的需求可以通過如下實(shí)現(xiàn):

1.將so文件帶上級(jí)文件夾一起統(tǒng)一拷貝至lib目錄下并打包為armeabi.jar,目錄結(jié)構(gòu)參考:


-/lib

---/armeabi

------aaaa.so

------bbb.so

---/armeabi_v8

------aaaa.so

------bbb.so



2.上傳armeabi.jar至maven中心庫私服

3.項(xiàng)目中引入


結(jié)尾:雖然本文記錄的解決方案適用范圍比較小,只限于需要將jar包和so包分開上傳maven中心庫的需求,但是在解決這個(gè)問題的過程中豐富了自己的知識(shí),也了解到了不同的so導(dǎo)入方式。因此以此文記錄,希望可以幫到和我有相同需求的童鞋。

ps:文筆崩壞,輕拍。小白一名,有任何錯(cuò)誤或建議,敬請(qǐng)斧正,無任歡迎^.^

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容