原文地址
http://zhidao.baidu.com/question/206374215.html
在 Android 中,如果要使用系统限制的权限(比如 android.permission.WRITE_SECURE_SETTINGS),我们需要把程序安装到 /system/app/ 下。下面以 SecureSetting.apk 为例,演示这个操作。需要准备一台已经获得 Root 权限的手机。1、通过 USB 连接手机和电脑。2、使用 adb 控制手机。源码打印?1. $ adb push SecureSetting.apk /sdcard/  // 上传要安装的文件,为安装做准备。  2. $ adb shell  3. $ su // 切换到 root 用户。如果没有获得 Root 权限,这一步不会成功。  4. # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system // 让分区可写。  5. # cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk // 这一步可以用 cp 实现,但一般设备中没有包含该命令。如果使用 mv 会出现错误:failed on '/sdcard/NetWork.apk' - Cross-device link。   6. # mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system // 还原分区属性,只读。  7. # exit  8. $ exit  $ adb push SecureSetting.apk /sdcard/  // 上传要安装的文件,为安装做准备。
$ adb shell
$ su // 切换到 root 用户。如果没有获得 Root 权限,这一步不会成功。
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system // 让分区可写。
# cat /sdcard/SecureSetting.apk > /system/app/SecureSetting.apk // 这一步可以用 cp 实现,但一般设备中没有包含该命令。如果使用 mv 会出现错误:failed on '/sdcard/NetWork.apk' - Cross-device link。
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system // 还原分区属性,只读。
# exit
$ exit重启,可以看到 SecureSetting 已经安装好。
补充,如果要实现将自己的apk直接安装到/system/app/,则需要先写一个installer.apk,在里面执行shell将主要apk通过cat的方式写入/system/app,再用chmod修改权限,然后执行reboot就行了
附上java执行shell的代码:
public final class RootCmd {// 执行linux命令并且输出结果protected static String execRootCmd(String paramString) {String result = "result : ";try {Process localProcess = Runtime.getRuntime().exec("su ");// 经过Root处理的android系统即有su命令OutputStream localOutputStream = localProcess.getOutputStream();DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);InputStream localInputStream = localProcess.getInputStream();DataInputStream localDataInputStream = new DataInputStream(localInputStream);String str1 = String.valueOf(paramString);String str2 = str1 + "\n";localDataOutputStream.writeBytes(str2);localDataOutputStream.flush();String str3 = null;
//          while ((str3 = localDataInputStream.readLine()) != null) {
//              Log.d("result", str3);
//          }localDataOutputStream.writeBytes("exit\n");localDataOutputStream.flush();localProcess.waitFor();return result;} catch (Exception localException) {localException.printStackTrace();return result;}}// 执行linux命令但不关注结果输出protected static int execRootCmdSilent(String paramString) {try {Process localProcess = Runtime.getRuntime().exec("su");Object localObject = localProcess.getOutputStream();DataOutputStream localDataOutputStream = new DataOutputStream((OutputStream) localObject);String str = String.valueOf(paramString);localObject = str + "\n";localDataOutputStream.writeBytes((String) localObject);localDataOutputStream.flush();localDataOutputStream.writeBytes("exit\n");localDataOutputStream.flush();localProcess.waitFor();int result = localProcess.exitValue();return (Integer) result;} catch (Exception localException) {localException.printStackTrace();return -1;}}// 判断机器Android是否已经root,即是否获取root权限protected static boolean haveRoot() {int i = execRootCmdSilent("echo test"); // 通过执行测试命令来检测if (i != -1) {return true;}return false;}}

android开发中,apk文件安装到\system\app 的解决办法 仅限root机相关推荐

  1. 5 个 Android 开发中比较常见的内存泄漏问题及解决办法

    Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再 ...

  2. 【转】Android开发中adb启动失败adb连接异常的解决办法 offline

    原文网址:http://www.cnblogs.com/yejiurui/p/4173521.html 一.情况描述: 我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 ...

  3. Android开发中adb启动失败adb连接异常的解决办法

    一.情况描述: 我们在使用eclipse开发有时候会出现adb连接异常中,有时候控制台会打印出来 adb connect异常 比如会出现下面这样 : [2014-12-18 16:18:26 - ] ...

