如何在 Android 9 上集成系统应用程序
How do I integrate a system app on Android 9
我一直在使用 Android 9.
的调试板上创建系统应用程序
使用 ServiceManager 的应用程序和依赖的 JAR 看起来构建成功。
但是,在写入 system.img 并重新启动后,
设备自动关闭并转换到 Android 恢复屏幕。
我需要做什么才能在 Android 9 上正确构建系统应用程序?
我的应用是这样的
/system/priv-app/SampServiceApp/SampServiceApp.apk, /oat
/system/framework/com.android.sampservice.jar, /oat
/system/etc/permissions/com.android.sampservice.xml
和这个例子几乎一样。
(如果可能我不想使用system_server)
https://devarea.com/aosp-creating-a-system-service/
但是,唯一的区别是...
添加了“LOCAL_PRIVATE_PLATFORM_APIS”而不是“LOCAL_SDK_VERSION”
在 Android.mk 中 SampServiceApp.apk
(编译 & link 成功)
# LOCAL_SDK_VERSION := current
LOCAL_PRIVATE_PLATFORM_APIS := true
此外,我尝试更新此 xml。
(https://source.android.google.cn/devices/tech/config/perms-whitelist)
/etc/permissions/privapp-permissions-platform.xml
但是,此 python 脚本不输出任何条目。
$ development/tools/privapp_permissions/privapp_permissions.py
↓↓ the result
<?xml version="1.0" encoding="utf-8"?>
<permissions>
</permissions>
预先感谢您的合作。
好的,
要构建类似系统的应用程序,您应该: 定义 mk 文件。应该是这样的:
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, app/src/main/java) $(call all-Iaidl-files-under, app/src/main/aidl)
LOCAL_AIDL_INCLUDES := \
$(LOCAL_PATH)/app/src/main/aidl \
$(CAR_BROADCASTRADIO_SUPPORTLIB_PATH)/src
LOCAL_PACKAGE_NAME := YOUR_MODULE_NAME
LOCAL_OVERRIDES_PACKAGES := IF YOU OVERRIDE AOSP PACKAGE
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_CERTIFICATE := platform
LOCAL_MANIFEST_FILE := /app/src/main/AndroidManifest.xml
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_DEX_PREOPT := false
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
当然,您可以使用 bp 文件而不是 mk。
- 将 LOCAL_PACKAGE_NAME 包含在 device/path_to_your_lunch_target 中。
/etc/permissions/privapp-permissions-platform.xml
该文件仅与权限有关。您可以在此处定义您的应用程序可能需要的任何权限。您可以为您的应用程序定义自己的清单,但不要忘记将其包含在构建中。
崩溃呢。这是一种非常奇怪的行为。你能分享 dmesg 和 logcat 吗?
我必须做两件事。
禁用预优化
我不知道为什么会导致崩溃。
LOCAL_DEX_PREOPT := 假
正在设置 sepolicy
在“public/servicemanager.te”中添加规则对我不起作用。
我的解决方案如下。
设备/制造商/设备名称/sepolicy/system_app.te
allow system_app my_service:service_manager add;
其他政策同示例
https://devarea.com/aosp-creating-a-system-service/#.XxEndSj7SUk
我一直在使用 Android 9.
的调试板上创建系统应用程序
使用 ServiceManager 的应用程序和依赖的 JAR 看起来构建成功。
但是,在写入 system.img 并重新启动后,
设备自动关闭并转换到 Android 恢复屏幕。
我需要做什么才能在 Android 9 上正确构建系统应用程序?
我的应用是这样的
/system/priv-app/SampServiceApp/SampServiceApp.apk, /oat
/system/framework/com.android.sampservice.jar, /oat
/system/etc/permissions/com.android.sampservice.xml
和这个例子几乎一样。
(如果可能我不想使用system_server)
https://devarea.com/aosp-creating-a-system-service/
但是,唯一的区别是...
添加了“LOCAL_PRIVATE_PLATFORM_APIS”而不是“LOCAL_SDK_VERSION”
在 Android.mk 中 SampServiceApp.apk
(编译 & link 成功)
# LOCAL_SDK_VERSION := current
LOCAL_PRIVATE_PLATFORM_APIS := true
此外,我尝试更新此 xml。 (https://source.android.google.cn/devices/tech/config/perms-whitelist)
/etc/permissions/privapp-permissions-platform.xml
但是,此 python 脚本不输出任何条目。
$ development/tools/privapp_permissions/privapp_permissions.py
↓↓ the result
<?xml version="1.0" encoding="utf-8"?>
<permissions>
</permissions>
预先感谢您的合作。
好的, 要构建类似系统的应用程序,您应该: 定义 mk 文件。应该是这样的:
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, app/src/main/java) $(call all-Iaidl-files-under, app/src/main/aidl)
LOCAL_AIDL_INCLUDES := \
$(LOCAL_PATH)/app/src/main/aidl \
$(CAR_BROADCASTRADIO_SUPPORTLIB_PATH)/src
LOCAL_PACKAGE_NAME := YOUR_MODULE_NAME
LOCAL_OVERRIDES_PACKAGES := IF YOU OVERRIDE AOSP PACKAGE
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_CERTIFICATE := platform
LOCAL_MANIFEST_FILE := /app/src/main/AndroidManifest.xml
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_DEX_PREOPT := false
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
当然,您可以使用 bp 文件而不是 mk。
- 将 LOCAL_PACKAGE_NAME 包含在 device/path_to_your_lunch_target 中。
/etc/permissions/privapp-permissions-platform.xml
该文件仅与权限有关。您可以在此处定义您的应用程序可能需要的任何权限。您可以为您的应用程序定义自己的清单,但不要忘记将其包含在构建中。
崩溃呢。这是一种非常奇怪的行为。你能分享 dmesg 和 logcat 吗?
我必须做两件事。
禁用预优化
我不知道为什么会导致崩溃。LOCAL_DEX_PREOPT := 假
正在设置 sepolicy
在“public/servicemanager.te”中添加规则对我不起作用。
我的解决方案如下。
设备/制造商/设备名称/sepolicy/system_app.te
allow system_app my_service:service_manager add;
其他政策同示例
https://devarea.com/aosp-creating-a-system-service/#.XxEndSj7SUk