如何讓apk 擁有系統權限

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章