简体   繁体   中英

How to build custom system privilege app in aosp

I am trying to implement custom system app which has system privilege. I searched about it and I learned to make system app built in system image build result needs to be placed in system/app

First I put my custom app's java file, resource file, cpp file as in this below directory(packages/apps).

在此处输入图片说明

And I made Android.mk file like this below.

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))

I also putted package name in aosp_sailfish.mk(device/google/marlin/aosp_sailfish.mk) file like this below.

PRODUCT_PACKAGE += OjtTestApp

After that I build my app by make OjtTestApp and build was completed without error. I tried to make apk file as in this post to system/app so that my custom app can built in system image but It keeps gave me following output(obj/APPS).

[100% 8/8] target Package: OjtTestApp (out/target/product/sailfish/obj/APPS/OjtTestApp_intermediates/package.apk)

Please help me I can't find error in my Android.mk file.

You don't need to go to that length. Build your apk normally don't sign it or sign it with system certificate. Now include the apk by writing a rule in as below in platform specific device.mk file PRODUCT_PACKAGES += \\ AppName

Sample mk file

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)

For full privilege use android:sharedUserId="android.uid.system" in Manifest

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM