1. 程式人生 > >Android系統預製APK(不可解除安裝)

Android系統預製APK(不可解除安裝)

   第一步:
      在 “/vendor/.../packages/apps” 目錄下建立一個對應名稱的資料夾。

   第二步:
   將所需apk放入資料夾中。

   第三步, 編輯 Android.mk :

      LOCAL_PATH := $(call my-dir)
        include $(CLEAR_VARS)
        # Module name should match apk name to be installed.

        #設定apk的名字,XXX為apk名稱
        LOCAL_MODULE := XXX
        LOCAL_SRC_FILES := $(LOCAL_MODULE).apk    
        LOCAL_MODULE_TAGS := optional
        LOCAL_MODULE_CLASS := APPS
        LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

        #簽名方式,如果是platform,代表簽名成系統軟體, 如果還是PRESIGND,表示用的是apk原本的簽名。
        LOCAL_CERTIFICATE := platform

        #將apk編進“/system/priv-app/目錄”,如果為false,或者不加這句話,就會編進“/system/app” 目錄, 二者區別在於前者的許可權要高於  後者
        LOCAL_PRIVILEGED_MODULE := true

      #(如果 LOCAL_MULTILIB 是32,意思是編譯出32位的lib庫,64異曲同工,如果是both,代表編譯出兩種庫檔案,  當然,首先要解壓  apk,看看lib庫是32的還是64的。  另外,如果手機系統是64位的,而lib庫是32位的,則需要在  “/frameworks/base/services/core/java/com/android/serve/pm/PackageManagerService.java”   中進行配置, lineNumber : 6221)


       LOCAL_MULTILIB := 32   
       include $(BUILD_PREBUILT)

 補充: LOCAL_OVERRIDES_PACKAGES := Calculator    #覆蓋掉之前有的一個apk,名字叫Calculator



  第四步:
       在 /device/平臺/.../專案目錄下找到相應的版本,開啟其中的 “專案名.mk” 檔案, 新增:

         #編譯專案時,會在對應的版本中新增上這個apk。   

         PRODUCT_PACKAGES += XXX

  第五步:
    編譯一下整個專案,執行除錯,就會將apk編進 "/system/priv-app/" 或 " /system/app"。

轉載出處:https://www.cnblogs.com/neo-java/p/6830451.html