我正在尝试将Android仿真器指向本地VM,为此我需要adb root
。但是,出现此错误:
$ adb root
adbd cannot run as root in production builds
但是我正在运行的p2p-app
的构建版本是debug
:
build.gradle
模块的p2p-app
包括以下内容:
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
debuggable false
signingConfig signingConfigs.release
}
debug {
testCoverageEnabled = true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
debuggable true
versionNameSuffix '-' + gitBranchName()
applicationIdSuffix '.fifa'
ext.betaDistributionReleaseNotesFilePath = "fabric-changelog.txt"
ext.betaDistributionGroupAliases = "android-engineers"
}
}
}
由于debug
变体具有debuggable true
,我希望可以对仿真器进行root访问吗?
答案 0 :(得分:3)
在ADB root is not working on emulator之后,我设法通过从 Google APIs 系统映像而不是 Google Play 一个系统映像创建一个模拟器来克服此限制(请参见下面的屏幕截图) )。
有了这个模拟器,我就能adb root
:
$ adb root
restarting adbd as root
答案 1 :(得分:2)
adb root
shell 命令与任何应用程序的构建变体无关。该命令仅尝试在具有root权限的目标设备上重新启动adbd
(d
代表守护程序)。设备(仿真器)映像的构建配置可以授予这些权限。
对于 Android 仿真器配置,无法授予root权限。而且,由于adbd
和仿真器的shell
都比普通设备(又称为非根用户)具有更高的特权,因此完全是多余的。
此外,here还提供了关于备用设备和仿真器之间差异的非常小的额外解释。