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

时间:2017-02-02 01:36:04

标签: android-source

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

在Lollipop中,我能够设置LOCAL_DEX_PREOPT := false,然后使用mm构建我的APK,将adb remountadb 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并闪存它,但这会降低生产力。

1 个答案:

答案 0 :(得分:2)

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

  1. 使用LOCAL_DEX_PREOPT := false构建应用,以便dex文件保留在APK
  2. adb remount至少一次
  3. adb rm -rf /system/priv-app/XYZ/oat
  4. adb push $OUT/system/priv-app/XYZ/XYZ.apk /system/priv-app/XYZ/