libserial

编程入门 行业动态 更新时间:2024-10-22 11:06:33

<a href=https://www.elefans.com/category/jswz/34/1059479.html style=libserial"/>

libserial

TEXTREL是"文本重定位”的术语"。
在targetSdkVersion>=23 Android 6.0 以上设备上跑debug版本时,出现一下警告日志,当targetSdkVersion<23且使用debug签名的APK运行在高版本系统上(大于6.0)出现以下弹窗

2019-04-26 15:09:45.033 1685-2398/cn.mashang.vscreen W/linker: /data/app/cn.mashang.vscreen-2/lib/arm/libserial_port.so has text relocations. This is wasting memory and prevents security hardening. Please fix.

修复源码中的text relocations

问题原因,谷歌了一下
libxxx.so: text relocations 这个问题在Android 6.0官方的更新说明中有说到:
Android 6.0官方的更新说明

现已正确实现 dlopen(3) RTLD_LOCAL 标记。请注意,RTLD_LOCAL 是默认值,因此不显式使用 RTLD_LOCAL 的 dlopen(3) 调用将受到影响(除非您的应用显式使用 RTLD_GLOBAL)。使用 RTLD_LOCAL 时,在随后通过调用 dlopen(3) 加载的库中并不能使用这些符号(这与由 DT_NEEDED 条目引用的情况截然不同)。在之前版本的 Android 上,如果您的应用请求系统加载包含文本重定位信息的共享库,系统会显示警告,但仍允许加载共享库。从此版本开始,如果您的应用的目标 SDK 版本为 23 或更高,则系统会拒绝加载该库。为帮助您检测库是否加载失败,您的应用应该记录 dlopen(3) 失败日志,并在日志中加入 dlerror(3) 调用返回的问题描述文本。要详细了解如何处理文本重定位,请参阅此指南。

参阅此指南 (难以理解)

定位问题

so文件有text relocations问题,用 readelf命令
如果你是macOS,mac os X下没有这两个命令,可以用brew来安装,brew update && brew install binutils ,然后配置环境变量
用法

readelf -a so文件路径 | grep TEXTREL

TEXTREL表示代码段重定位表地址,PIC的共享对象不会包含任何代码段重定位表。匹配不到TEXTREL则无问题

谷歌的android-serialport-api串口项目的so文件有TEXTREL问题,那采取较新的NDK编译后呢?text relocations 警告没了。

my/android-serialport

更多推荐

libserial

本文发布于:2024-03-08 05:31:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1719946.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:libserial

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!