項目裏包含了多個帶有so文件的第三方庫,支持的平臺數不同。當應用跑在5.0系統上便會崩潰,後發現是有些第三方庫的x86-64的so文件沒有安裝。
html
查看了官網的ABIManager,彷佛寫得並不夠清晰。處理過程當中,發現信鴿sdk附帶的一份說明卻是讓人很容易的理解so文件的安裝機制。java
1.信鴿的.so支持全部的android平臺,但考慮到平時接入通常只須要armeabi平臺,所以libs目錄只提供該平臺的.so,其它平臺可在上層目錄的All-Platform-SO找到。 2.嵌入.so可能存在的問題: a.so文件與jar包不匹配。 解決辦法:在更新jar時同時更新對應的so文件; b.當前工程已有某些平臺的so,如只有armeabi平臺,卻添加信鴿全部平臺致使打包時異常。 解決辦法:只添加當前工程已有的平臺的信鴿so文件。具體可參考網上或如下示例: armeabi !此平臺既有當前存在so又有信鴿,正常! --libCurrent.so 當前工程已有so --libtpnsSecurity.so 信鴿 --libtpnsWatchdog.so 信鴿 armeabi-v7a !此平臺既有當前存在so又有信鴿,正常! --libCurrent.so 當前工程已有so --libtpnsSecurity.so 信鴿 --libtpnsWatchdog.so 信鴿 mips !!!錯誤,因爲此平臺只有信鴿,必須刪掉mips目錄!!! --libtpnsSecurity.so 信鴿 --libtpnsWatchdog.so 信鴿 x86 !!!錯誤,因爲此平臺只有信鴿,必須刪掉x86目錄!!! --libtpnsSecurity.so 信鴿 --libtpnsWatchdog.so 信鴿 c.若當前工程不存在so文件。 解決辦法:可複製全部信鴿平臺或只複製armeabi平臺
再結合其餘參考文章,應該能夠大概總結以下:
android
至少包含armeabi平臺ide
多個不一樣庫都有so文件時 就以包含支持最少平臺的那個爲準
orm
其餘參考:htm
1.http://www.open-open.com/lib/view/open1440421271716.htmlip
2.http://stackoverflow.com/questions/30782848/how-to-use-32-bit-native-libaries-on-64-bit-android-deviceci