有时候我们在Android 系统内置自己的应用,在测试时,Android Studio 默认的安装方式是将我们开发的应用作为普通应用安装到系统中的。本文提供一种方式,在开发过程中,将apk内置到系统中,而不需要系统源代码。

adb 将apk内置到系统的方法很多人已经提到过了,但是大多都过时了,或者叙述不详细。下面的方式在我在 Android 7.1.1 测试通过

内置Apk的特权

Android 内置 apk 有如下特权:
1. 不能被普通用户卸载
2. 具有比普通应用更高的权限,可以使用受限的系统 API,
3. 结合某些 Manifest.xml 声明,可以实现更多效果,例如系统级保活
4. 可以声明 priority > 0 的 组件
(其他特权有待发现..)

准备apk

点击Android Studio 的 Build -> Build Apk(s) ,生成我们测试用的 apk。

如果你的 apk 带有 .so库,需要同时准备对应目标系统平台的 .so。我的测试机是 arm64-v8a,则我需要的 .so库 在工程的 app/build/intermediates/cmake/debug/obj/arm64-v8a/ 下。

清理旧的安装

之前测试过程中,你可能已经安装过apk到系统中,需要先卸载,不然有可能影响我们之后内置方式安装的apk的执行。

卸载方式一

通过手机自带软件管理卸载。这种比较简单了,不多说。

卸载方式二

通过adb卸载。
打开控制台,输入下面的命令卸载旧的安装

> adb uninstall <your package name>

例如我的报名是 com.star.test,我的完整卸载命令是

> adb uninstall com.star.test

看到控制台输出 SUCCESS 即表示卸载完成。

签名(可跳过)

如果我们的应用需要某些系统权限,可能需要使用系统签名,参考这篇文章为应用打上系统签名。

将应用Push到系统目录下

注: 以下命令运行可能报错 Read-only file system,解决该问题请参看 获取Android System 写入权限

推送apk到系统目录

输入如下名命令

> adb push <your apk path> /system/priv-app

Android 4.4 之后,系统核心apk安装在 /system/priv-app 中,以前是安装在 /system/app 中。

推送 .so 到系统库目录下

如果apk带有 .so 库,.so 库也需要单独push到 /system/lib 或者 /system/lib64 中,具体看你的系统有哪个目录。当然,.so 的ABI需要和系统ABI符合。

安装应用

在 Android 5.0 以前,推送到系统应用目录中的apk会被自动安装,Android 5.0 之后,只在系统启动时,系统会自动安装它。

确认有没有被实际安装,可以通过如下命令

> adb shell //进入adb shell 模式
# pm list packages | grep <your package name>//在所有已安装的apk中,查找指定的apk有没有安装

如果安装成功,则会有一行输出,显示自己的应用包名,否则不会有任何输出提示。

可以通过重启系统来使刚刚push进入的apk安装到系统中。如果完全重启系统的话,花费时间较长,可以通过部分重启来节省时间。在cmd中执行如下命令。

> abd shell//进入adb shell 模式
# am restart //重启系统(非完全重启) 

重启之后正常情况下应用应该已经安装了,接下来测试下应用是否能能够工作。

