รูทอุปกรณ์เสมือน Android ด้วย Android 7.1.1


12

ฉันกำลังใช้ SDK Android อย่างเป็นทางการกับ Android Emulator เพื่อสร้าง Android เสมือน 7.1.1 (x86) ฉันจำเป็นต้องทดสอบหลาย ๆ อย่างรวมถึงแอพพลิเคชั่นบางตัวที่ต้องใช้การเข้าถึงรูทของอุปกรณ์

ตอนนี้ฉันรู้ว่าฉันสามารถadb rootและฉันมีรูทเชลล์ได้ แต่นั่นไม่อนุญาตให้แอพที่ฉันติดตั้งมีการเข้าถึงรูท

ฉันได้ค้นคว้าหัวข้อนี้ในขณะนี้และได้เห็นวิธีการต่างๆ คำตอบส่วนใหญ่ถูกโพสต์เมื่อนานมาแล้ว

ฉันคิดว่ามันค่อนข้างแปลกที่ไม่มีตัวเลือกในการสลับรูท - นี่เป็นเพราะ SDK ทั้งหมด

ฉันจะรูทอุปกรณ์เสมือน Android ที่รัน Android 7.1.1 ได้อย่างมีประสิทธิภาพช่วยให้แอปเข้าถึงรูตที่ติดตั้งได้อย่างไร

แก้ไข:ฉันไม่ต้องการใช้โปรแกรมจำลองการชำระเงินเช่น Genymotion ถ้าเป็นไปได้

edit2:นี่เป็นเพียงเพื่อการใช้งานส่วนตัว

edit3: Genymotion ดูเหมือนจะเป็นทางออกที่ทำงานได้เป็นตัวจำลองทางเลือก Android SDK / Emulator ทำไมถึงไม่มีคุณสมบัติดังกล่าว

edit4:คำตอบโดยxavier_fakeratดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์แบบ แต่เนื่องจาก Android Studio เวอร์ชัน 3.1 ดูเหมือนจะไม่เป็นการรูทที่ถาวร เมื่อรีบูต AVD แล้วการเข้าถึงรูทจะหายไป

คำตอบ:


11

วิธีการรูทเครื่องจำลอง Android (Android 7.1.1 / Nougat)

ฉันยินดีที่จะแจ้งให้ชุมชนทราบถึงวิธีที่ง่ายกว่าในการรูทเครื่องจำลอง Android (เรียกใช้จาก Android SDK แบบสแตนด์อโลน)

ข้อกำหนด :

หมายเหตุ: ขณะนี้ SuperSU เลิกใช้แล้ว แต่วิธีนี้ยังคงใช้งานได้ในการรูทเครื่องจำลองและจะมีการอัปเดตเพิ่มเติมสำหรับวิธีการรูทที่ใหม่กว่า

คำแนะนำ

  1. ติดตั้ง SuperSu.apk

    • ติดตั้งแอป SuperSu ในตอนแรกเพียงแค่ลากและวาง (หากใช้รุ่นตัวจำลองล่าสุดหรือ sideload ผ่าน adb ie adb –e install supersu.apk)

    • หลังจากติดตั้งแล้วเมื่อคุณเรียกใช้จะแสดงหน้าจอดังที่แสดงด้านล่างเพื่อระบุว่า "ไม่มีการติดตั้ง SU binary .. " ข้อผิดพลาดนี้เพิ่งยืนยันว่าอุปกรณ์ยังไม่ได้รูท

ป้อนคำอธิบายรูปภาพที่นี่

  1. ทำให้พาร์ติชันระบบ 'emulator' สามารถเขียนได้

    • ตามที่แนะนำเราจำเป็นต้องให้สิทธิ์จำลองเพื่อเขียนไฟล์ระบบ

    • พิมพ์รหัสต่อไปนี้เพื่อบรรลุสิ่งนี้: emulator.exe –avd {emulator_name} –writable-system

หมายเหตุ: นำทางไปยังโฟลเดอร์toolsที่ติดตั้ง Android SDK และพร้อมรับคำสั่ง open ที่นั่นโดยกด Shift และคลิกขวา

  1. กด su binary ในไดเรกทอรีระบบ

    • แยก Recovery flashable.zip (บรรจุ su binaries ของสถาปัตยกรรมที่แตกต่างกัน)

