通过AOSP编译系统应用时原生内存调试所需wrap.sh的存放位置问题
AOSP编译系统应用的wrap.sh放置方案
核心结论
不需要将wrap.sh打包进APK,你提到的/system/priv-app/MyApp/lib/arm64-v8a路径完全符合要求,直接放置即可生效。
注意事项
- 权限要求:wrap.sh需要设置为可执行权限,权限位配置为
0755,属主和属组设置为root:root即可,系统启动应用时会自动扫描该路径下的wrap.sh文件,跳过zygote fork流程按脚本逻辑启动应用。 - 如果你需要在AOSP编译流程中自动把wrap.sh部署到目标路径,可以在应用的
Android.bp中添加如下配置:
android_app { name: "MyApp", // 其他原有配置保持不变 prebuilt_etc: { src: "wrap.sh", sub_dir: "priv-app/MyApp/lib/arm64-v8a", filename: "wrap.sh", mode: 0755, } }
- 脚本内容要求:wrap.sh开头必须指定正确的解释器
#!/system/bin/sh,末尾必须添加exec $@逻辑承接应用启动流程,否则应用无法正常启动。开启malloc debug的参考脚本如下:
#!/system/bin/sh export LIBC_DEBUG_MALLOC_OPTIONS="backtrace leak_track" exec $@
- 版本适配要求:wrap.sh仅在Android 8.0及以上版本系统中生效,低于该版本的系统无法使用该机制。
内容的提问来源于stack exchange,提问作者Gambler
相关产品推荐
相关产品推荐

