即使选择了“debug”构建变体,但“adbd不能在生产版本中以root身份运行”的提示仍然出现?

8

我想将Android模拟器指向本地虚拟机,需要使用adb root命令。然而,我遇到了以下错误:

$ adb root
adbd cannot run as root in production builds

然而,我正在运行的p2p-app的构建变体是debug

enter image description here

p2p-app模块的build.gradle包括以下内容:

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访问权限?


https://dev59.com/hFgR5IYBdhLWcg3wM7Dh#41607607 - Alex P.
那个错误信息不太清楚。它的真正意思是“在 Android 模拟器的生产版本中,adbd 无法以 root 权限运行”。 - Jerry101
2个回答

18

在遇到ADB root 在模拟器上无法使用的问题后,我通过使用一个Google APIs系统镜像而不是Google Play来创建模拟器(如下所示的截图),成功克服了此限制。

图片描述

有了这个模拟器,我能够使用adb root

$ adb root
restarting adbd as root

4
adb root shell命令与任何应用程序的构建变体无关。该命令只是尝试以root权限重新启动目标设备上的adbdd代表守护进程)。而授予这些权限是设备(模拟器)映像构建配置的问题。
在Android模拟器配置的情况下,无法授予root权限。此外,这是完全多余的,因为与原始设备(非root)相比,adbd和模拟器的shell都具有提升的特权。
此外,有关原始设备和模拟器之间差异的非常小的额外说明可以在此处找到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接