Android 6.0以上手机报 so: has text relocations 问题的终极解决方案

简介: Android 6.0以上手机报 so: has text relocations 问题的终极解决方案

最近做串口通信时,引入so文件报libxxx.so- has text relocations。

 问题产生的原因:


 在Android6.0之后,在载入.so库时,会从以前的warning变为error,应用程序不能在6.0设备上使用,因此需要适配。


如果没有工程中的.so库的C/C++源码,比如是使用的第三方的.so库,那么只能在gradle中将 targetSdkVersion 减低版本至22或以下 的办法暂时解决了,或者更新第三方库。

这个问题的官方回复如下:


https://code.google.com/p/Android-developer-preview/issues/detail?id=3028


这个问题出现在loadLibrary()的过程中. 在Android 6.0之前, text reloactions问题, 会在编译的过程中, 作为warning报出来, log大致如下:

[plain] view plain copy ActivityManager: WARNING: linker: libdvm.so has text relocations. This is wasting memory and is a security risk. Please fix

在Android6.0中,原来的warning升级为error,因此6.0系统中运行程序会crash。


text reloactions又被称为TEXTREL,它与PIC相关,先说说PIC:

PIC: Position Independent Code, 指一段代码, 在加载到内存后, 其物理地址与代码本身是无关的.


解决方案:

方案一(官方推荐):

https://code.google.com/p/android-developer-preview/issues/detail?id=3028为Google推荐的方案


方案二:

使用的第三方的.so库,那么只能将targetSdkVersion 减低版本至22或以下 暂时解决了,或者更新第三方库。


这个博客讲得也不错:https://blog.csdn.net/ahence/article/details/68953878



相关文章
|
2月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
|
2月前
|
机器学习/深度学习 人工智能 Android开发
安卓智能手机操作系统演化史
【2月更文挑战第5天】 本文通过对安卓智能手机操作系统的演化历程进行探讨,分析了安卓系统从诞生至今的发展脉络和关键技术革新,从最初的版本到如今的最新版本,探讨了其在移动互联网时代的重要作用,以及未来可能的发展方向。
|
3月前
|
JavaScript Android开发
手机也能搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站
手机也能搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站
36 0
|
4天前
|
安全 编译器 API
Android HAL深入探索(5): 调试HAL报错与解决方案
Android HAL深入探索(5): 调试HAL报错与解决方案
6 1
|
1月前
|
JSON Android开发 数据格式
android 使用GSON 序列化对象出现字段被优化问题解决方案
android 使用GSON 序列化对象出现字段被优化问题解决方案
|
1月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
58 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
|
1月前
|
网络协议 关系型数据库 MySQL
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
|
1月前
|
JavaScript Android开发
手机也能轻松搭建个人博客,使用安卓Termux+Hexo建立自己的网站
手机也能轻松搭建个人博客,使用安卓Termux+Hexo建立自己的网站
|
2月前
|
安全 Android开发
如何在Android手机上安装第三方应用?
【2月更文挑战第4天】在Android系统中,安装第三方应用是一个常见的需求。本文将介绍如何在Android手机上安装第三方应用,并提供详细的步骤和注意事项。
168 2
|
3月前
|
安全 网络协议 Linux
【公网远程手机Android服务器】安卓Termux搭建Web服务器
【公网远程手机Android服务器】安卓Termux搭建Web服务器
67 0