即使选择了“调试”构建变体,“adbd 也无法在生产构建中以 root 身份运行”?

问题描述 投票:0回答:2

我正在尝试将 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 访问权限?

android gradle android-emulator adb root
2个回答
18
投票

遵循 ADB root 无法在模拟器上运行,我通过从 Google APIs 系统映像而不是 Google Play 系统映像创建模拟器来克服这一限制(请参见下面的屏幕截图)。

有了这个模拟器,我能够

adb root

$ adb root
restarting adbd as root

4
投票

adb root
shell 命令与任何应用程序的构建变体无关。该命令只是尝试在具有 root 权限的目标设备上重新启动
adbd
d
代表守护进程)。这是设备(模拟器)图像构建配置来授予这些的问题。

如果是 Android 模拟器配置,则无法授予 root 权限。此外,它完全是多余的,因为与库存设备(

a.k.a 非 root
)相比,
adbd
和模拟器的 shell 都拥有更高的权限。

此外,可以在此处找到有关库存设备和模拟器之间差异的非常小的额外说明。

© www.soinside.com 2019 - 2024. All rights reserved.