工作記錄:今天偶遇需求 上傳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)斧正,無任歡迎^.^