第三方应用想要获取系统权限,首先需要在AndroiManifest.xml文件中声明UID为系统进程,还要用平台Key对APP进行签名。
APP中声明UID为系统进程
第三方应用的AndroidManifest.xml文件中声明:
1 | android:sharedUserid="android.uid.system" |
用平台Key对APP进行签名
SDK源码下签名
- 将APP放到对应目录下,编写Android.mk文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := XXXX
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PRIVILEGED_MODULE := true
# 保留原来应用自身签名
# LOCAL_CERTIFICATE := PRESIGNED
# 使用系统平台签名
LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT) - 将APP添加到系统编译mk文件中:
1
2
3PRODUCT_PACKAGES +=\
Bluetooth \
XXXX - 重新编译SDK,在OUT目录下生成的APK文件就具有系统签名。
Windows/Linux系统环境下进行应用签名
- 下载平台Key文件platform.x509.pem与platform.pk8。
- 下载签名工具signapk.jar。
- 下载依赖库libconscrypt_openjdk_jni.so,下载完成后创建
signlib
目录,把依赖库放到该目录下。 - 安装JDK工具。
- 命令终端下运行:
1
java -Djava.library.path=signlib -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk