我正在尝试实现具有系统特权的自定义系统应用程序。我进行了搜索,并学会了将内置于系统映像构建结果中的系统应用放置在系统/应用中
首先,将自定义应用的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构建了我的应用程序,并且构建成功完成,没有错误。我尝试将post中的apk文件制作到系统/应用程序中,以便我的自定义应用程序可以内置在系统映像中,但是它始终为我提供以下输出(obj / APPS)。
[100%8/8]目标软件包:OjtTestApp(out / target / product / sailfish / obj / APPS / OjtTestApp_intermediates / package.apk)
请帮助我,我在Android.mk文件中找不到错误。
答案 0 :(得分:0)
您不需要那么长。构建您的apk通常不对其进行签名或使用系统证书对其进行签名。现在,通过在特定于平台的device.mk文件中编写如下规则来包含apk
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"