Android筆記:關於so文件

        項目裏包含了多個帶有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

  1. 至少包含armeabi平臺ide

  2. 多個不一樣庫都有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

相關文章
相關標籤/搜索