สำคัญ! ใช้ไบนารี su ที่ตรงกับสถาปัตยกรรม avd ของคุณเช่น x86, arm ฯลฯ .. และจดบันทึกเส้นทางที่คุณแตกไบนารีเหล่านี้

  • ตรวจสอบให้แน่ใจว่าคุณกำลังเรียกใช้ adb ในฐานะรูทและคุณจำเป็นต้องติดตั้งใหม่ เพียงแค่ใส่รหัสเหล่านี้

adb root

adb remount

ตอนนี้ถึงเวลาที่จะผลักดันไบนารี su:

นี่คือรหัสที่ฉันใช้สำเร็จ :adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su

(ไม่ต้องกังวลเกี่ยวกับตำแหน่งเฉพาะของฉันคือ su binary ตำแหน่งใด ๆ ก็ใช้ได้ตราบใดที่ไม่มีพื้นที่สีขาว)

/system/xbin/suหากล้มเหลวลองนี้ผลักดันไปยังไดเรกทอรีนี้แทน นอกจากนี้สำหรับอีมูเลเตอร์ที่ใช้ Android 5.1 และต่ำกว่าให้ใช้suและไม่ใช้su.pie

  1. เปลี่ยนการอนุญาตของไบนารี su

    • ต่อไปเราจะทำการดัดแปลงการอนุญาตของ su binary เราต้องทำสิ่งนี้ในอุปกรณ์จำลองผ่าน adb:

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

สำคัญ!! จดบันทึกเส้นทางไบนารีของ su (mine is / system / bin)

  1. การตั้งค่าinstallคำสั่งบน su binary และตั้งค่าdaemon

พิมพ์รหัส:

su --install

และสำหรับการตั้งค่า daemon:

su --daemon&

สำคัญ!! จดบันทึกระยะห่าง

  1. การตั้งค่า SELinux เป็น Permissive (เช่นปิด SE Linux)

    • ในที่สุดก็ปิด selinux ผ่านรหัสนี้:

setenforce 0

มันสวยมาก !! เปิดแอป SuperSU และอาจขอให้อัปเดตไบนารีคุณสามารถใช้วิธีการปกติ

เปิดแอพที่ต้องการสิทธิ์ SU เพียงเพื่อตรวจสอบอีกครั้งและแน่นอน SuperSU ถามว่าคุณต้องการให้สิทธิ์ su

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ

เนื้อหาส่วนใหญ่ในการอ้างอิงสำหรับ Android รุ่นเก่าและด้วยเหตุผลของคำสั่งและเส้นทางที่แตกต่างที่ฉันแก้ไข

การยอมรับพิเศษ;

ความกตัญญูพิเศษต่อ Irvin H ซึ่งการสอนเป็นแรงบันดาลใจให้ฉันสร้างคู่มือนี้หลังจากที่ฉันล้มเหลวนับครั้งไม่ถ้วนและหลังจากนั้นก็เห็นว่าผู้ใช้หลายคนจำเป็นต้องลอกเลียนแบบด้วย ฉันหวังว่านี่จะเป็นประโยชน์อย่างมาก

Irvin H: รูทเครื่องจำลอง android –on Android Studio 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 ขั้นตอนของคุณมีประโยชน์มากยิ่งกว่านั้นอีกหนึ่งสามารถแฟลช Supersu 2.82 / Magisk โดยใช้การกู้คืนแบบกำหนดเองเช่น TWRP และสามารถรับรูทได้อย่างง่ายดาย 7.1.1 หรือ 7.1.2 อุปกรณ์ที่ใช้ .... ขอบคุณ ..
Panchajanya Sarkar

ฉันเพิ่งทดสอบสิ่งนี้กับ Android SDK 2.3.3 (AVD Manager) และพิกเซลเสมือนโดยใช้ Android 7.1.1 ทำงานตามที่อธิบายไว้ในทันที ขอบคุณ!
SaAtomic

1
อัปเดต: วิธีการนี้ยังคงใช้งานได้กับ Android Studio 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.