如何让apk 拥有系统权限,修改时间,调用隐藏方法,系统关键重启,静默安装升级卸载应用等系统级app所有的权限
方法一:
不进入源码编译
1 下载keytool
地址:https://github.com/getfatday/keytool-importkeypair
2.app的AndroidManifest.xml 如下定义
android:sharedUserId="android.uid.system"
添加这个属性就会有系统app同等的权限,修改系统时间啊,调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等系统级app所有的权限
3.找到源码中系统签名platform.pk8 和 platform.x509.pem
android原生的 目录下 build/target/product/security
fsl的目录 device/fsl/common/security
4.生成keystore,方法有两种:
第一种方法:使用keytool 生成keystore
将platform.pk8 和 platform.x509.pem 这两个文件和keytool 放在同一个目录(linux 下)
./keytool-importkeypair -k ./platform.keystore -p ctk123 -pk8 platform.pk8 -cert platform.x509.pem -alias platform
---其中platform.keystore是文件名,ctk123是密码----
用法:
./keytool-importkeypair -k [jks文件名] -p [jks的密码] -pk8 platform.pk8 -cert platform.x509.pem -alias [jks的别名]
备注:
keystore 是Eclipse 打包生成的签名。 jks是Android studio 生成的签名!
很多第三方市场,我们上传apk的时候,他们只支持keystore,需要我们把.jks签名转化为.keystore!
第二种方法:用android提供的signapk 来签名
signapk 的源代码在"build/tools/signapk"下
用法;signapk platform.x509.pem platform.pk8 input.apk output.apk
备注:文件名最好用绝对路径,免得找不到
5.android studio 生成带签名的apk
目录:MyApplication\app\release
方法二:
Android系统源码的环境下用make来编译(有apk源码)
1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
2.将源码放在packages/apps 下面,删除 /bin 和 /gen 目录
3.创建一个名为 Android.mk文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := Test (Test 是包名)
LOCAL_CERTIFICATE := platform (加入这一句 ,拥有系统权限)
include $(BUILD_PACKAGE)
以下是mtk 参考:
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_PATH 改为 system/app 或者 system/priv-app
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Xunfei
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := Xunfei.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/operator/app
LOCAL_PROPRIETARY_MODULE := true
LOCAL_MODULE_OWNER := mtk
include $(BUILD_PREBUILT)
4.mm编译,生成的apk就有修改系统时间的权限了
5.device/mediatek/common/device.mk中,将 Test 添加到 PRODUCT_PACKAGES 里面。
6.make -j32