Android6.0 高通平台 is 32-bit instead of 64-bit 问题
做高通项目时碰高一个问题:有些apk在32位平台上运行没问题,但是在64位平台上出现crash,出错信息如下:
java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.droidhen.game.racingmototer/.cache/libsecexe.so" is 32-bit instead of 64-bit
at java.lang.Runtime.load(Runtime.java:332)
at java.lang.System.load(System.java:1069)
at com.secneo.guard.ACall.<clinit>(ACall.java:31)
at com.secneo.guard.Util.addProvider(Util.java:52)
at com.droidhen.api.scoreclient.ScoreClientProvider.onCreate(ContentProviderTemplate.java:155)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1748)
at android.content.ContentProvider.attachInfo(ContentProvider.java:1723)
at android.app.ActivityThread.installProvider(ActivityThread.java:5153)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
at android.app.ActivityThread.access$1600(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
从crash log 来看好像是apk没有64位下的so库,确实是这样。但,奇怪的是在有些Android6.0 64位系统上同样的apk运行没问题。
后来抓了下log发现,apk在安装的时候。PackageManagerService 会调用 derivePackageAbi 推导apk可用的ABI。如果apk有so文件(32bit),
但找不到合适的ABI,运行时就会crash。初步判断是so的路径有问题。接着分析log,发现非系统的apk并且不支持多架构的,会先找lib文件夹,如果没有lib文件夹就扫描apk的assets
文件夹,来调整支持此apk的ABI。
最后跟到了,在扫描 assets 文件夹的时候 会调用 initAssetsVerifierLib打开一个库(libassetsverifier.so),悲剧的是,平台里面没有 这个库。扫描的结果是,系统认为 此apk没有 native code,也就是 没有so库。
解决办法:
修改 device-vendor.mk 文件添加
COMMON_LIBS := libassetsverifier
PRODUCT_PACKAGES += $(COMMON_LIBS)
将 libassetsverifier.so 编译进系统。问题解决。
涉及到的文件:
PackageManagerService.java
NativeLibraryHelper.java
PackageManager.java
com_android_internal_content_NativeLibraryHelper.cpp
verify_assets.cpp
Android6.0 高通平台 is 32-bit instead of 64-bit 问题相关推荐
- android 6.0 高通平台sensor 工作机制及流程(原创)
最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...
- android 6.0 高通平台sensor 工作机制及流程
最近工作上有碰到sensor的相关问题,正好分析下其流程作个笔记. 这个笔记分三个部分: sensor硬件和驱动的工作机制 sensor 上层app如何使用 从驱动到上层app这中间的流程是如何 Se ...
- Android 7.0 高通平台-telephony-机器无Sim卡情况下,获取SIM卡状态方法getSimState偶现为6,而不是1
TelephonyManager.java -------->getSimState接口 /** * Returns a constant indicating the state of the ...
- 高通平台USB 2.0和USB 3.0接口充电器识别原理
1 BC 1.2 1.1 充电器类型探测 1)DCD:DP上有150mV(= 10uA x 15K欧姆下拉电阻)的电压,DM上电压为0 2)Primary Det(DP发起检测DM): - DP上加载 ...
- 华为鸿蒙或适配高通平台,鸿蒙2.0适配高通平台,网友:华为这是要取代安卓吗?...
鸿蒙.鸿蒙.鸿蒙-- 近一段时间关于华为鸿蒙2.0手机端操作系统的消息越来越多,而且很多提前拿到内测版的童鞋也开始放出关于鸿蒙2.0手机端操作系统的体验与感受,这无疑把华为鸿蒙2.0手机操作系统的热度 ...
- 高通android开源代码下载,高通平台Android源码bootloader分析之sbl1(三)
前两篇博文分析了启动流程.代码流程.cdt,接下来就分析另外几个需要格外关注的部分. ##log系统 sbl1中的log系统也是sbl1部分调试会经常接触得部分高通平台在sbl中做的log系统并不是很 ...
- 高通平台sensor学习
刚入行驱动时最先接触调试的外设模块便是sensor,一直都是零零散散的记录,这次终于下定决心对自己所学做一个系统的总结. sensor作为一款常用的外设,虽不起眼但是很多功能确实离不开它.比如我们手机 ...
- 高通平台android开发总结 MSM平台上的AMSS
http://blog.csdn.net/mirkerson/article/details/7691029 MSM平台上的AMSS REX启动分析--基于Qualcomm平台 1.高通平台andro ...
- 高通平台 lcd driver 调试小结
一.概述 1.1 简介 本文档主要包括LCD模块的驱动流程分析.Framebuffer相关知识.Gralloc等相关内容,以及LCD调试的一些经验和相关bug的分析和讲解. 1.2 开发环境 And ...
最新文章
- python爬虫获取的网页数据为什么要加[0-使用 Python 爬取网页数据
- java 转账 锁_Java多线程 多个人转账发生死锁
- boost::phoenix模块使用 istreambuf_iterator 测试 lambda 函数对象
- 人工大脑项目 —— Nengo
- [转]GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名
- aws lambda_API网关和AWS Lambda进行身份验证
- LeetCode 378. 有序矩阵中第K小的元素(二分查找)
- python字典按键值排序_在Python中按键或值按升序和降序对字典排序
- canvas笔记-图形变换(位移translate、缩放scale、变换矩阵transform)
- 服务器常规维修与判断方法,服务器常规维修与判断方法88119.doc
- [licode cs交互] 1 android client 连接到token服务器
- AGV机器人核心部件——驱动轮
- 极路由2刷机为openwrt固件
- 云服务器怎么存文件大小,云服务器怎么存文件大小
- cad画直角命令_在cad中怎么画角度?cad画角度三种方法介绍
- spring boot 多模块项目打包部署
- 使用ubuntu遇到的问题-An error occurred,please run Package Manager...
- 斐讯k3怎么设置虚拟服务器,斐讯K3路由器无线中继怎么设置?
- matlab 理想低通滤波器函数,基于MATLAB的理想低通滤波器的设计
- win7桌面图标全变成windows media center 解决办法
热门文章
- 下拉列表详解再详解,快速掌握!(内有代码)
- 什么是LRUCache 和 LRUCache 实现
- Linux platform
- WinSCP 以预设密码进行验证 拒绝访问
- 水平拉滑轮组计算机械效率的题,中考典型题:滑轮组机械效率分类计算(1).doc...
- win10 计算机 搜索文件,在 Windows 10 上高效搜文件,自带搜索功能其实就够了
- redis5大数据结构
- 通过xshell命令方式下载文件
- jmeter设置永久中文和解决查看结果树响应中文乱码问题
- 程序设计,就是这样——如何学习程序设计(完整版)