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. LeetCode-094-二叉树的中序遍历

    二叉树的中序遍历 题目描述:给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链接:https://leetcode-cn ...

  2. 从头造轮子:python3 asyncio之 sleep (4)

    前言 书接上文:,本文造第四个轮子,也是asyncio包里面非常常用,并且非常复杂的一个函数sleep 一.知识准备 ● time.sleep直接让当前线程睡觉,但是这种方式显然是不能接受的,如果当前 ...

  3. nginx 如何访问php文件

    1.进入nginx安装路径,我的是/usr/local/nginxvi conf/nginx.conf将 location ~ \.php$ { root html; fastcgi_pass 127 ...

  4. Windows下搭建REDIS集群

    Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用 ...

  5. Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格

    Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格 在 Excel Power Query 未出来之前,把文件夹下所有文件合并为一个与合并同一工作表中的多个工作表,需要用 V ...

  6. HCIE数据挖掘笔记-005数据挖掘专业名词

    数据对象和属性类别: 数据一般有噪声,数量庞大,且来自不同的数据源 数据集由数据对象组成,一个数据对象代表一个实体 数据对象:样本.实例.数据点.对象 数据对象以数据元组的形式存放在数据库中,数据库的 ...

  7. git使用命令行保留原分支迁移代码仓库

    有些时候我们需要对git仓库中的项目进行一些迁移,如从a账号迁移到b账号下,从github平台迁移到内部的gitlab平台等.一般平台会自带 migrate 或者 import 的功能,可以很方便的进 ...

  8. Java8 中的流式数据处理

    java8的流式处理极大了简化我们对于集合.数组等结构的操作,让我们可以以函数式的思想去操作,本篇文章将探讨java8的流式数据处理的基本使用. 一. 流式处理简介 在我接触到java8流式处理的时候 ...

  9. ZYNQ 启动问题 :FSBL

    0.ZYNQ外部启动条件 1. 电源要求: 在阶段0 BootROM时,安全模式下PS与PL都是必须上电的:非安全模式PS需要上电,如图: 在阶段1 FSBL时,PS与PL都是必须上电的,因为PL将在 ...

  10. 4月27日 python学习总结 GIL、进程池、线程池、同步、异步、阻塞、非阻塞

    一.GIL:全局解释器锁 1 .GIL:全局解释器锁 GIL本质就是一把互斥锁,是夹在解释器身上的, 同一个进程内的所有线程都需要先抢到GIL锁,才能执行解释器代码 2.GIL的优缺点: 优点:  保 ...