«adbd не может работать от имени пользователя root в производственных сборках», даже если выбран вариант сборки «debug»? - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь указать эмулятор Android на локальную виртуальную машину, для которой мне нужно adb root.Тем не менее, я получаю эту ошибку:

$ adb root
adbd cannot run as root in production builds

И все же вариант сборки, который я использую p2p-app, равен debug:

enter image description here

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доступ к эмулятору?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

После Корень ADB не работает на эмуляторе , мне удалось преодолеть это ограничение, создав эмулятор из Google API системного образа, а не Google Play one (см. скриншот ниже).

enter image description here

С этим эмулятором я смог adb root:

$ adb root
restarting adbd as root
0 голосов
/ 07 декабря 2018

Команда adb root shell не имеет ничего общего с вариантом сборки любого приложения.Команда просто пытается перезапустить adbd (d обозначает демон) на целевом устройстве с правами root.И это зависит от конфигурации сборки образов устройства (эмулятора), чтобы предоставить их.

В случае конфигурации Android эмулятора корневые разрешения не могут быть предоставлены.Более того, он полностью избыточен, так как adbd и эмулятор shell имеют повышенные привилегии по сравнению со стандартными устройствами ( aka non-root ).

Кроме того, очень маленькийДополнительное объяснение различий между стандартными устройствами и эмуляторами можно найти здесь .

...