Android系统应用开发

android:sharedUserId=“android.uid.system”

AndroidMainfest.xml中添加 android:sharedUserId="android.uid.system" 。通过sharedUserId属性,相同User id的apk配置运行在同一进程中,把程序的User id配置成android.uid.system,也就是让程序运行在系统进程中,这样程序就有权限来读写系统配置。

Android push apk to /system/app/ or /system/priv-app

将安卓apk包安装到系统目录下

1.首先需要root权限 adb root
2.adb remount

adb remount put /system partition in writable mode. By default /system is only readable. It could only be done on rooted device.
adb remount 将 /system 分区置于可写模式。 默认情况下 /system 仅可读。 它只能在root设备上完成。
adb remount相当于adb shell mount -o rw,remount,rw /system

如果之前有安装过,或者run过,可先清除安装包,切换到对应的路径下
1.例如/system/priv-app下的apk,如adb shell rm -rf xxxx
2./data/data/对应包名的文件
或者直接在Android Studio中的Device FireExplorer中删除

3.将安装包push到/system/priv-app

adb push xxxx/path/debug.apk /system/priv-app

或者在或者直接在Android Studio中的Device FireExplorer中upload对应的apk

4.reboot

/system/app 和 /system/priv-app 的区别

可参考:

  • 特许权限许可名单与SystemApp
  • 特许权限许可名单

什么是system app?

  • 特定的shared uid的app都属于system app,例如:android.uid.systemandroid.uid.phoneandroid.uid.logandroid.uid.nfcandroid.uid.bluetoothandroid.uid.shell等,这些app都被赋予了ApplicationInfo.FLAG_SYSTEM标志,在PackageManagerService
  • 特定目录下的app,例如/vendor/overlay/system/framework/system/priv-app/system/app/vendor/app/oem/app下面的应用,这个在PackageManagerService中也有相关的定义

什么是特权app?

特权app 也叫privileged app,能够使用特许权限的应用
特权应用是位于系统映像某个分区上 priv-app 目录下的系统应用。各 Android 版本中,该分区为:

  • Android 8.1 及更低版本 - /system
  • Android 9 及更高版本 - /system, /product, /vendor

从这个路径可以知道,特权app首先必须是System app。也就是说 System app分为普通的system app和特权的system app。/system/app/system/priv-app区别就是,/system/app下面的是普通的system app,而/system/priv-app下面是特权app,他能够声明获得更多的权限。

从Android 8.0开始,特权应用如果使用系统的特许权限,那么需要把这个特许权限加入到白名单中,这个就叫特许权限许可名单

如何配置特许权限许可名单?

如何配置特许权限许可名单呢,这个在官方指导文档里面也说明了:

  • 对于已包含在 Android 开源项目 (AOSP) 树中的应用,请将其权限列在 /etc/permissions/privapp-permissions-platform.xml 中。
  • 对于 Google 应用,请将其权限列在 /etc/permissions/privapp-permissions-google.xml 中。
  • 对于其他应用,请使用以下格式的文件:/etc/permissions/privapp-permissions-DEVICE_NAME.xml

privapp-permissions.xml 文件只有在与特权应用位于同一分区时才能授予或拒绝授予该应用权限。例如,如果 /vendor 分区上的应用请求特许权限,则只能由同样位于 /vendor 上的 privapp-permissions.xml 文件来同意或拒绝该请求。

而像我们将应用预置到system下面的话,就要将privapp-permissions.xml文件放到system分区下面。

遇到的问题

1.Android Stuido不能直接运行项目,install apk到整机设备上
可能会有如下的提示:

Couldn't terminate the existing process for

可以先root后,通过

adb shell ps 查看进程信息adb shell ps | grep 包名 过滤某个进程的信息,可查看进程id

获取进程名,查找不能terminate的进程adb remount后,删除/system/priv-app 或者 data/data下的包,然后重启即可

