Android筆記:關於so文件

        項目裏包含了多個帶有so文件的第三方庫,支持的平臺數不一樣。當應用跑在5.0系統上便會崩潰,後發現是有些第三方庫的x86-64的so文件沒有安裝。

        查看了官網的ABIManager,似乎寫得並不夠清晰。處理過程中,發現信鴿sdk附帶的一份說明倒是讓人很容易的理解so文件的安裝機制。


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平臺


    再結合其他參考文章,應該可以大概總結如下:

  1. 至少包含armeabi平臺

  2. 多個不同庫都有so文件時 就以包含支持最少平臺的那個爲準



其他參考:

1.http://www.open-open.com/lib/view/open1440421271716.html

2.http://stackoverflow.com/questions/30782848/how-to-use-32-bit-native-libaries-on-64-bit-android-device


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章