如何将AndroidStudio编译出来的APP设置为系统应用
声明
- 前阶段需要在开发一个system权限的APP,整理了两种方法,在此做个整理总结。
- 两种方法的前提都是要有Android系统源码,或Android系统源码中系统签名文件:platform.pk8、platform.x509.pem
- 参考文章:keytool-importkeypair 的使用
1 在AndroidStudio中采用platform.pk8、platform.x509.pem生成的签名编译
-
设定APP的system权限
可在AndroidStudio中将AndroidManifest.xml中添加:android:sharedUserId=“android.uid.system”
2 讲AndroidStudio编译出的apk放入Android系统源码中和系统一起编译
-
设定APP的system权限
可在AndroidStudio中将AndroidManifest.xml中添加:android:sharedUserId=“android.uid.system” -
在Android源码目录/packages/apps创建该APP目录,新建Android.mk文件,还需要在对应的Android.mk中添加LOCAL_CERTIFICATE := platform这一项。即用系统的签名,通过这种方式只能使apk的权限升级到system级别
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TestFFmpeg
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_MODULE_CLASS := APPS
LOCAL_PACKAGE_NAME := TestFFmpeg
LOCAL_MODULE_PATH := $(TARGET_OUT)/app
LOCAL_SRC_FILES := testffmpeg.apk
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := false
LOCAL_PREBUILT_JNI_LIBS := \
lib/arm64-v8a/libavcodec.so \
lib/arm64-v8a/libavdevice.so \
lib/arm64-v8a/libavfilter.so \
lib/arm64-v8a/libavformat.so \
lib/arm64-v8a/libavutil.so \
lib/arm64-v8a/libnative-lib.so \
lib/arm64-v8a/libswresample.so \
lib/arm64-v8a/libswscale.so \
lib/arm64-v8a/libx264.159.so \
lib/arm64-v8a/minicap.so
include $(BUILD_PREBUILT)
- 在系统编译控制的Makefile文件中添加:
PRODUCT_PACKAGES += \
TestFFmpeg
- 重新编译系统镜像,刷机,运行APP即为system权限的了。