Android 换行 Shell 脚本未按预期运行

Android Wrap Shell Script Doesn't Work as Expected

我有一个要与我的项目集成的 C 库,但在工作时,我遇到了堆栈损坏错误。我认为 malloc 调试可能对我的情况有所帮助,但似乎无法正确配置它。

我已尝试按照本教程进行操作:https://developer.android.com/ndk/guides/wrap-script

我写了我的包装脚本,它只包含以下行(我什至没有添加 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,如果相关的话。

感谢任何帮助。

在尝试了各种替代方案后,发现问题是由于 windows(我的工作站)和 linux(android 设备)之间的 EOL 格式不同所致。将我的 wrap.sh 文件 EOL 从 Windows (CR LF) 转换为 Unix EOL 格式 (LF) 后,我设法得到它 运行.