在 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目录下,使其成为系统级应用,是一项高级操作,主要用于开发者在进行ROM定制、应用预装或是系统级调试时。以下将深入解析这一过程,涵盖技术背景、实现步骤及注意事项。...
- **系统应用安装**: 如果要安装的APK作为系统应用,需要获取设备的root权限,然后将APK放在/system/app或/system/priv-app目录下,并执行`adb remount`和`adb push`命令,最后重启设备。 - **多版本共存**: 使用...
在非root设备上,通常只能安装数据/app目录下的用户应用,而root权限则可以将APK安装到system/app,使应用成为系统应用。 3. **脚本安装APK**: "i.sh"很可能是一个bash脚本,用于自动化APK的安装过程。通常,这样...
在 AndroidManifest.xml 文件中添加 android:sharedUserId="android.uid.system",这样可以使 APK 的权限升级到 system 级别。同时,还需要在对应的 Android.mk 文件中添加 LOCAL_CERTIFICATE := platform。这一方法...
在进行Android应用开发时,经常需要在模拟器上安装、测试并卸载各种.apk文件。然而,并不是所有开发者都熟悉如何有效地执行这一操作。本文将详细介绍如何在Android模拟器中删除.apk文件,并提供三种不同的方法。 ##...
(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 Package)是应用程序的基本打包格式,它包含了应用程序的所有组件,如代码、资源、图标和元数据。当我们提到"android 系统升级apk"时,通常指的是更新现有设备上的应用程序或操作系统...
4. **第三方应用安装**:通过SD卡中的APK文件进行安装,具有安装界面,安装过程由`packageinstaller.apk`负责处理。 #### 三、涉及的关键目录 - **system/app**:存储系统自带的应用程序,需要root权限才能删除。 ...
在Android系统中,APK(Android Package)是应用程序的安装包格式,类似于其他操作系统中的.exe文件。本主题将深入探讨如何在Android系统的安装目录下安装APK包,并提供一个简单的例子来帮助理解这一过程。 首先,...
- 将APK文件复制到 `/system/app` 目录:这通常需要使用adb(Android Debug Bridge)工具,通过USB连接电脑进行操作。 - 修改文件权限:确保APK文件具有正确的权限,一般为`644`,并且其所属用户和组为`system`。 ...
在Android操作系统中,"system/app"是一个至关重要的目录,它包含了Android系统预装的应用程序。这些应用程序是系统的核心组成部分,通常由设备制造商或Google预先安装,以提供基本功能和服务。让我们深入探讨一下这...
支持安装方式 1.启动系统安装界面正常安装安装。...静默安装到/system/app中,需要root权限。 卸载方式 1.利用系统卸载界面PackageUninstalActivity来卸载。 2.卸载安装到/system/app/下的内置应用。
在Android系统中,APK文件是应用程序的安装包,相当于iOS中的IPA文件。APK包含了一个应用的所有资源、代码和元数据,用户可以通过安装APK来运行应用。本篇文章将详细探讨如何进行Android备份(提取)APK的操作,以及...
在Android系统中,静默安装APK是指在用户无感知的情况下自动进行的安装过程,通常需要设备具有root权限。静默安装APK适用于自动化部署、批量更新应用等场景。本教程将详细介绍如何实现Android定时静默安装APK,并在...
在Android 7.0版本中,由于安全性的增强,非root用户在没有system权限的情况下执行这些操作变得相对复杂。然而,仍有一些合法的方法可以实现这一目标。以下是一些可能的实现方式: 1. **企业设备管理(Enterprise ...
在Android中,权限分为普通权限和危险权限,这些权限在应用程序安装时由用户授权。而系统权限则更为特殊,它们不向常规用户应用开放,而是仅适用于系统应用或具有特定签名证书的应用。这些权限包括但不限于`android....
在Android开发过程中,为了实现特定的系统级功能,如app的静默升级、修改系统时间或时区等,开发者需要让自己的应用拥有更高的权限。这通常涉及到对APK进行系统签名的过程。本教程将详细解释如何使用提供的"android...
然而,如果将 APK 文件放置到 /system/app 目录下,应用将以系统应用的身份运行,拥有更高的权限,甚至可以绕过一些常规权限限制。系统应用通常预装在 Android ROM 中,具备 root 权限。 ** APK 文件的打开方式 ** ...
在Android开发中,有时需要对系统进行更深层次的操作,例如修改系统文件或访问特定的硬件资源等,这就需要使用到root权限。root权限通常被视为超级用户权限,在Android系统中拥有最高级别的控制权,可以执行几乎所有...