Android系统应用开发相关推荐

  1. Android系统级开发进程清理功能的一些记录和发现(一)

    Android系统级开发清理功能的一些记录和发现 客户需求做一键清理所有后台进程的功能,在查阅网上相关博客以及自己研究以后找到以下几种方法: killBackgroundProcesses() 这种方 ...

  2. Android系统级开发进程清理功能的一些记录和发现

    Android系统级开发清理功能的一些记录和发现 客户需求做一键清理所有后台进程的功能,在查阅网上相关博客以及自己研究以后找到以下几种方法: killBackgroundProcesses() 这种方 ...

  3. android原生系统开发板,刷android系统到开发板上.doc

    刷android系统到开发板上 将安卓系统刷系统到开发板上 马亲民 2014.12.20 1.擦除NAND FLASH中原有的Windows CE1 2.加载USB引导文件4 3.下载Linux内核9 ...

  4. android系统应用开发_利用ADB工具免root停用Android系统应用

    最近迷上了安卓的开发,写篇冻结app的教程吧. 主要是实现,免root冻结系统中的某些应用,你懂得哈哈 利用ADB工具免root停用Android系统应用 - Hanada​hanada.info 上 ...

  5. android系统nfc开发,GitHub - hanjie511/MyNFC: android的NFC开发入门

    MyNFC android的NFC开发入门 NFC简述 近距离无线通信 (NFC) 是一组近距离无线技术,通常只有在距离不超过 4 厘米时才能启动连接.借助 NFC,您可以在 NFC 标签与 Andr ...

  6. Android 系统应用开发-模拟器调试

    前言 系统应用开发有时候也需要用到模拟器调试,就需要用到系统签名文件,本篇分享一下,如何生成模拟器所需的系统签名文件 一.签名文件生成 1.工具下载 https://github.com/getfat ...

  7. 在android系统中开发DLNA

     内容目录 Part 1. 前言:DLNA简介 Part 2. 主体:DLNA在android中的开发流程 Part 2. 关于DLNA的其他知识 Part 1. 前言:DLNA简介 DLNA,D ...

  8. MOTOROLA MC40 android系统扫描开发

    MOTOROLA MC40 android系统除在手机应用DataWedge中配置Profile之外,代码部分也是重点修改的位置. 官方文档:https://launchpad.motorolasol ...

  9. android系统应用开发常用的adb命令个人收藏集锦(不断更新)

    adb查看android设备内存使用情况 1.查看设备节点内存adb shell df 2.查看磁盘内存和运行内存:adb shell free 3.查看内存详细数据adb shell cat /pr ...

  10. 【Android系统蓝牙开发】蓝牙基础知识-蓝牙核心系统架构

    什么是蓝牙? 在开启基于蓝牙Spec v5.2的学习前,我们先了解下什么是蓝牙?蓝牙在我们日常生活中又存在哪些实际应用呢? 蓝牙无线技术是一种短距离无线通信系统,其核心特性主要是以下三点: robus ...

最新文章

  1. android 动态获取权限有哪些,Android 6.0+ 动态获取权限
  2. 笔记:基于标签的推荐系统、基于图的推荐算法、PersonalRank
  3. 四级重点高频词汇表_四级为什么自己估分和真实成绩不一样……?
  4. jQuery表单对象属性过滤选择器
  5. docker 容器基础技术
  6. mybatis数据库数据分页问题
  7. oracle consistent gets,oracle构建一致性读
  8. 他是奥运会银牌获得者,还是世界知名数学家,他的家族让世界为之倾倒
  9. Mybatis判断int类型是否为空
  10. php与sql server,PHP和SQL Server – 思考
  11. 每日站立例会01,02,03
  12. 火狐浏览器手机版_火狐浏览器第三方编译版:tete009 Firefox
  13. 计算机辅助设计技术案例,【智能科技学院】学院前沿技术运用课程组开展“计算机辅助设计”专题讲座...
  14. python笔试和面试题汇总(免费下载)
  15. 归并排序算法(二路)——C/C++
  16. java开发面试自我介绍模板_java面试自我介绍范文
  17. uipath对SAP的抓取
  18. Joining multiple DataFrames only supported for joining on index
  19. Java基础复习总结笔记(上)
  20. html收藏导入浏览器,分享星愿浏览器导入和导出收藏夹方法

热门文章

  1. 如何让ie窗口显示到最前面
  2. camera 添加外挂pmic进行供电的涉及
  3. 三十岁那年,我的梦想是年薪十万
  4. 超级计算机神威太湖之光储蓄量,中国超级计算机神威太湖之光世界最快,且总量排名榜单第一...
  5. ID BOX 121电子护照阅读器(带RFID双天线)参数与应用说明
  6. 知识图谱嵌入(KGE):方法和应用的综述
  7. 中国大学慕课python答案第七章_中国大学MOOC慕课用Python玩转数据章节测试答案...
  8. (转)转给入职新人得体会
  9. AirSim学习日志 9-三维空间航路点跟踪
  10. python网易云音乐爬虫歌词_一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取...