Как создать пользовательское приложение с системными привилегиями в aosp

#android #makefile #android-source #android.mk

#Android #makefile #android-исходный код #android.mk

Вопрос:

Я пытаюсь реализовать пользовательское системное приложение, которое имеет системные привилегии. Я искал об этом, и я научился создавать системное приложение, встроенное в системный образ, результат сборки должен быть размещен в system / app

Сначала я помещаю java-файл моего пользовательского приложения, файл ресурсов, файл cpp, как в этом каталоге ниже (пакеты / приложения).

введите описание изображения здесь

И я сделал Android.mk файл, подобный приведенному ниже.

 LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

$(info Ojt System Module)

#LOCAL_MODULE_CLASS := APPS
#LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_PACKAGE_NAME := OjtTestApp
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true
LOCAL_UNINSTALLABLE_MODULE := true

LOCAL_SRC_FILES := $(call all-java-files-under,src)

LOCAL_STATIC_ANDROID_LIBRARIES := 
android-support-v13 
android-support-v4 
android-support-compat 
    android-support-v7-appcompat 
    android-support-v7-gridlayout

LOCAL_JNI_SHARED_LIBRARIES := libojt

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_SDK_VERSION := current

LOCAL_PROGUARD_ENABLED := disabled

LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH := $(TARGET_OUT_APPS)

include $(BUILD_PACKAGE)

#include $(BUILD_PREBUILT)
include $(call all-makefiles-under,$(LOCAL_PATH))
  

Я также ввел имя пакета в aosp_sailfish.mk (device / google /marlin /aosp_sailfish.mk) файл, подобный приведенному ниже.

 PRODUCT_PACKAGE  = OjtTestApp
  

После этого я создаю свое приложение с помощью make OjtTestApp, и сборка была завершена без ошибок. Я попытался создать файл apk, как в этом сообщении, в system / app, чтобы мое пользовательское приложение могло быть встроено в образ системы, но оно продолжает выдавать мне следующий вывод (obj / APPS).

[100% 8/8] целевой пакет: OjtTestApp (out / target /product / sailfish /obj / APPS / OjtTestApp_intermediates / package.apk)

Пожалуйста, помогите мне, я не могу найти ошибку в моем Android.mk файл.

Комментарии:

1. Какая ошибка? Опубликованное вами сообщение указывает на успех задачи, которую оно выполняло.

Ответ №1:

Вам не нужно заходить так далеко. Создайте свой apk, обычно не подписывайте его системным сертификатом. Теперь включите apk, написав правило, как показано ниже, в зависимости от платформы device.mk файл
PRODUCT_PACKAGES =
AppName

Пример файла mk

 LOCAL_PATH := $(call my-dir)


####################################
$(warning dont't include $(call my-dir)/Android.mk )

include $(CLEAR_VARS)
LOCAL_MODULE := <your app name>
LOCAL_MODULE_TAGS := optional
LOCAL_CERTIFICATE := PRESIGNED #If you have signed already using system key
LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
#LOCAL_REQUIRED_MODULES := libnative-lib
include $(BUILD_PREBUILT)
  

Для полного использования привилегий
android:sharedUserId="android.uid.system" в манифесте