【发布时间】:2019-05-27 16:21:49
【问题描述】:
我有一个要与我的项目集成的 C 库,但是在工作时,我遇到了堆栈损坏错误。我认为 malloc 调试可能对我的情况有所帮助,但似乎无法正确配置它。
我已尝试按照本教程进行操作:https://developer.android.com/ndk/guides/wrap-script
我编写了我的 wrap 脚本,它只包含以下行(我什至还没有添加 malloc 调试选项):
#!/system/bin/sh
exec "$@"
我将脚本放在默认的resources/lib/{arch}文件夹中,并验证它确实被正确打包到lib文件夹中的apk中。
但是在启动应用程序时,它似乎卡住了,只是显示一个空白屏幕(我已经验证了应用程序在没有包装 shell 脚本的情况下可以正常工作,至少在堆栈损坏发生之前)。
我注意到 logcat 打印以下行:
2019-05-24 16:35:00.524 1927-1942/? W/ActivityManager: Launch timeout has expired, giving up wake lock!
2019-05-24 16:35:00.680 1927-1942/? W/ActivityManager: Process ProcessRecord{e1f6d50 6975:my.package.name/u0a85} failed to attach
2019-05-24 16:35:00.681 1927-1942/? I/ActivityManager: Killing 6975:my.package.name/u0a85 (adj -10000): start time
我曾尝试使用非 root 的 android 8.1 设备 Android Pie,甚至在 Android Q 上使用 Pixel,但结果是一样的。我试图移动到模拟器,但无济于事,它失败了,结果相同。我曾尝试使用 NDK 17c 和 NDK 19,两者都产生了相同的结果。我正在开发 Windows,如果这可能相关的话。
感谢任何帮助。
【问题讨论】:
标签: android c++ android-ndk java-native-interface