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

标签 android-source

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

在 Lollipop 中,我可以设置 LOCAL_DEX_PREOPT := false然后使用 mm要构建我的 APK,请执行 adb remountadb push APK 到系统分区。系统会检测更改并重建 dex,我的工作效率很高。如果应用程序是 persistent我只需要另外终止进程。

现在我在 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 remount至少一次
  • adb rm -rf /system/priv-app/XYZ/oat
  • adb push $OUT/system/priv-app/XYZ/XYZ.apk /system/priv-app/XYZ/
  • 关于android-source - 如何在 Android Marshmallow 平台上高效开发系统应用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41992902/

    相关文章:

    java - 如何将第 3 方库添加到 Android AOSP 构建中?

    android - 如何将Android源类复制到项目中?

    android - 将 Cyanogenmod 移植到不受支持的手机/平板电脑需要了解什么?

    android - USB 键盘 - 在 android 中没有获得相同的扫描代码

    Android软键盘-需要Android软键盘源码AOSP

    Android 电子邮件应用程序源代码

    构建 AOSP 10 时出现 Java OutOfMemoryError

    android - adb root 工作 Runtime.GetRuntime().Exec ("su");才不是

    android - Android 的 Binder 实现对于不带参数的 "void method"调用始终是非阻塞的吗?

    android - 替换 Android 内核中的触摸屏驱动程序