码迷,mamicode.com
首页 > 移动开发 > 详细

Android笔记:关于so文件

时间:2015-09-28 19:13:50      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:android   .so   so文件   x86   armeabi   

        项目里包含了多个带有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


本文出自 “天空没有痕迹但我飞过” 博客,请务必保留此出处http://glblong.blog.51cto.com/3058613/1698839

Android笔记:关于so文件

标签:android   .so   so文件   x86   armeabi   

原文地址:http://glblong.blog.51cto.com/3058613/1698839

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!