Android 预置APK

1.   预置apk,使其不可卸载

   第一步:
      在 “/vendor/huawei/packages/apps” 目录下创建一个对应名称的文件夹。

   第二步:
   将所需apk放入文件夹中。

   第三步, 编辑 Android.mk :

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

        #设置apk的名字
        LOCAL_MODULE := HuaweiMobiControl
        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

第四步,编辑 packages.mk:
      PRODUCT_PACKAGES += HuaweiMobiControl

  第五步:
       在 /device/ontim目录下找到相应的版本,打开其中的 “项目名.mk” 文件, 添加:

         #编译项目时,会在对应的版本中添加上这个apk。   

         PRODUCT_PACKAGES += HuaweiMobiControl  

  第六步:
    编译一下整个项目,运行调试,就会将apk编进 “/system/priv-app/” 或 ” /system/app”。

2.    预置apk,使其可以卸载

     如此的话,就不需要考虑so文件的问题了,因为这样相当于安装apk,会自己把so文件带过去了。

    操作步骤:

     (1). 首先在  “/vendor/mediatek/proprietary/binary/3rd-party/free” 目录中创建apk文件夹.

              (其实换做其他也可以,比如 “/vendor/huawei/packages/apps”)将对应的apk放入其中。

     (2). 然后在其他的apk文件夹中拷贝两个文件: Android.mk 和 packages.mk。

           编辑以上两个文件:

         # 对于Android.mk,保留以下基本内容:

      LOCAL_PATH := $(call my-dir)
        include $(CLEAR_VARS)

        # Module name should match apk name to be installed
        LOCAL_MODULE := HuaweiMobiControl 
        LOCAL_MODULE_TAGS := optional
        LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
        LOCAL_MODULE_CLASS := APPS
        LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
        LOCAL_CERTIFICATE := platform  
        LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app
        include $(BUILD_PREBUILT)

        对于 packages.mk,主要是一句话:

        PRODUCT_PACKAGES += \
             HuaweiMobiControl
 
    (3). 在” /device/ontim/xxx” 目录下找到相应的版本,打开其中的 “项目名.mk” 文件, 添加: PRODUCT_PACKAGES += HuaweiMobiControl

     (4). 这样就把apk预置进了 “/out/target/product/xxx/system/vendor/operator/app” 目录下。
                  重新编译项目即可。

如何查看是否已经编译进去了??

   1. 打开手机settings,点击应用管理,可以看到安装的apk。
 
   2. 如果没有,电脑链接手机,执行命令adb shell, 然后进入/system/app/ 或/system/priv-app/ ,在这个目录中查看手机的apk。
      
   3. 如果是可卸载的,就去 ”/out/target/product/xxx/system/vendor/operator/app“ 目录查找。

    原文作者:浪里小白龙呼呼呼
    原文地址: https://www.cnblogs.com/neo-java/p/6830451.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