如何讓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