• 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“ 目录查找。





  • 相关阅读:
    Django模型层Meta内部类详解
    jquery checkbox的相关操作——全选、反选、获得所有选中的checkbox
    c# 委托与异步调用
    DataTable转成List集合
    c# winform 自动升级
    C# winform单元格的formatted值的类型错误 DataGridView中CheckBox列运行时候System.FormatException异常
    C#创建无窗体的应用程序
    sql 一个表的字段更新至另一个字段的方法
    datagridview 获取选中行的索引
    CHECKEDLISTBOX用法总结
  • 原文地址:https://www.cnblogs.com/neo-java/p/6830451.html
Copyright © 2020-2023  润新知