zyygive 2020-07-29
如果一个应用程序想要使用系统的方法,那么就需要给这个应用程序签名,相当于授权。
一.用于设置不同的签名方式
build/target/product/security目录中有四组默认签名供Android.mk在编译APK使用:
1.testkey:普通APK,默认情况下使用。
2.platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。
3.shared:该APK需要和home/contacts进程共享数据。
4.media:该APK是media/download系统中的一环。
应用程序的Android.mk中有一个LOCAL_CERTIFICATE字段,由它指定用哪个key签名,未指定的默认用testkey.
Settings.apk就是platform级别的签名,系统级应用都应该使用这个签名
方法一:通过Android.mk配置编译成签名apk
# StressTestActivity LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := StressTestActivity //apk名称 LOCAL_MODULE_CLASS := APPS LOCAL_MODULE_TAGS := optional LOCAL_BUILT_MODULE_STEM := package.apk //apk文件 LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX) #LOCAL_PRIVILEGED_MODULE := LOCAL_CERTIFICATE := platform //系统签名 #LOCAL_OVERRIDES_PACKAGES := LOCAL_SRC_FILES := $(LOCAL_MODULE).apk #LOCAL_REQUIRED_MODULES := #LOCAL_PREBUILT_JNI_LIBS := include $(BUILD_PREBUILT)
adb shell cd system/app rm *.apk21. 获取管理员权限: adb root22. 启动Activity: adb shell am start -n 包名/包名+类名。