adb将Apk内置到系统中(system/priv-app)相关推荐

  1. 将第三方apk内置到rom中的方法

    前提工作是:(1) 安卓SDK环境的搭建,百度上搜一搜就可以了.(2$ 表示不需要root,#表示需要root 1.打开CMD命令 2.查看连接的设备:adb devices 3.命令的操作: (1) ...

  2. android内置t卡中预制资源,[FAQ17514][Recovery]Recovery mode FAQ搜寻指南

    [DESCRIPTION] Recovery mode 依据不同问题归类为几个属性标签如下 [Debug/Log]   :debug log , adb 相关问题 [OTAError]      :升 ...

  3. 手把手教你使用ADB卸载手机内置App软件

    [一.前言] 不知道你们有没有那么一段黑暗时期,刚买个手机,手机上内置一堆app,还卸载不掉,然后每天各种广告,手机一共1G的运行内存,那些流氓app还要再占走一些内存,真是让人欲哭无泪啊,后来我就学 ...

  4. 华为鸿蒙内置,内置鸿蒙系统,华为生态产品海雀智能摄像头Pro体验

    提起华为鸿蒙系统,估计很多人都不陌生,作为一款分布式操作系统,目前已经在华为智慧屏.华为手表.九阳.美的等产品中内置了鸿蒙系统,手机鸿蒙系统目前正在内测,估计很快大多数华为荣耀手机都可以升级鸿蒙系统了 ...

  5. w10系统自带linux系统,win10下,内置linux系统的安装和体验,你造吗?

    原标题:win10下,内置linux系统的安装和体验,你造吗? 众所周知,windows系统和linux系统一直是水火不容,而在最新的win10系统却完美兼容了linux系统,但是在默认情况下是关闭的 ...

  6. 鸿蒙系统摄像头,内置鸿蒙系统,华为生态产品海雀智能摄像头Pro体验

    提起华为鸿蒙系统,估计很多人都不陌生,作为一款分布式操作系统,目前已经在华为智慧屏.华为手表.九阳.美的等产品中内置了鸿蒙系统,手机鸿蒙系统目前正在内测,估计很快大多数华为荣耀手机都可以升级鸿蒙系统了 ...

  7. python sort函数返回值_lambda函数与箭头函数在集合内置函数应用中的对照学习

    Python语言中有一个定义轻量级规则的lambda函数,其语法格式为: Lambda 参数列表:返回值表达式 简单的例子如:定义func=lambda x,y:x+y,则调用func(10,20)的 ...

  8. 华为手机鸿蒙系统自带吗,内置鸿蒙系统的四款华为手机,实力都很强,可惜都有一点瑕疵!...

    随着鸿蒙系统的正式公布,华为手机的热度也升高了不少,尽管华为机型的供货速度以及供货量都不算特别出色,但对于想购买的用户来说,经过一轮又一轮的抢购之后,还是有很大的几率可以买到.而且,华为除了如今已经发 ...

  9. adb 卸载 Anroid 内置应用

    adb 卸载 Anroid 内置应用 B站视频 博客链接

最新文章

  1. 6.1.1 验证注解的使用
  2. 我去,你写的 switch 语句也太老土了吧
  3. java web hello world(一)
  4. 理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...
  5. Spring常用的的注解对应xml配置详解
  6. 图像分类中混淆矩阵精度验证法中的几个指标说明
  7. 通过asm动态构造class文件
  8. 《天天数学》连载21:一月二十一日
  9. centos 6.4扩展挂载点磁盘空间
  10. Per-class allocator 2
  11. 锁机制,信号机制,事件机制
  12. 磁盘不见了只剩一个c盘_电脑硬盘分区不见了怎么恢复数据?
  13. C# Spire操作Word文档生成PDF或JPG格式
  14. 北京家庭摇号计算机,北京摇号积分计算|2021北京家庭摇号积分怎么算? 北京家庭积分摇号计算 - 有车一族汽车网...
  15. Windows下实用工具汇总(更新……)
  16. (九)统计学习方法 | 隐马尔可夫模型
  17. error:jump to case label [-fpermissive]
  18. Melanopic EDI(简称m-EDI) 计算软件
  19. 机器人李继红_电力设备
  20. java学习2022-6-7

热门文章

  1. SLAM——开源项目学习
  2. kmeans算法详解和python代码实现
  3. vue如何判断数组是否为空
  4. python GUI 绑定事件
  5. 国服绝地求生服务器维护,绝地求生攻略 新手必备的知识点 系统维护的具体时间...
  6. java请销假管理系统(vue+ElementUI)
  7. C++ 接配器(Adapter)总结
  8. Windows10在PowerShell中启动Redis
  9. uni-app自定义摄像头拍照添加人物框
  10. 记录一点捞程序员简历的感想