`
andy_叶
  • 浏览: 69274 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

 
阅读更多
在 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 把软件安装成系统软件(安装到system/app目录下)

    在Android系统中,将应用程序安装至system/app目录下,使其成为系统级应用,是一项高级操作,主要用于开发者在进行ROM定制、应用预装或是系统级调试时。以下将深入解析这一过程,涵盖技术背景、实现步骤及注意事项。...

    APK文件的安装方法

    - **系统应用安装**: 如果要安装的APK作为系统应用,需要获取设备的root权限,然后将APK放在/system/app或/system/priv-app目录下,并执行`adb remount`和`adb push`命令,最后重启设备。 - **多版本共存**: 使用...

    Android APK安装脚本.rar

    在非root设备上,通常只能安装数据/app目录下的用户应用,而root权限则可以将APK安装到system/app,使应用成为系统应用。 3. **脚本安装APK**: "i.sh"很可能是一个bash脚本,用于自动化APK的安装过程。通常,这样...

    android apk获取root权限方法总结

    在 AndroidManifest.xml 文件中添加 android:sharedUserId="android.uid.system",这样可以使 APK 的权限升级到 system 级别。同时,还需要在对应的 Android.mk 文件中添加 LOCAL_CERTIFICATE := platform。这一方法...

    删除Android模拟器中的.apk文件

    在进行Android应用开发时,经常需要在模拟器上安装、测试并卸载各种.apk文件。然而,并不是所有开发者都熟悉如何有效地执行这一操作。本文将详细介绍如何在Android模拟器中删除.apk文件,并提供三种不同的方法。 ##...

    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

    在Android系统中,APK(Android Package)是应用程序的基本打包格式,它包含了应用程序的所有组件,如代码、资源、图标和元数据。当我们提到"android 系统升级apk"时,通常指的是更新现有设备上的应用程序或操作系统...

    android apk安装流程及解析

    4. **第三方应用安装**:通过SD卡中的APK文件进行安装,具有安装界面,安装过程由`packageinstaller.apk`负责处理。 #### 三、涉及的关键目录 - **system/app**:存储系统自带的应用程序,需要root权限才能删除。 ...

    android安装系统目录下的APK包

    在Android系统中,APK(Android Package)是应用程序的安装包格式,类似于其他操作系统中的.exe文件。本主题将深入探讨如何在Android系统的安装目录下安装APK包,并提供一个简单的例子来帮助理解这一过程。 首先,...

    Android批量静默安装程序,无权限提示框

    - 将APK文件复制到 `/system/app` 目录:这通常需要使用adb(Android Debug Bridge)工具,通过USB连接电脑进行操作。 - 修改文件权限:确保APK文件具有正确的权限,一般为`644`,并且其所属用户和组为`system`。 ...

    android系统自带system/app

    在Android操作系统中,"system/app"是一个至关重要的目录,它包含了Android系统预装的应用程序。这些应用程序是系统的核心组成部分,通常由设备制造商或Google预先安装,以提供基本功能和服务。让我们深入探讨一下这...

    android apk各种安装卸载方式

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

    android 7.0非root下 实现静默安装 多种方式

    在Android 7.0版本中,由于安全性的增强,非root用户在没有system权限的情况下执行这些操作变得相对复杂。然而,仍有一些合法的方法可以实现这一目标。以下是一些可能的实现方式: 1. **企业设备管理(Enterprise ...

    Android 备份(提取)apk

    在Android系统中,APK文件是应用程序的安装包,相当于iOS中的IPA文件。APK包含了一个应用的所有资源、代码和元数据,用户可以通过安装APK来运行应用。本篇文章将详细探讨如何进行Android备份(提取)APK的操作,以及...

    android定时静默安装apk

    在Android系统中,静默安装APK是指在用户无感知的情况下自动进行的安装过程,通常需要设备具有root权限。静默安装APK适用于自动化部署、批量更新应用等场景。本教程将详细介绍如何实现Android定时静默安装APK,并在...

    android开发,给apk授予系统权限

    在Android中,权限分为普通权限和危险权限,这些权限在应用程序安装时由用户授权。而系统权限则更为特殊,它们不向常规用户应用开放,而是仅适用于系统应用或具有特定签名证书的应用。这些权限包括但不限于`android....

    android开发apk进行系统签名工具

    在Android开发过程中,为了实现特定的系统级功能,如app的静默升级、修改系统时间或时区等,开发者需要让自己的应用拥有更高的权限。这通常涉及到对APK进行系统签名的过程。本教程将详细解释如何使用提供的"android...

    apk文件如何打开?.docx

    然而,如果将 APK 文件放置到 /system/app 目录下,应用将以系统应用的身份运行,拥有更高的权限,甚至可以绕过一些常规权限限制。系统应用通常预装在 Android ROM 中,具备 root 权限。 ** APK 文件的打开方式 ** ...

    Android应用程序请求root权限代码

    在Android开发中,有时需要对系统进行更深层次的操作,例如修改系统文件或访问特定的硬件资源等,这就需要使用到root权限。root权限通常被视为超级用户权限,在Android系统中拥有最高级别的控制权,可以执行几乎所有...

Global site tag (gtag.js) - Google Analytics