0

我想知道使用Android ndk编译的lib是否被压缩。如果是的话,有办法解压缩它以便能够使用 objdump 命令吗?

我正在做这个问题,因为我应该检查一个函数是否存在于我的库中

谢谢

4

2 回答 2

0

它们在生成时或安装时未压缩。

一个apk文件本身就是各种zip文件;可能是其中的存储被压缩(与软件包的其他部分不同,安装程序必须将数据作为纯文件复制出来才能使用),但是任何 zip 文件工具都会将其反转。

objdump(或至少来自 ndk 的相应 abi objdump)将适用于 ndk 库。就此而言,grep意志也是如此。

但是,您应该注意,放入 apk 的库版本已被删除- 也就是说,调试符号和没有任何外部链接的函数名称已被删除。为了限制大小,工具链知道的任何不必要的信息都会消失,其中很可能包括您尝试验证的函数的名称。您可以在项目构建目录下找到未剥离的库版本。

于 2013-09-17T15:35:40.200 回答
0

它们在放入 APK 时会被压缩。APK 是一个重命名的 ZIP。

但是,当您构建时,(您的项目)/libs/(平台)中的库不会被压缩。但是,它没有调试符号。(您的项目)/obj/local/(平台)中的那个确实有它们。Sic objdump 关于那个。

于 2013-09-17T15:47:16.320 回答