`

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

阅读更多

 

原文地址
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;
	}

}
分享到:
评论
1 楼 ihopethatwell 2013-08-30  
这个root 是怎么实现的?

相关推荐

    Android 模拟器永久root工具

    (android for img.rar、Android SU文件更新包.zip、RootExplorer.apkSuperuser.apk) 1、用android for img.rar里的android for img.exe打开 E:\SDK\platforms\android-8\images\system.img,进入app文件夹, 添加...

    android apk各种安装卸载方式

    支持安装方式  1.启动系统安装界面正常安装安装。...静默安装到/system/app中,需要root权限。   卸载方式  1.利用系统卸载界面PackageUninstalActivity来卸载。  2.卸载安装到/system/app/下的内置应用。

    解决共享库不存在或失效导致的应用未安装

    用电脑手机助手进行安装时会出现没有该软件的共享库或已失效,这个问题大概困扰了我3天时间,终于在我的坚持下找到了解决方法,希望出现过这样问题的朋友严格安装我下面的步骤操作即可解决以上问题! 第一步:使用...

    systemappremover_10917.apk

    删除系统自带软件,要求root权限.

    安卓电视盒子ttl获取root权限教程及工具

    cp /mnt/sda/sda1/system/app/kinguser.apk /system/app cp /mnt/sda/sda1/system/etc/install-recovery.sh /system/etc cp /mnt/sda/sda1/system/xbin/ksud /system/xbin cp /mnt/sda/sda1/system/xbin/ku.sud /...

    android root工具

    把su 文件push到/system/bin/目录下, 把supseruser.apk 文件push到/system/priv-app/目录下, 重启即可实现root

    安卓 RE文件浏览器,Root Explorer PRO Apk 4.10.3

    Root explorer apk allows you to Access the whole of android’s file system including the secured ones. You can download 100% Original apk file of Root Explorer from our site without any survey or ...

    android Google地图不能定位问题解决

    拿起手机打开RE,找到sdcard,进去后找到temp文件夹,进入,用多选模式,把文件夹中的所有的apk文件(一大堆)移动到/system/app文件夹中,把所有的so文件(2个还是3个?)移动到/system/lib文件夹中,把所有的xml ...

    android 2.3.4 java虚拟机

    jbed.apk文件放入system\app目录下, 最后要将两个文件的权限改成和其他文件一样,如图所示。 重启就可以使用了。 注意:R.E.管理器 需要最高权限 R.E.管理器 需要挂载为读写才能复制文件到系统文件夹,和更改文件...

    SuperSU-v2.8.2.zip

    安装App 后打开,退出 2、先以root方式运行adb adb root adb remount adb -e push /Users/mac02/Downloads/SuperSU-v2.79-201612051815/x64/su /system/bin/su 修改su 文件权限 adb shell su root cd /system/bin ...

    note3原版相机apk

    root手机后,用re将此文件复制到SYSTEM/APP内,覆盖,重启手机,即可。

    Coolpad 7020 root tool

    输入c:\ ,输入cd root(或者到c:\windows\system32下拷贝cmd.exe文件至root目录,直接双击); 02、输入adb devices,看是否有类似如下提示,有则说明设备正确连接; 03、输入adb root,显示adbd is already ...

    android google maps 5.1增强版

    正常无法安装成功的解决方法:用Root Explorer,删掉system/app下的maps.apk,然后去设置->应用程序管理 卸载com.google.android.apps.maps项(如果没有重启再试),然后就可以安装。还有一种方法就是用Root ...

    NetworkLocation.apk

    NetworkLocation for android google maps 1. android手机获取root权限; 2. 将NetworkLocation.apk复制到/system/app下; 3. 重启手机;

    安卓系统2.3可装的JAVA模拟器直安装版-新版

    3、把jbed.apk文件放入system\app目录下,并把权限改成和其他文件一样, 重启就可以使用了。 4.将要安装的jar文件拷贝到SD卡根目录. 5.安装好后在手机的菜单中就会看到java的程序. 6.双进"java"进入后,就会看到...

    android adb shell 命令大全

    复制一个文件或目录到设备或模拟器上: adb push <source> <destination></destination></source> 如:adb push test.txt /tmp/test.txt 从设备或模拟器上复制一个文件或目录: adb pull <source> ...

    安卓2.3 java虚拟机(全套及软件)

    2.jbed.apk文件放入system\app目录下 (注意,上面两项操作均需要Root权限) 最后要将两个文件的权限改成和其他文件一样,如图(设置权限)。 重启就可以使用了。 有的手机可能会需要虚拟按键。这里也提供给大家。 ...

    三星GT-I9003(Galaxy SL)无声相机APK

    相机的声音是不是很烦人呢? 本人为此只做了一个无声相机,适用于三星GT-I9003(Galaxy SL) ...用RE管理器替换到system/app目录下即可,如果有可能,可以修改权限,仿照该文件夹下的其他文件,不多说,都懂。

    A60tools 乐PHONEROOT

    七、运行RE管理器,挂载为读写模式,找到system文件夹,打开app文件夹,开始将垃圾的系统程序删掉吧,要删除那个文件就在文件名上长按出现选择菜单后选择删除。注意每个程序有两个文件,apk和odex,两个都要删除,也...

    中兴u830下拉栏apk文件

    首先把framework-res.apk放在sdcard,使用re管理器复制到system/app下, 然后修改权限(第一列全选,第二列只选第一个), 然后再复制到system/framework下,提示你会是否覆盖文件, 你选是,然后过会就会重启...

Global site tag (gtag.js) - Google Analytics