我正在尝试将 Android 模拟器指向本地虚拟机,为此我需要
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 访问权限?
遵循 ADB root 无法在模拟器上运行,我通过从 Google APIs 系统映像而不是 Google Play 系统映像创建模拟器来克服这一限制(请参见下面的屏幕截图)。
有了这个模拟器,我能够
adb root
:
$ adb root
restarting adbd as root
adb root
shell 命令与任何应用程序的构建变体无关。该命令只是尝试在具有 root 权限的目标设备上重新启动 adbd
(d
代表守护进程)。这是设备(模拟器)图像构建配置来授予这些的问题。
如果是 Android 模拟器配置,则无法授予 root 权限。此外,它完全是多余的,因为与库存设备(
a.k.a 非 root)相比,
adbd
和模拟器的 shell
都拥有更高的权限。
此外,可以在此处找到有关库存设备和模拟器之间差异的非常小的额外说明。