我正在使用平台的eng
版本开发Android特权系统应用程序......
在Lollipop中,我能够设置LOCAL_DEX_PREOPT := false
,然后使用mm
构建我的APK,将adb remount
和adb push
APK添加到系统分区。系统会检测到变化并重建dex,我的工作效率很高。如果应用程序是persistent
,我只需要另外杀死该进程。
现在,我在Marshmallow上进行开发时遇到了各种问题。推动APK并尝试运行给出:
02-01 20:58:26.302 E / dex2oat(3045):无法创建燕麦文件: /data/dalvik-cache/arm64/system@priv-app@XYZ@XYZ.apk@classes.dex: 许可被拒绝
SELinux麻烦:
[1614.216323] type = 1400 audit(686361.299:48):avc:denied {write} for pid = 2640 comm =“oid.XYZ”name =“arm64”dev =“dm-0”ino = 360453 scontext = U R:system_app:S0 tcontext = u:object_r:dalvikcache_data_file:s0 tclass = dir permissive = 0
我已经尝试过各种各样的黑客来解决这个问题......
当然,我可以重建整个系统img并闪存它,但这会降低生产力。
答案 0 :(得分:2)
我认为我找到了一个更简单的替代方法来修改SELinux和app_main.cpp。按照这些步骤,我可以快速更新我的系统应用程序:
LOCAL_DEX_PREOPT := false
构建应用,以便dex文件保留在APK adb remount
至少一次adb rm -rf /system/priv-app/XYZ/oat
adb push $OUT/system/priv-app/XYZ/XYZ.apk /system/priv-app/XYZ/