簡體   English   中英

如何在 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://devrea.com/aosp-creating-a-system-service/

但是,唯一的區別是……
在“LOCAL_SDK_VERSION”中添加了“LOCAL_PRIVATE_PLATFORM_APIS”
在 Android.mk 中用於 SampServiceApp.apk(編譯和鏈接成功)

# 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 腳本 output 沒有條目。

$ 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。

  1. 將 LOCAL_PACKAGE_NAME 包含在 device/path_to_your_lunch_target 中。

/etc/permissions/privapp-permissions-platform.xml

該文件僅涉及權限。 在這里,您可以定義您的應用程序可能需要的任何權限。 您可以為您的應用程序定義自己的清單,但不要忘記將其包含在構建中。

撞車怎么辦。 這是一種非常奇怪的行為。 你能分享一下 dmesg 和 logcat 嗎?

我必須做兩件事。

  1. 禁用預優化
    我不知道為什么它會導致崩潰。

    LOCAL_DEX_PREOPT:= 假

  2. 設置 sepolicy
    在“public/servicemanager.te”中添加規則對我不起作用。
    我的解決方案如下。

設備/制造商/設備名稱/sepolicy/system_app.te

allow system_app my_service:service_manager add;

其他政策與本例相同。
https://devrea.com/aosp-creating-a-system-service/#.XxEndSj7SUk

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM