有一个 Android 应用程序有一个共享库 (.so) 文件split_config.arm64_v8a.apk,我想在其中调试 .
当我查看时,/proc/PID/maps我没有看到该库(我确实看到了该split_config.arm64_v8a.apk文件),但我确定该库已加载,因为我看到只有该库打印的日志。此外,应用程序调用System.loadLibrary("libMyLib.so");以加载该库。
如何调试这个共享库?
有一个 Android 应用程序有一个共享库 (.so) 文件split_config.arm64_v8a.apk,我想在其中调试 .
当我查看时,/proc/PID/maps我没有看到该库(我确实看到了该split_config.arm64_v8a.apk文件),但我确定该库已加载,因为我看到只有该库打印的日志。此外,应用程序调用System.loadLibrary("libMyLib.so");以加载该库。
如何调试这个共享库?
如果 APK 文件使用模式extractNativeLibs="false". 如果在<application标签中设置了该属性,AndroidManifest.xml则 Android 会直接从 APK 文件中加载 .so 文件,而无需先提取它们。
这是有效的,因为 .so 文件未经压缩存储并与 4KiB 页面边界对齐,以便它们可以通过 mmap 直接映射到内存中(另请参阅关于该主题的 zipalign 评论https://developer.android.com/studio/command-线/zipalign)。