Android 7.1.1을 사용하는 루트 Android 가상 장치


12

Android 에뮬레이터와 함께 공식 Android SDK를 사용하여 가상 Android 7.1.1 (x86)을 만들고 있습니다. 여러 가지 중에서 테스트해야 할 사항이 있으며, 일부 응용 프로그램에는 장치에 대한 루트 액세스 권한이 필요합니다.

이제는 할 수 adb root있고 루트 셸이 있지만 설치 한 앱이 루트 액세스 권한을 가질 수는 없습니다.

나는이 주제를 잠시 동안 연구했으며 다양한 접근법을 보았습니다. 대부분의 답변은 얼마 전에 게시되었습니다.

루트를 토글 할 수있는 옵션이 없다는 것이 매우 이상하다고 생각합니다.이 모든 SDK 이후입니다.

설치된 앱의 루트 액세스를 효과적으로 허용하면서 Android 7.1.1을 실행하는 Android 가상 장치를 루팅하려면 어떻게해야합니까?

편집 : 가능하면 Genymotion과 같은 유료 에뮬레이터에 의존하지 않습니다.

edit2 : 이것은 오직 개인적인 용도입니다.

edit3 : Genymotion은 대체 에뮬레이터로 실행 가능한 솔루션으로 보입니다. Android SDK / Emulator는 이러한 기능을 어떻게 제공하지 않습니까?

edit4 : 로 대답 xavier_fakerat은 이 영구적 인 응원 될 것 같지 않습니다하지만 안드로이드 Studio 버전 3.1 이후, 완벽하게 잘 작동하는 것 같다. AVD가 재부팅되면 루트 액세스가 중단됩니다.

답변:


11

안드로이드 에뮬레이터를 근절하는 방법 (Android 7.1.1 / Nougat)

Android 에뮬레이터를 루팅하는 더 쉬운 방법을 커뮤니티에 알리게되어 기쁩니다 (독립형 Android SDK에서 실행).

요구 사항 :

참고 : SuperSU는 더 이상 사용되지 않지만이 방법은 여전히 ​​에뮬레이터를 루팅하는 데 사용되며 최신 루팅 방법에 대해서는 더 많은 업데이트가 제공됩니다.

명령

  1. SuperSu.apk 설치

    • 먼저 SuperSu 앱을 설치하고 드래그 앤 드롭하십시오 (최신 에뮬레이터 버전을 실행하거나 adb를 통해 사이드로드하는 경우 adb –e install supersu.apk)

    • 설치 후, 실행하면 아래와 같이“SU 바이너리가 설치되어 있지 않습니다.”라는 화면이 나타납니다. 이 오류는 장치가 아직 루팅되지 않았 음을 확인합니다.

여기에 이미지 설명을 입력하십시오

  1. 에뮬레이터의 시스템 파티션 쓰기 가능

    • 제안한대로 에뮬레이터에 시스템 파일을 쓸 수있는 권한을 부여해야합니다.

    • 이를 위해 다음 코드를 입력하십시오. emulator.exe –avd {emulator_name} –writable-system

참고 : Android SDK가 설치된 도구 폴더로 이동 한 다음 Shift 키를 누르고 마우스 오른쪽 단추를 클릭하여 명령 프롬프트를여십시오.

  1. 시스템 디렉토리에서 su 바이너리 푸시

    • 복구 flashable.zip 추출 (다른 아키텍처의 su 바이너리가 포함됨)

중대한! x86, arm 등과 같은 DVD 아키텍처와 일치하는 su 바이너리 만 사용하고이 바이너리를 추출한 경로를 기록하십시오.

  • 루트로 adb를 실행하고 다시 마운트해야합니다. 이 코드를 입력하십시오

adb root

adb remount

이제 su 바이너리를 푸시 할 시간입니다 :

이것은 내가 성공적으로 사용한 코드입니다 .adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su

(su 바이너리의 특정 위치에 대해서는 신경 쓰지 마십시오. 공백이 없으면 아무 위치 나 괜찮습니다)

이것이 실패하면 대신이 디렉토리로 넘어가십시오 /system/xbin/su. 또한 안드로이드 5.1 이하를 실행하는 에뮬레이터의 su경우su.pie

  1. su 바이너리의 권한 변경

    • 다음으로 su 바이너리의 권한을 약간 수정 해 봅시다. 에뮬레이터 장치에서 adb를 통해이 작업을 수행해야합니다.

    adb –e shell su root cd /system/bin chmod 06755 su

