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“ 目录查找。
Android 预置APK的更多相关文章
- Android预置Apk方法
这一套8.0过时了 需要修改pms代码 否则apk会被pms删除掉 因为工作需要,经常要开发和合入系统App,所以在此开篇作为收集和记录Android合入系统应用的方法,以备日后查阅. 一.预置apk ...
- MTK Android 预置APK
[FAQ03038] 如何预置APK [DESCRIPTION]1, 如何将带源码的 APK 预置进系统?2, 如何将无源码的APK预置进系统?3, 如何预制APK使得用户可以卸载?4, 如何使得用户 ...
- MTK Android O1平台预置apk
在MTK Android O1平台预置apk为可卸载时.预置到旧的路径system/vendor/operator/app会编译报错,"You cannot install files to ...
- Android 如何预置APK M
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- 怎样预置Android 手机 APK
预制APK有下面4种情况: 1, 怎样将带源代码的 APK 预置进系统? 2, 怎样将无源代码的APK预置进系统? 3, 怎样预置APK使得用户能够卸载,恢复出厂设置时不能恢复? 4, 怎样预置APK ...
- MTK平台Android项目APK预置方案
项目开发中,通常需要向系统中预置一些APK,这里简单介绍一下MTK平台预置APK的方法. 需要预置的apk可以放置在目录:vendor/mediate/${Project}/artifacts/out ...
- MTK 预置apk
一.如何将带源码的APK预置进系统? 1) 在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例 2) 将 Test ...
- 将HTML5封装成android应用APK文件的几种方法
越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...
- Android 天猫apk聊天数据库解密
1.使用Android 天猫apk 进行聊天会产生tmallWangXinDB的数据库.2.用sqlite3 工具打开提示加密或者错误.3.需要对该数据库进行解密. 解密流程:1.反编译apk,dex ...
随机推荐
- LeetCode-024-两两交换链表中的节点
两两交换链表中的节点 题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例说明请见LeetCode官网. 来源:力 ...
- ORACLE中ROWNUM
一.rownum 1.rownum是对结果集添加的一个伪列: 2.是先按某种条件查询出结果集之后又添加上的一个列; 3.它总是从1开始,因此在使用的过程中需要谨慎使用>,>=,=,betw ...
- 七牛云cdn加速
https://developer.qiniu.com/fusion/1228/fusion-quick-start https://blog.csdn.net/qq_27292113/article ...
- LGP5591题解
题意很明确,不说了. 前置芝士:单位根反演 也就是: \[[n|a]=\frac 1 n \sum_{i=0}^{n-1}w_n^{ai} \] 看到题目给的柿子: \[\sum_{i=0}^n\bi ...
- IDW插值得到降水量分布图
4 具体思路 4.1 加载数据 (1)点击[添加数据],选择"中国地面气候资料国际交换站数据集台站信息.csv"."省份.shp"和"2011年中国地 ...
- C++设计模式 - 状态模式(State)
状态变化模式 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?"状态变化"模式为这一问题提供了一种解决方案. 典型模式 Sta ...
- JVM基本概念
JVM基础概念 什么是JVM JVM:Java virtual machine,Java虚拟机,它是一种规范.是虚构出来的一台计算机.它可以将二进制字节码根据不同的操作系统转为当前操作系统识别的的字节 ...
- Java基础—private、this关键字及get/set方法
Java基础-private\this关键字以及get\set方法 1.private关键字 private关键字通常用来修饰成员变量用来保护原有数据的安全,比如在下面学生类中 然后在测试类中调用成员 ...
- 【Jenkins】基于Windows系统安装Jenkins
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 一.Jenkins简介 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件. Jenkins 支持各种 ...
- Docker重要容器命令
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 容器重要命令 启动守护式容器 docker run -d 镜像 docker run -d image [command][arg...] 使用c ...