"adb root"命令即使在模拟器上也返回"adbd cannot run as root in production builds"?
"adb root"命令即使在模拟器上也返回"adbd cannot run as root in production builds"?
我正在尝试在模拟器上运行adb root
命令;这是我唯一连接的设备:\n
$ adb devices List of devices attached emulator-5554 device
\n然而,我收到了以下错误信息:\n
$ adb root adbd cannot run as root in production builds
\n我尝试按照这个答案adb shell su works but adb root does not来解决我的问题:\n
\n按设计,adb root命令仅在开发版本中有效(即eng和userdebug,默认情况下具有ro.debuggable=1)。或者您可以使用修改后的adbd二进制文件(它不检查ro.debuggable)\n
\n然而,我不清楚如何将生成版本更改为开发版本?\n更新\n我找到了一些额外的说明,这让我相信要使其工作,您需要将模拟器设置为“可写系统”(参见How to make system partition in AVD in emulator writable)。然而,如果我尝试\n
$ emulator -avd Nexus_5X_API_28 -writable-system emulator: WARNING: System image is writable emulator: ERROR: Running multiple emulators with the same AVD is an experimental feature. Please use -read-only flag to enable this feature.
\n我不太确定如何解析这个错误消息;这是否意味着系统映像已经是可写的?
问题的原因是,在模拟器上运行"adb root"命令时,返回"adbd cannot run as root in production builds"的错误信息。这个错误是由于模拟器的构建类型是“production builds”,而不是“debug builds”所导致的。
解决方法是修改模拟器的构建类型为“debug builds”。可以通过以下步骤实现:
1. 在Android Studio中打开模拟器设备管理器。
2. 确保你可以将根模拟器设备添加到Android Studio中,并与VSCode共享。
3. 在Google上搜索并下载Windows上的“platform-tools for adb”。
4. 在VSCode中与设备进行交互,确保你已经在虚拟设备上安装了sqlite。
以下是在VSCode终端中与设备进行交互的示例(假设已经安装了sqlite):
adb root adb shell sqlite3
通过执行以上步骤,你应该能够成功地将模拟器的构建类型修改为“debug builds”,并且可以在模拟器上使用"adb root"命令。
问题的原因是在模拟器上运行adb root命令时返回了"adbd cannot run as root in production builds"的错误提示。解决方法是选择一个没有标记为"Google Play"的模拟器系统映像。
这是正确的答案,应该被标记为解决方法。非Play商店版本的构建可以在不需要越狱的情况下给你一个root shell。
以下是解决方法的具体步骤:
1. 打开Android Studio并启动模拟器。
2. 点击模拟器窗口右下角的“...”按钮,然后选择“Virtual Device Manager”。
3. 在Virtual Device Manager中,选择你要使用的模拟器,并点击“Edit”按钮。
4. 在模拟器配置页面的“System Image”部分,选择一个没有标记为"Google Play"的系统映像。如果没有可用的非Play商店版本的系统映像,你可以点击“Download”按钮下载并安装一个。
5. 点击“Finish”保存更改,并重新启动模拟器。
6. 重新打开终端或命令提示符,并导航到ADB的安装目录。
7. 运行以下命令来重新启动ADB服务器:
adb kill-server
和
adb start-server
。
8. 现在你可以运行
adb root
命令,它应该成功执行而不会返回错误提示。
通过按照上述步骤选择一个没有标记为"Google Play"的模拟器系统映像,你就能够成功地在模拟器上运行adb root命令并获取root权限。这样你就可以进行更高级的调试和测试操作。
问题出现的原因是,通过使用"adb root"命令在模拟器上返回了"adbd cannot run as root in production builds"的错误信息。根据提供的信息,可以得出以下解决方法:只有工程版本才能给予root权限,无法将用户版本更改为工程版本,但可以对其进行"root"操作。更多信息可以参考"https://stackoverflow.com/questions/5095234"。
根据给出的信息,可以看到在命令行中,如果以"#"开头,表示是工程版本;如果以"$"开头,表示是用户版本。只有工程版本才能给予root权限。此外,还有一个回答提到,只有"Play Store"镜像才会禁用root shell。
问题的原因是模拟器是用户版本,无法获得root权限。解决方法是进行"root"操作或使用"Play Store"镜像。