중대한!! su 이진 경로를 적어 둡니다 (광산은 / system / bin입니다).

  1. 설정 installSU 바이너리 및 세트 A의 지시를daemon

코드를 입력하십시오 :

su --install

그리고 데몬을 설정하기 위해 :

su --daemon&

중대한!! 간격을 기록해 두십시오

  1. SELinux를 허용으로 설정 (즉, SE Linux 끄기)

    • 마지막으로이 코드를 통해 selinux를 끄십시오 :

setenforce 0

그게 다야 !! SuperSU 앱을 열고 바이너리 업데이트를 요청하면 일반 방법을 사용할 수 있습니다.

SU 권한이 필요한 모든 응용 프로그램을 두 번 확인하고 실제로 SUSU는 su 권한을 부여할지 묻습니다.

여기에 이미지 설명을 입력하십시오

비고

참고로 대부분의 내용은 이전 안드로이드 버전에 대한 것이기 때문에 내가 수정 한 다른 명령과 경로의 이유입니다.

특별 인정;

Irvin H에게 특별한 감사의 말을 전합니다.이 튜토리얼은 수많은 시간을 겪지 못한 후이 가이드를 만들도록 영감을 주었으며 많은 사용자가 에뮬레이터를 루팅해야 할 필요성을 본 후에도 도움이되었습니다. 나는 이것이 또한 많은 혜택을 얻을 수 있기를 바랍니다

어빈 H : 안드로이드 에뮬레이터 루팅 – 안드로이드 스튜디오 2.3 ((Android 4.4)

최신 정보

SaAtomic이 언급 한 것처럼

이 방법은 여전히 ​​Android Studio 3.0.1에서 실행 가능합니다

에뮬레이터 버전 27.2.9이상으로 업그레이드 한 후에 는 이제 스냅 샷 기능을 통해 루트를 훨씬 쉽게 보존 할 수 있습니다 (system.img 메소드를 복사 할 수없는 경우).

이상적으로는 구성을 그대로 유지하면서 가상 장치를 최대 절전 모드로 유지하는 것과 비슷하므로 모든 것이 보존됩니다.

스냅 샷

이제 지정된 장치 구성에 대해 여러 AVD 스냅 샷을 저장하고 에뮬레이터를 시작할 때로드 할 저장된 스냅 샷을 선택할 수 있습니다. 스냅 샷을로드하여 가상 장치를 시작하는 것은 전원이 꺼진 상태에서 부팅하는 것이 아니라 절전 상태에서 물리적 장치를 깨우는 것과 매우 유사합니다.

이것은 에뮬레이터를 시작하기위한 유일한 요구 사항은 -writable-system매개 변수를 일반 에뮬레이터 -avd [avdname]명령에 추가하여 에뮬레이터 를 시작하는 것입니다. (에뮬레이터 -avd [avdname] 만 사용하여 에뮬레이터를 실행하면 루팅 된 버전 / 복사본이 시작되지 않거나 일부 오류가 발생할 수 있습니다)

API 레벨 22에서 테스트


1
자세한 답변 감사합니다. 나는 그것을 시도하지 않았지만 이것은 가능한 해결책 인 것 같습니다!
SaAtomic

1
@SaAtomic, 당신의 발걸음은 매우 유용합니다. 더 나아가, 하나는 TWRP와 같은 커스텀 복구를 사용하여 Supersu 2.82 / Magisk를 플래시 할 수 있으며 쉽게 루트를 얻을 수 있습니다 .... 7.1.1 또는 7.1.2에서 잘 작동합니다. 장치를 실행 .... 감사합니다 ..
Panchajanya Sarkar

방금 Android 7.1.1을 사용하는 Android SDK 2.3.3 (AVD Manager) 및 가상 픽셀로 이것을 테스트했습니다. 바로 설명대로 작동합니다. 감사합니다!
SaAtomic

1
업데이트 :이 방법은 안드로이드 스튜디오 여전히 3.0.1 실행 가능
SaAtomic

1
잘못된 에뮬레이터 이미지를 사용하고있을 Google APIs Intel x86 Atom System Image것입니다.Google Play Intel x86 Atom System Image
xavier_fakerat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.