android - 如何在aosp中构建自定义系统权限应用程序
问题描述
我正在尝试实现具有系统权限的自定义系统应用程序。我搜索了一下,我学会了使系统应用程序内置系统映像构建结果需要放在系统/应用程序中
首先,我将自定义应用程序的 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文件制作到系统/应用程序中,以便我的自定义应用程序可以内置系统映像,但它一直给我以下输出(obj/APPS)。
[100% 8/8] 目标包:OjtTestApp (out/target/product/sailfish/obj/APPS/OjtTestApp_intermediates/package.apk)
请帮助我,我在我的 Android.mk 文件中找不到错误。
解决方案
你不需要那么长。构建您的 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"
用于Manifest 中的完全特权使用
推荐阅读
- python - 为 40 个数据帧加速 pandas concat 函数,每个数据帧有 100 万行和 100 列
- c++ - 通过键向量从地图中获取地图
- android - 证书固定绕过实践的示例 apk
- javascript - 我想将一个函数分成一个多功能 jquery/ajax
- ruby - 如果小数位数已知,如何将字符串(“longint”)转换为浮点数?
- facebook - 在 Expo 上使用 Segment 调试/测试 Facebook 应用事件
- sumo - 如何将车辆停在随机停车位?
- perl - How to force cpanm to use HTTPS insted of Using HTTP for install dependencies
- javascript - Javascript string() 函数在金额 = "$ 75.00 USD" 上使用时在 IE、FF 中返回正确值,但在 chrome 中不返回
- c# - Visual Studio 看不到本地存储库。致命:无法锁定 ref 'HEAD'