  4. ANDROID开发java.lang.NoClassDefFoundError: com.baidu.location.LocationClient的解决办法

     ANDROID开发java.lang.NoClassDefFoundError: com.baidu.location.LocationClient的解决办法 java.lang.NoClassDe ...

  5. Android开发中apk开启sdcard的读写权限

    在android开发中内存一般分为硬件设备自带的存储空间以及扩展存储空间(sdcard),本文只对使用Android Studio开发程序时开启sdcard的读写权限进行说明. 主要步骤分为两步    ...

  6. Android Studio安装插件提示was not installed: Cannot download的解决办法(仅限AS2.2版本以上)

    这是报错消息: Plugin Android ButterKnife Plugin Plus was not installed: Cannot download 'http://plugins.je ...

  7. android系统自带system/app下载,Android 把应用APK安装包放到system/app下的方法

    方法一: 然后打开cmd命令编辑器,建议下载PowerCmd方便操作. 输入adb shell回车 输入su回车 输入mount -o rw,remount/system回车 再打开另外一个cmd命令 ...

  8. Android开发中一种原封不动地保存Bitmap数据的办法

    最近一款软件需要保存图像时,不能有一丝一毫的失真,而且只限于本APP中打开.因此Bitmap.compress这种API是肯定不能用了.而网上的Android开发资料在保存Bitmap的时候都是用这个 ...

  9. 通过adb打开Android系统中data文件夹下的app,database的的文件

    网上有太多的办法,看的眼花扰乱, 如果你的情况和我是类似的那么久这么做 首先测试机是小米4,系统是MUIU8 7.4.24开发版的,Android6.0.1 小米的手机这点好,在安全管理中就可以roo ...

  10. VSCode中.py文件找不到路径的解决办法

    遇到的问题: 近期通过VSCode学Python,但由于之前没系统性接触过命令行,所以一度造成了些许麻烦. 在VSCode里面运行xxx.py时,由于刚开始工作目录没有设置,按初始化的目录,需要一步步 ...

最新文章

  1. 《Linux实践及应用》
  2. Python with语句
  3. Java并发编程:AbstractQueuedSynchronizer的内部结构
  4. 如何更改java源码_java – 如何在Android中更改ImageView源码
  5. MyDataSourceUtils使用ThreadLocal对象
  6. kafka java api 删除_使用Java API创建(create),查看(describe),列举(list),删除(delete)Kafka主题(Topic)...
  7. JDK 11:轻松取出单文件Java源代码程序
  8. .NET MVC运行周期
  9. Java web后端5 JSP技术
  10. C语言 error C4996: This function or variable may be unsafe - C语言零基础入门教程
  11. 家里的网很慢,如何用手机查看都有多少人使用?
  12. CDLinux破解各种无线网络
  13. 第26课:JSP Cookie 处理 读取和删除cookie(JSP教程 JSP入门实战教程 黄菊华Java网站开发系列教程)
  14. 电脑怎么把大量音频合并
  15. 笔记:WPS关于设置页眉页脚的问题
  16. CCNP路由实验之十七 广域网技术之一
  17. 境界--------相濡以沫,不如相忘于江湖
  18. java如何实现动态时钟_Java实现动态数字时钟
  19. 最全shell脚本语句语法使用(超详细)
  20. 笔记本电脑安装ubuntu18.04系统后wifi驱动缺失的解决方法

热门文章

  1. 怎么清理c盘语言文件,怎么清理c盘空间 c盘空间不足
  2. python刷火车票脚本_Python打造刷火车票工具邮件通知自己
  3. 量子化学计算机理,计算量子化学团队
  4. 天天酷跑php源码_run 模仿“天天酷跑”的游戏功能,涉及引擎编程,Libgdx 结构。图像绘制和动画,地图编 Game Engine 271万源代码下载- www.pudn.com...
  5. 修复IOS上滑动HTML界面光标乱跳
  6. python 相关系数(全)
  7. SQL在执行JOIN ON时,到底发生了什么?
  8. C++笔试面试题 -- 带答案
  9. AD9173/AD9689 FMC采集板卡调试记录
  10. Nginx报错failed (13: Permission denied)