Android emulator 如何在Android emulator上获得root访问权限?
我有所有的Android SDK版本(从1.5到2.3.3),并且我尝试了许多在Android emulator中获得根目录的方法。我不使用任何Android设备,在emulator(AVD)上测试所有东西 我需要在任何一个Android emulator中获得根访问权限才能使用“iptables”和“busybox”功能。要使用iptables,我必须具有root访问权限。至少应在终端仿真器中执行“su”命令 我还安装了Android emulator 如何在Android emulator上获得root访问权限?,android-emulator,root,Android Emulator,Root,我有所有的Android SDK版本(从1.5到2.3.3),并且我尝试了许多在Android emulator中获得根目录的方法。我不使用任何Android设备,在emulator(AVD)上测试所有东西 我需要在任何一个Android emulator中获得根访问权限才能使用“iptables”和“busybox”功能。要使用iptables,我必须具有root访问权限。至少应在终端仿真器中执行“su”命令 我还安装了z4root应用程序 但是它需要很长时间,没有完成生根,并且会被卡住。有人
z4root
应用程序
但是它需要很长时间,没有完成生根,并且会被卡住。有人说,如果我们将系统降级到RC30以下,这样我们就可以获得root访问权限。如果这是真的,那么怎么做呢?我使用Linux和Windows操作系统
请有人告诉我任何根目录我的模拟器的方法。以下是在模拟器运行时必须运行的命令列表,我在Android 2.2上测试此解决方案的avd:
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
adb push su /system/xbin/su
adb shell chmod 06755 /system
adb shell chmod 06755 /system/xbin/su
它假定su二进制文件位于工作目录中。您可以在此处找到su和超级用户:。
每次启动emulator时都需要运行这些命令。您可以编写一个脚本来启动emulator并将其根目录。我认为最简单的方法是为命令
sh
创建一个别名,例如
adb shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
在Android Emulator 3.0及更高版本上测试。对于5.1.1和6.0版本的AVD,我在windows中使用了下一个脚本:
set adb=adb -s emulator-5558
set arch=x64
set pie=
adb start-server
%adb% root
%adb% remount
rem %adb% shell mount -o remount,rw /system
%adb% shell setenforce 0
%adb% install common/Superuser.apk
%adb% push %arch%/su%pie% /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push %arch%/su%pie% /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
rem %adb% shell mount -o remount,ro /system
exit /b
需要从SuperSU更新.zip。将它们解压缩到任何文件夹。使用上面的内容创建bat文件。不要忘记指定必要的体系结构和设备:set adb=adb-s emulator-5558
和set arch=x64
。如果您运行的Android高于或等于5.0,请将set pie=
更改为set pie=.pie
。运行它。您将获得当前运行的临时根目录
若在重新安装系统分区时出错,那个么需要从命令行启动AVD。请参见以下Android 7的第一步
如果您想使其持久化,请在SuperSU中更新二进制文件,并将temp文件夹中的system.img存储为default system.img的替换项
如何将生成的临时根转换为永久根
首先,它去了SuperSu。它提供了二进制升级。以正常方式更新。重新启动拒绝
第二,仅与模拟器相关。同样的AVD。底线是不会保存系统映像中的更改。你需要为自己保留它们
已经有针对不同模拟器的不同指令
对于AVD,您可以尝试查找临时文件system.img,将其保存在某个位置,并在启动模拟器时使用
在Windows中,它位于%LOCALAPPDATA%\Temp\AndroidEmulator
中,名称类似于TMP4980.tmp
您将其复制到文件夹avd设备(%HOMEPATH%\.android\avd\%avd\u NAME%.avd\
)中,并重命名为system.img
现在,它将在开始时使用,而不是通常的。如果SDK中的映像已更新,则它将具有旧映像
在这种情况下,您需要删除此system.img
,并在创建时重复该操作
更详细的俄语手册:
对于android 7,您需要运行其他步骤: 1.需要手动运行模拟器。 转到sdk文件夹
sdk\tools\lib64\qt\lib
。
使用选项-可写系统-禁用selinux从该文件夹运行emulator
像这样:
F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
您需要从根目录重新启动adbd
:
adb-s emulator-5554根目录
并重新安装系统:
adb -s emulator-5554 remount
每次运行emulator只能执行一次。任何其他重新装载都可能中断写入模式。因此,您不需要使用remount运行任何其他命令,如mount-oremount、rw/system
另一个步骤保持不变——上传二进制文件,作为守护进程运行二进制文件,等等
来自AVD Android 7 x86和root的图片:
若您在execute
su
binary上看到关于饼图的错误,那个么您将错误的二进制文件上传到emulator。您必须在归档文件中上载名为su.pie
的二进制文件,但在emulator上它必须命名为su
,而不是su.pie
,我使用了上述解决方案中的部分方法;然而,它们并没有完全起作用。在最新版本的《安迪》中,这对我很有用:
在Andy(根Shell)[要获取,右键单击HandyAndy图标并选择术语Shell]
在shell中,运行以下命令:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
然后,安装SuperSU并安装SU二进制文件。这将替换我们刚刚创建的SU二进制文件。
(可选)
通过CWM删除SuperSU并安装Superuser。再次安装su二进制文件。
现在,根工作 如果您有一个具有root访问权限的虚拟设备,那么这应该可以完成以下任务:
$ > adb shell
generic_x86:/ $
generic_x86:/ $ exit
$ > adb root
restarting adbd as root
$ > adb shell
generic_x86:/ #
如果您没有,您可能会对这个问题感兴趣,并提出另一个问题,该问题解释了如何创建一个具有根访问权限的虚拟设备,该虚拟设备使用Google API(也称为Google Play服务),但不使用Google Play应用程序
如果您真的需要Google Play应用程序,您可能会对指导如何根目录Android虚拟设备的其他答案感兴趣。如何根目录Android emulator(在Android 7.1.1/Nougat上测试) 要求:
- (这里是XDA用户为主链接不工作时的可闪动拉链提供的备用链接:)
- 首先安装SuperSu应用程序,只需拖放即可(如果通过adb运行最新的emulator版本或侧向加载,即
)adb-e Install SuperSu.apk
- 安装后,当您运行它时,它会显示如下所示的屏幕,指示“没有安装SU二进制文件…”。此错误仅确认设备尚未根目录
- 正如它所建议的,我们需要给模拟器写系统fi的权限
echo on set device=emulator-5554 set avd_name= set adb=d:\Poprygun\DevTools\Android\Android-sdk\platform-tools\adb -s %device% set emulator=d:\Poprygun\DevTools\Android\Android-sdk\emulator\emulator set arch=x86 set pie= echo Close all ANDROID emulators and press any key pause start %emulator% -avd Nexus_One_API_25 -verbose -writable-system echo Wait until ANDROID emulator loading and press any key pause %adb% start-server %adb% root %adb% remount %adb% shell setenforce 0 %adb% install D:\SuperSU\SuperSU.apk %adb% push D:\SuperSU\su\%arch%\su.pie /system/bin/su %adb% shell chmod 0755 /system/bin/su %adb% push D:\SuperSU\su\%arch%\su.pie /system/xbin/su %adb% shell chmod 0755 /system/xbin/su %adb% shell su --install %adb% shell "su --daemon&" pause exit /b
Android 6 is necessary only adb root adb shell >/system/xbin/su --daemon & >setenfoce 0