定製開源庫之jar包和.so的引用

定製開源庫很多時候只是代碼的開源,這次的要求是把jar包和.so文件都放到庫裡,中間的過程還是有點曲折的。

首先我找到的是:

優雅的發佈Android開源庫(論JitPack的優越性)

本來我是按照這個的順序來的,但是在第三步的時候就卡住了:

第 3 步: 給你的項目添加配置(重點)

但是

apply plugin: 'com.github.dcendents.android-maven'

group='com.github.YourUsername' 根本就編譯不過去

1

2

3

毫無頭緒的時候求助百度,發現大家好像都沒有這個步驟,那就不管他了,刪除繼續。最後流程走下來發現好像沒什麼問題(⊙o⊙)…

2、jar包和.so怎麼辦

jar包這個沒什麼問題,放到library的libs文件夾下,正常使用就可以了。

但是在.so的時候我遇到了問題,正常情況下,我們使用.so的時候都是新建一個jniLibs文件夾,然後按照分類放到它該有的文件夾裡面,我也是這麼來的,但是當我在gradle裡引用的時候,我發現好像不可以啊,直接就是找不到。那我怎麼能讓它找到呢?

我們知道你的引入是編譯到你的項目裡的,在studio裡是可以看到的:

你的代碼和你引入的jar包在這裡可以看到,但是.so的文件在這裡是看不到的,那就很奇怪了。暫時還不懂,有懂的麻煩說一下

那怎麼辦?

瞎貓碰死耗子吧。。。

最後還真讓我碰上了。

我們知道,對.so的引入還有一種方法,那就是放到libs文件夾下,然後就成功了。。。(⊙o⊙)…

沒有一點點防備,還以為是錯覺。

新建個項目,在gradle中引入,然後。。。當然沒問題啊!!!

當我滿心歡喜的要用到項目中的時候,竟然報錯了:

More than one file was found with lib/armeabi-v7a/******.so

1

但是我明明沒有額外的.so啊,這是怎麼回事。。。(⊙o⊙)…

packagingOptions {

exclude 'lib/armeabi-v7a/******.so'

}

1

2

3

這樣就可以了嗎?

哎呦,編譯過去了,那安裝一下。。。(⊙o⊙)…

直接崩了,告訴我說找不到.so,怎麼辦?

好吧,最後問題還是解決了,答案是這樣的:

packagingOptions {

pickFirst 'lib/armeabi-v7a/******.so'

}

1

2

3

到此為止吧。

定製開源庫之jar包和.so的引用


分享到:


相關文章: