我想知道使用Android ndk编译的lib是否被压缩。如果是的话,有办法解压缩它以便能够使用 objdump 命令吗?
我正在做这个问题,因为我应该检查一个函数是否存在于我的库中
谢谢
我想知道使用Android ndk编译的lib是否被压缩。如果是的话,有办法解压缩它以便能够使用 objdump 命令吗?
我正在做这个问题,因为我应该检查一个函数是否存在于我的库中
谢谢
它们在生成时或安装时未压缩。
一个apk文件本身就是各种zip文件;可能是其中的存储被压缩(与软件包的其他部分不同,安装程序必须将数据作为纯文件复制出来才能使用),但是任何 zip 文件工具都会将其反转。
objdump(或至少来自 ndk 的相应 abi objdump)将适用于 ndk 库。就此而言,grep
意志也是如此。
但是,您应该注意,放入 apk 的库版本已被删除- 也就是说,调试符号和没有任何外部链接的函数名称已被删除。为了限制大小,工具链知道的任何不必要的信息都会消失,其中很可能包括您尝试验证的函数的名称。您可以在项目构建目录下找到未剥离的库版本。
它们在放入 APK 时会被压缩。APK 是一个重命名的 ZIP。
但是,当您构建时,(您的项目)/libs/(平台)中的库不会被压缩。但是,它没有调试符号。(您的项目)/obj/local/(平台)中的那个确实有它们。Sic objdump 关于那个。