android-source – 如何在Android Marshmallow平台上高效开发系统应用程序?

我正在使用该平台的eng版本开发
Android特权系统应用程序…

在Lollipop中我能够设置LOCAL_DEX_PREOPT:= false然后使用mm来构建我的APK,执行adb remount和adb将APK推送到系统分区.系统会检测到变化并重建dex,我的工作效率很高.如果应用程序是持久的,我只需要另外杀死该进程.

现在,我在Marshmallow上进行开发时遇到了各种各样的问题.推送APK并尝试运行给出:

02-01 20:58:26.302 E/dex2oat ( 3045): Failed to create oat file:
/data/dalvik-cache/arm64/system@priv-app@XYZ@XYZ.apk@classes.dex:
Permission denied

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并闪存它,但这会导致生产力下降.

最佳答案 我想我找到了一个更简单的替代方法来修改SELinux和app_main.cpp.按照这些步骤,我可以快速更新我的系统应用程序:

>使用LOCAL_DEX_PREOPT:= false构建应用程序,以便dex文件保留在APK中
> adb重新安装至少一次
> adb rm -rf / system / priv-app / XYZ / oat
> adb push $OUT / system / priv-app / XYZ / XYZ.apk / system / priv-app / XYZ /

点赞