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

Android 预置APK的更多相关文章

  1. Android预置Apk方法

    这一套8.0过时了 需要修改pms代码 否则apk会被pms删除掉 因为工作需要,经常要开发和合入系统App,所以在此开篇作为收集和记录Android合入系统应用的方法,以备日后查阅. 一.预置apk ...

  2. MTK Android 预置APK

    [FAQ03038] 如何预置APK [DESCRIPTION]1, 如何将带源码的 APK 预置进系统?2, 如何将无源码的APK预置进系统?3, 如何预制APK使得用户可以卸载?4, 如何使得用户 ...

  3. MTK Android O1平台预置apk

    在MTK Android O1平台预置apk为可卸载时.预置到旧的路径system/vendor/operator/app会编译报错,"You cannot install files to ...

  4. Android 如何预置APK M

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  5. 怎样预置Android 手机 APK

    预制APK有下面4种情况: 1, 怎样将带源代码的 APK 预置进系统? 2, 怎样将无源代码的APK预置进系统? 3, 怎样预置APK使得用户能够卸载,恢复出厂设置时不能恢复? 4, 怎样预置APK ...

  6. MTK平台Android项目APK预置方案

    项目开发中,通常需要向系统中预置一些APK,这里简单介绍一下MTK平台预置APK的方法. 需要预置的apk可以放置在目录:vendor/mediate/${Project}/artifacts/out ...

  7. MTK 预置apk

    一.如何将带源码的APK预置进系统? 1)     在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例 2)     将 Test ...

  8. 将HTML5封装成android应用APK文件的几种方法

    越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...

  9. Android 天猫apk聊天数据库解密

    1.使用Android 天猫apk 进行聊天会产生tmallWangXinDB的数据库.2.用sqlite3 工具打开提示加密或者错误.3.需要对该数据库进行解密. 解密流程:1.反编译apk,dex ...

随机推荐

  1. @Async的用法和示例

    @Async 注解的用法和示例 目录 @Async 注解的用法和示例 背景 异步调用 @Async介绍 在Spring中启用@Async 示例一:基本使用方式 示例二:在同一个类中调用异步方法 示例三 ...

  2. Go redis hash存储结构体

    需求 需要存储用户数据到redis,结构是hash. 然后取出来,自动转成结构体. 结构体 type UserCache struct { Id int64 `json:"id"` ...

  3. Spring源码之九finishRefresh详解

    Spring源码之九finishRefresh详解 公众号搜索[程序员田同学],专职程序员兼业余写手,生活不止于写代码 Spring IoC 的核心内容要收尾了,本文将对最后一个方法 finishRe ...

  4. 一比一还原axios源码(一)—— 发起第一个请求

    上一篇文章,我们简单介绍了XMLHttpRequest及其他可以发起AJAX请求的API,那部分大家有兴趣可以自己去扩展学习.另外,简单介绍了怎么去读以及我会怎么写这个系列的文章,那么下面就开始真正的 ...

  5. emu8086 调用LED面板的方法

    一.实验要求 1.熟悉并掌握 EMU8086 汇编语言调试环境: 2.学习 8086 的指令系统,输入简单的指令,观察各寄存器.内存相关单元以及处理器标志位的变化(所有数据传送类指令,可参考教材用例) ...

  6. 报错 ——Error evaluating expression 'id != null id > 0'.

    Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: ### Error qu ...

  7. 嵌入式Linux应用开发完全手册之环境搭建

    @ 目录 0.下载源配置 1.电脑BIOS启动虚拟化 2.linux网卡查看与IP设置 3.windows NAT虚拟网络配置 4.修改 Ubuntu 的 mountd 端口 5.vim设置 6.Mo ...

  8. 在线Remix链接本地文件夹

    问题 1.本地Remix环境版本滞后于在线编译器,新版本的语法在旧版本编译器中出现错误. 2.没有配置Vscode编译器,不便导入项目. 解决方案 *本解决方案基于Mac系统 创建共享文件夹 在本地创 ...

  9. loj2341「WC2018」即时战略(随机化,LCT/动态点分治)

    loj2341「WC2018」即时战略(随机化,LCT/动态点分治) loj Luogu 题解时间 对于 $ datatype = 3 $ 的数据,explore操作次数只有 $ n+log n $ ...

  10. pytorch方面

    (113条消息) Pytorch基础:Torch.mul.Torch.mm与Torch.matmul的异同_名字填充中的博客-CSDN博客_pytorch torch.mul (111条消息) pyt ...