แอปพลิเคชันแก้ไขข้อบกพร่องสำหรับ Android คืออะไร การทดสอบบนอุปกรณ์จริง

บนสมาร์ทโฟนหรือคอมพิวเตอร์แท็บเล็ตที่ทำงานบนแพลตฟอร์ม Android โดยไม่คำนึงถึงผู้ผลิตและเวอร์ชันระบบปฏิบัติการที่ติดตั้งไว้ล่วงหน้า คุณสามารถเปิดใช้งานได้ ฟังก์ชั่นพิเศษซึ่งเรียกว่า “โหมดดีบัก” อย่างไรก็ตาม กระบวนการเปิดใช้งานฟังก์ชันนี้จะแตกต่างกันไป ความจริงก็คือทุกอย่างขึ้นอยู่กับเวอร์ชันของระบบที่ติดตั้ง

ในบทความนี้เราจะมาดูคำถามเกี่ยวกับวิธีการเปิดใช้งานการดีบัก USB บน Android ให้ละเอียดยิ่งขึ้น รุ่นก่อนหน้า OS และระบบปฏิบัติการล่าสุด นอกจากนี้เรายังจะดูคำถามว่าโหมดนี้มีไว้เพื่อแก้ไขงานใดบ้าง

ก่อนอื่นเรามาดูกันว่าผู้ใช้ทั่วไปอาจต้องใช้เพื่อเปิดใช้งานโหมดนี้เพื่อวัตถุประสงค์ใด

ดังที่คุณอาจเดาได้ จำเป็นสำหรับการดีบักแอปพลิเคชันและอุปกรณ์ต่างๆ กล่าวง่ายๆ ก็คือมีวัตถุประสงค์เพื่อทดสอบการทำงานของโปรแกรม และด้วยเหตุนี้จึงเป็นที่นิยมอย่างมากในหมู่นักพัฒนาเป็นอันดับแรก ซอฟต์แวร์- อย่างไรก็ตามสำหรับปุถุชนก็มีคุณค่าเช่นกันเนื่องจากช่วยให้คุณสามารถโต้ตอบกับ Android ผ่านพีซีและใช้โปรแกรม (โดยเฉพาะ ADB) ที่สามารถดำเนินการจัดการต่างๆ กับอุปกรณ์จากระยะไกลได้

ขั้นตอนการเปิดใช้งานในเวอร์ชันต่างๆ

ระบบปฏิบัติการ Android เวอร์ชัน 2.0 - 3.0

หากคุณมีอุปกรณ์ Android รุ่นเก่าที่ติดตั้งเวอร์ชัน 2.0 และ 3.0 บนเครื่อง เพื่อเปิดใช้งานการแก้ไขข้อบกพร่อง คุณต้องทำตามขั้นตอนง่ายๆ ไม่กี่ขั้นตอน:

ระบบปฏิบัติการ Android เวอร์ชัน 4.0, 5.0 และ 6.0

ใน Android เวอร์ชัน 4, 5 และ 6 คุณต้องปรับแต่งเล็กน้อยเนื่องจากโหมดการแก้ไขข้อบกพร่องในนั้นถูกซ่อนไว้อย่างระมัดระวังจากสายตาของผู้ใช้

วิธีเปิดใช้งานโหมด การดีบัก USBบน Android เวอร์ชันล่าสุด? เมื่อต้องการทำเช่นนี้ คุณต้องทำตามขั้นตอนต่อไปนี้:

ฉันควรทำอย่างไรเมื่อตรวจไม่พบอุปกรณ์เมื่อเปิดใช้งานการดีบัก

ตามที่แสดงในทางปฏิบัติ ผู้ใช้มักจะพบว่าตัวเองอยู่ในสถานการณ์ที่สมาร์ทโฟนหรือหลังจากเปิดโหมดแก้ไขจุดบกพร่อง คอมพิวเตอร์แท็บเล็ตด้วยเหตุผลบางอย่าง ผู้ใช้ควรทำอย่างไรในกรณีนี้?

  • ก่อนอื่นคุณต้องตรวจสอบว่ามีการติดตั้งไดรเวอร์เวอร์ชันล่าสุดสำหรับการตรวจจับอุปกรณ์ผ่าน USB บนคอมพิวเตอร์ของคุณหรือไม่ ลองอัปเดตไดรเวอร์โดยดาวน์โหลด เวอร์ชันล่าสุดจากเว็บไซต์ของผู้ผลิตอุปกรณ์
  • ตรวจสอบว่าอุปกรณ์ของคุณล็อคอยู่หรือไม่ เมื่อเชื่อมต่อกับคอมพิวเตอร์แนะนำให้ถอดล็อคออก
  • ตรวจสอบพอร์ตที่สายไฟเชื่อมต่ออยู่ ใช่สำหรับข้อมูลเพิ่มเติม การดำเนินการที่ถูกต้องใช้ดีกว่า พอร์ต USB 2.0 จะมีความเข้ากันได้ดีขึ้น

การดีบักผ่าน Wi-Fi

ในสถานการณ์ที่คุณใช้โหมดแก้ไขข้อบกพร่องด้วย ยูเอสบี แอนดรอยด์ไม่มีทาง คุณสามารถลองเชื่อมต่อผ่าน Wi-Fi ได้

สำคัญ! ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์รูทบนอุปกรณ์ของคุณ คำแนะนำนี้ที่เกี่ยวข้องเท่านั้นสำหรับ ระบบปฏิบัติการ Windows 7 ซึ่งปัจจุบันพบได้บ่อยที่สุดบนพีซี

  1. ก่อนอื่นคุณต้องค้นหาที่อยู่ IP และพอร์ตของอุปกรณ์ของคุณ เพื่อจุดประสงค์นี้คุณสามารถใช้โปรแกรมได้ มันมีอยู่ในแอพสโตร์ Google Play.
  2. ดาวน์โหลดโปรแกรมและเรียกใช้
  3. ข้อมูลเกี่ยวกับที่อยู่ IP ปัจจุบันควรปรากฏที่ด้านล่าง
  4. บนพีซีของคุณ ให้ไปที่ “เริ่ม” - “โปรแกรมทั้งหมด” - “อุปกรณ์เสริม”- ในรายการแอปพลิเคชัน ให้ค้นหาและเลือก Command Prompt
  5. ในคอนโซลที่เปิดขึ้น ให้ป้อนคำสั่งต่อไปนี้: adb เชื่อมต่อ 192.168.0.1:8555 นั่นคือทั้งหมดที่ การเชื่อมต่อ Android เสร็จสมบูรณ์ ขณะนี้การจัดการทั้งหมดด้วย ADB สามารถทำได้ผ่านเทคโนโลยีไร้สาย Wi-Fi

กำลังปิดใช้งานการดีบัก

หากต้องการปิดใช้งานการแก้ไขข้อบกพร่อง ให้ใช้คำแนะนำต่อไปนี้:

บทสรุป

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

เราขอเตือนคุณว่าการแก้ไขจุดบกพร่อง USB มีประโยชน์ เครื่องมือระบบซึ่งช่วยให้ผู้ใช้สามารถติดตั้งเฟิร์มแวร์ใหม่ ดาวน์โหลดและติดตั้งซอฟต์แวร์บุคคลที่สาม ซิงโครไนซ์อุปกรณ์มือถือกับพีซี และอื่นๆ ผู้ใช้ขั้นสูงจะสามารถได้รับสิทธิ์ "Superuser" และแม้กระทั่งในบางกรณีสามารถกู้คืนระบบได้หากระบบหยุดทำงานตามปกติ

โหมดแก้ไขจุดบกพร่อง USB เป็นคุณสมบัติพิเศษของอุปกรณ์ Android ซึ่งนักพัฒนาต้องการเป็นหลัก ด้วยความช่วยเหลือนี้ คุณสามารถตรวจสอบฟังก์ชันการทำงานของแอปพลิเคชันและทดสอบได้ในสถานการณ์ต่างๆ แต่โหมดแก้ไขข้อบกพร่องก็มีประโยชน์สำหรับผู้ใช้เช่นกัน ลองพิจารณาว่าเหตุใดจึงมีประโยชน์ วิธีเปิดและปิดบนอุปกรณ์ Android

เหตุใดคุณจึงต้องมีโหมดดีบัก USB บนระบบปฏิบัติการ Android

โหมดแก้ไขข้อบกพร่องช่วยให้ผู้ใช้สามารถ:

  • ทดสอบแอปพลิเคชันที่กำลังพัฒนา
  • เข้าถึงรูทสมาร์ทโฟนหรือแท็บเล็ตของคุณ
  • คัดลอกและย้ายไฟล์จากอุปกรณ์ Android ไปยังคอมพิวเตอร์ของคุณ
  • ติดตั้งบุคคลที่สามที่ดาวน์โหลดลงในคอมพิวเตอร์ของคุณ (ไม่ใช่จาก เล่นตลาด) แอปพลิเคชันสำหรับ Android
  • ติดตั้งเฟิร์มแวร์เวอร์ชันต่างๆ สำหรับอุปกรณ์
  • กู้คืนอุปกรณ์ที่เสียหาย
  • สร้าง สำเนาสำรองไฟล์และแอพพลิเคชั่น

นอกจากนี้ ในโหมดแก้ไขจุดบกพร่อง คุณสามารถเข้าถึงกระบวนการของระบบ รวมถึงวิเคราะห์การเปลี่ยนแปลงในลักษณะการทำงานของ RAM โปรเซสเซอร์ และส่วนประกอบอื่นๆ

วิธีเปิดใช้งานโหมดดีบัก USB บนอุปกรณ์ของคุณ

ตัวเลือก "เปิดใช้งานการแก้ไขข้อบกพร่อง USB" จะอยู่ใน "เมนูนักพัฒนา" (หรือ "ตัวเลือกสำหรับนักพัฒนา") ซึ่งซ่อนจากผู้ใช้ใน Android เวอร์ชันที่สูงกว่า 4.2 แต่ผู้ผลิตบางรายตัดสินใจเปิดการเข้าถึงเมนูอีกครั้งและบางรายก็ตัดสินใจซ่อนมัน ตัวอย่างเช่น บนสมาร์ทโฟน Meizu เมนูนักพัฒนาจะเปิดอยู่เสมอและอยู่ใน “การเข้าถึง " และบนอุปกรณ์การเข้าถึงซัมซุง ไปที่เมนูปิดอยู่ ทุกอย่างไม่ได้ขึ้นอยู่กับบริษัทเท่านั้น แต่ยังขึ้นอยู่กับบริษัทด้วยรุ่นเฉพาะ

อุปกรณ์

ดังนั้นหากการเข้าถึงเมนูนักพัฒนาถูกบล็อกบนอุปกรณ์ของคุณ ให้ทำดังต่อไปนี้: ในการตั้งค่าอุปกรณ์ เปิดแท็บ "เกี่ยวกับอุปกรณ์" และคลิกที่รายการ "หมายเลขสร้าง" จนกระทั่งมีการแจ้งเตือนปรากฏขึ้นว่าคุณได้รับมอบหมายสถานะนักพัฒนา และคุณสามารถใช้เมนูพิเศษได้

ตอนนี้ไปที่เมนูนี้ รายการเมนูอาจอยู่ในส่วนต่างๆ ของเมนูการตั้งค่า ทั้งนี้ขึ้นอยู่กับรุ่น ในการตั้งค่าอุปกรณ์อาจมีส่วน "สำหรับนักพัฒนา" ทันที ("ตัวเลือกสำหรับนักพัฒนา", "เมนูนักพัฒนา") หรืออาจเป็นส่วนย่อยของรายการ "การเข้าถึง", "อื่น ๆ", "เพิ่มเติม", "ขั้นสูง" การตั้งค่า".

เมื่อคุณเข้าสู่เมนูนักพัฒนา ให้ทำเครื่องหมายที่ช่องถัดจาก "เปิดใช้งานการแก้ไขข้อบกพร่อง USB" (หรือ "โหมดการแก้ไขข้อบกพร่อง USB") โดยปกติรายการนี้มาก่อน

โหมดอยู่ที่ไหนใน Android เวอร์ชันต่าง ๆ (คลังภาพ)

เมนูนักพัฒนาซอฟต์แวร์อยู่ในส่วน "เพิ่มเติม" ใน Android 2.2–3.0 รายการ "การแก้ไขจุดบกพร่อง USB" จะอยู่ในส่วน "แอปพลิเคชัน" ใน Android 4.2 และสูงกว่า เมนูนักพัฒนาซอฟต์แวร์จะถูกย้ายไปที่ส่วน "การตั้งค่า"

คำแนะนำวิดีโอ: วิธีเปิดใช้งานโหมดดีบัก USB บน Android

วิธีเปิดใช้งานโหมดดีบัก USB หากไม่สามารถทำได้จากอุปกรณ์

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


หลังจากรีบูตคุณสามารถทำงานกับสมาร์ทโฟนหรือแท็บเล็ตโดยใช้ QtADB, MyPhoneExplorer, ADB และโปรแกรมอื่นที่คล้ายคลึงกัน นั่นคือการใช้โหมดการแก้ไขข้อบกพร่อง USB

จะทำอย่างไรถ้าไม่มีอะไรทำงาน

ในการทำงานกับการดีบัก USB จะใช้ไดรเวอร์ ADB พิเศษ (Android Debug Bridge หรืออักษร "bridge สำหรับการดีบัก Android") ซึ่งสามารถดาวน์โหลดได้จากเว็บไซต์ Google หน้าอย่างเป็นทางการอยู่ที่: https://developer.android.com/studio/index.html มาดูกันว่าต้องทำอย่างไรถ้า ADB ตรวจไม่พบอุปกรณ์เหตุใดจึงไม่สามารถใช้โหมดแก้ไขข้อบกพร่อง USB ได้

ตรวจสอบให้แน่ใจว่าคอมพิวเตอร์ของคุณตรวจพบอุปกรณ์มือถือของคุณ- เมื่อต้องการทำสิ่งนี้:

  1. ตรวจสอบความเสียหายของสาย USB ความสนใจเป็นพิเศษให้ความสนใจกับการโค้งงอที่แข็งแกร่งและส่วนของสายเคเบิลใกล้กับปลั๊กซึ่งสายเชื่อมต่อมักจะขาด ลองใช้สายเคเบิลอื่นเพื่อเชื่อมต่อ หากปัญหาเกิดจากข้อบกพร่องทางกายภาพจริงๆ ให้เปลี่ยนสายเคเบิล
  2. ลองเสียบปลั๊กเข้ากับพอร์ต USB อื่นบนคอมพิวเตอร์ของคุณ แนะนำให้ใช้พอร์ตที่อยู่ด้านหลัง หน่วยระบบเนื่องจากพอร์ตด้านหลังตั้งอยู่โดยตรง เมนบอร์ด- พอร์ต USB ด้านหน้าไม่ได้เชื่อมต่ออย่างถูกต้องเสมอไป ซึ่งเป็นสาเหตุของปัญหา
  3. ลองเชื่อมต่ออุปกรณ์ Android ของคุณกับคอมพิวเตอร์เครื่องอื่น บางครั้งมันเกิดขึ้นที่พีซีเครื่องใดเครื่องหนึ่งรู้จักสมาร์ทโฟนหรือแท็บเล็ตอย่างไม่ถูกต้องและไม่ได้อ่านข้อมูลที่จำเป็นจากเครื่องนั้น หากคอมพิวเตอร์เครื่องอื่นรู้จักอุปกรณ์อย่างถูกต้อง ให้นำพีซีของคุณไปซ่อมแซมและอธิบายปัญหา เนื่องจากสาเหตุของปัญหาอาจแตกต่างกัน
  4. ลองถอดอุปกรณ์ USB ทั้งหมดออกจากคอมพิวเตอร์ของคุณ บางส่วนอาจทำให้สมาร์ทโฟนหรือแท็บเล็ตของคุณไม่สามารถเชื่อมต่อกับพีซีของคุณได้ตามปกติ

ตรวจสอบให้แน่ใจว่าคุณใช้ เฟิร์มแวร์อย่างเป็นทางการผู้ผลิตอุปกรณ์- หากคุณติดตั้งบนสมาร์ทโฟนหรือแท็บเล็ต เฟิร์มแวร์ของบุคคลที่สาม(เช่น CyanogenMod หรือที่คล้ายกัน) การดีบัก USB อาจทำงานไม่ถูกต้อง

ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งไดรเวอร์ ADB ที่ถูกต้อง- มีไดรเวอร์หลายเวอร์ชันสำหรับ อุปกรณ์ที่แตกต่างกัน- ทั้งหมดนี้จัดจำหน่ายโดยรุ่นสมาร์ทโฟนและแท็บเล็ตบนเว็บไซต์อย่างเป็นทางการ นอกจากนี้ยังมีไดรเวอร์ ADB สากลด้วย แต่ควรใช้เฉพาะในกรณีที่ไม่มีไดรเวอร์แยกต่างหากสำหรับอุปกรณ์ของคุณเนื่องจากไดรเวอร์สากลอาจทำให้เกิดปัญหาการเชื่อมต่อซึ่งสามารถแก้ไขได้ด้วยการสนับสนุนของ Google เท่านั้น

นักพัฒนาซอฟต์แวร์จะใช้ระบบดีกว่าใช้ไดรเวอร์ ADB แต่ละตัว แอนดรอยด์สตูดิโอซึ่งสามารถดาวน์โหลดได้จากเว็บไซต์อย่างเป็นทางการ: Developer.android.com ในระบบปฏิบัติการแอนดรอยด์ การตั้งค่าสตูดิโอไดรเวอร์เกิดขึ้นโดยอัตโนมัติ นอกจากนี้ยังมี เครื่องจำลอง Androidสำหรับคอมพิวเตอร์ ดังนั้นการแก้ไขจุดบกพร่อง USB อาจไม่จำเป็น

วิธีปิดการดีบัก USB

หากต้องการปิดใช้งานโหมดการแก้ไขข้อบกพร่อง USB บนอุปกรณ์ Android ให้เปิดเมนูนักพัฒนาซอฟต์แวร์และยกเลิกการเลือกตัวเลือกใช้การแก้ไขข้อบกพร่อง USB

โหมดแก้ไขจุดบกพร่อง USB เป็นเครื่องมือที่มีประโยชน์อย่างยิ่งไม่เพียงแต่สำหรับนักพัฒนาซอฟต์แวร์เท่านั้น แต่ยังสำหรับอีกด้วย ผู้ใช้ทั่วไปห้องผ่าตัด ระบบแอนดรอย- ด้วยความช่วยเหลือนี้ คุณสามารถติดตั้งและติดตั้งเฟิร์มแวร์ใหม่บนอุปกรณ์มือถือของคุณ ย้ายไฟล์จากสมาร์ทโฟนหรือแท็บเล็ตไปยังคอมพิวเตอร์ ดาวน์โหลดไปยัง Android แอปพลิเคชันบุคคลที่สาม- ความสามารถในการใช้โหมดดีบัก USB จะมีประโยชน์ในกรณีที่อุปกรณ์หยุดทำงานอย่างถูกต้องเนื่องจากช่วยให้คุณเจาะลึกได้ กระบวนการของระบบซึ่งจะช่วยคุณค้นหาปัญหาและความผิดปกติ นอกจากนี้การแก้ไขข้อบกพร่อง USB จะช่วยให้คุณสามารถเข้าถึงรูทอุปกรณ์ได้ซึ่งจะขยายขีดความสามารถของระบบปฏิบัติการอย่างมาก

หลังจากเขียนโค้ดโปรแกรมเวอร์ชันแรกแล้ว แน่นอนว่าเราจะต้องการเรียกใช้และทดสอบเพื่อตรวจหาปัญหาที่อาจเกิดขึ้น (หรือเพียงเพื่อแสดง) มีสองวิธีในการดำเนินการนี้: เปิดแอปพลิเคชัน อุปกรณ์จริงเชื่อมต่อกับคอมพิวเตอร์โดยใช้สาย USB เรียกโปรแกรมจำลองที่รวมอยู่ใน SDK และทดสอบแอปพลิเคชันในนั้น

ในทั้งสองกรณี เราจำเป็นต้องดำเนินการบางอย่างเพื่อให้โปรแกรมของเราทำงานได้จริง

กำลังเชื่อมต่ออุปกรณ์

ก่อนเชื่อมต่ออุปกรณ์เพื่อทำการทดสอบ คุณต้องตรวจสอบให้แน่ใจว่าระบบปฏิบัติการรู้จักอุปกรณ์นั้นก่อน บน Windows คุณต้องติดตั้งไดรเวอร์ที่เหมาะสมซึ่งเป็นส่วนหนึ่งของการติดตั้ง SDK ที่เราติดตั้งไว้ก่อนหน้านี้ เพียงเชื่อมต่ออุปกรณ์แล้วทำตามคำแนะนำเพื่อติดตั้งไดรเวอร์ Windows มาตรฐาน โดยชี้ไปที่ไดรเวอร์/โฟลเดอร์ในไดเร็กทอรีการติดตั้ง SDK ของคุณ จะต้องดาวน์โหลดไดรเวอร์สำหรับอุปกรณ์บางตัวจากเว็บไซต์ของผู้ผลิต โดยปกติแล้วบน Linux และ Mac OS X ไม่จำเป็นต้องติดตั้งไดรเวอร์แยกต่างหาก เนื่องจากมาพร้อมกับระบบปฏิบัติการ คุณอาจต้องทำตามขั้นตอนเพิ่มเติมเล็กน้อย (โดยปกติคือการสร้างไฟล์กฎใหม่สำหรับ udev) ทั้งนี้ขึ้นอยู่กับเวอร์ชันของ Linux ชุดการทำงานอาจแตกต่างกันไปตามอุปกรณ์ที่แตกต่างกัน - การค้นหาเว็บสามารถช่วยคุณได้

การสร้างอุปกรณ์เสมือน Android

SDK มาพร้อมกับโปรแกรมจำลองที่ทำงานที่เรียกว่าอุปกรณ์เสมือน Android (AVD) อุปกรณ์เสมือนนี้ประกอบด้วยรูปภาพ รุ่นเฉพาะระบบปฏิบัติการ Android เชลล์และชุดคุณลักษณะ รวมถึงความละเอียดการแสดงผล ขนาดการ์ดหน่วยความจำ ฯลฯ ในการสร้าง AVD ใหม่ คุณต้องเรียกใช้ตัวจัดการ SDK และ AVD คุณสามารถดำเนินการนี้ตามที่อธิบายไว้ในคำแนะนำในการติดตั้ง SDK หรือโดยตรงใน Eclipse โดยคลิกปุ่มตัวจัดการ SDK บนแถบเครื่องมือ

1. เลือกอุปกรณ์เสมือนจากรายการทางด้านซ้าย ดังนั้นคุณจะเห็นรายการที่มีอยู่ อุปกรณ์เสมือน- หากคุณไม่เคยใช้ตัวจัดการ SDK มาก่อน รายการนี้จะว่างเปล่า มาเปลี่ยนสถานการณ์นี้กันเถอะ

2. หากต้องการสร้าง AVD ใหม่ ให้คลิกปุ่มใหม่ทางด้านขวา กล่องโต้ตอบจะปรากฏขึ้น (รูปที่ 2.7)

ข้าว. 2.7. กล่องโต้ตอบการสร้าง AVD ในตัวจัดการ SDK

3. อุปกรณ์เสมือนแต่ละเครื่องมีชื่อ (ฟิลด์ชื่อ) ซึ่งคุณจะใช้อ้างอิงในภายหลัง Target กำหนดเวอร์ชันของ Android ที่ AVD ควรใช้ นอกจากนี้ คุณยังสามารถกำหนดความจุของการ์ดหน่วยความจำสำหรับ AVD รวมถึงความละเอียดของหน้าจอได้ด้วย สำหรับเรา โครงการง่ายๆสามารถเลือก hel1о world เป็นเป้าหมายสำหรับ Android 1.5 ได้ โดยไม่เปลี่ยนแปลงพารามิเตอร์อื่นๆ ในการทดสอบจริง คุณจะต้องสร้างอุปกรณ์เสมือนหลายเครื่องเพื่อทดสอบแอปพลิเคชัน รุ่นที่แตกต่างกันระบบปฏิบัติการและขนาดการแสดงผล

บันทึก

หากคุณไม่มีอุปกรณ์ Android จริงที่มีเวอร์ชันต่างกันและมีหน้าจอต่างกัน จะสะดวกกว่าถ้าใช้โปรแกรมจำลองเพื่อทดสอบความเข้ากันได้ของแอปพลิเคชันเพิ่มเติม

การเปิดตัวแอปพลิเคชัน

หลังจากตั้งค่าอุปกรณ์และ AVD แล้ว คุณก็สามารถเปิดแอปพลิเคชันของคุณได้ในที่สุด ใน Eclipse ทำได้โดยการคลิกขวาที่โปรเจ็กต์ Hello World ในมุมมอง Package Explorer แล้วเลือก Run As Android Application (หรือคลิกปุ่ม Run บนแถบเครื่องมือ) เป็นผลให้สภาพแวดล้อมจะดำเนินการ พื้นหลังขั้นตอนต่อไป

1. รวบรวมโปรเจ็กต์เป็นไฟล์ ARK (หากมีการเปลี่ยนแปลงในไฟล์ตั้งแต่การคอมไพล์ครั้งล่าสุด)

2. จะสร้าง การกำหนดค่าใหม่เปิดตัวสำหรับ โครงการหุ่นยนต์หากไม่มีอยู่แล้ว (เราจะพูดถึงการกำหนดค่าการเปิดตัวเร็วๆ นี้)

3. ติดตั้งและเปิดแอปพลิเคชันโดยการเปิดตัวใหม่หรือใช้โปรแกรมจำลอง Android เวอร์ชันที่เกี่ยวข้องที่รันอยู่แล้ว หรือโดยการปรับใช้และเปิดใช้งานบนอุปกรณ์ที่เชื่อมต่อ (ซึ่งมีเวอร์ชันระบบปฏิบัติการติดตั้งอยู่ซึ่งไม่ต่ำกว่าที่ระบุไว้ด้วย ในพารามิเตอร์ Min SDK Version เมื่อสร้างโครงการ)

หากคุณเพิ่งสร้าง AVD สำหรับ Android 1.5 (ตามที่อธิบายไว้ข้างต้น) ปลั๊กอิน ADT สำหรับ Eclipse จะเปิดตัวอินสแตนซ์ใหม่ของตัวจำลอง ปรับใช้โปรเจ็กต์ Hello World ARC ลงในนั้น และเปิดแอปพลิเคชัน ที่เอาต์พุตคุณจะเห็นสิ่งที่คล้ายกับรูปที่. 2.8.

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

โปรแกรมจำลองไม่รองรับมัลติทัช เลื่อนตัวชี้เมาส์ของคุณและทำเป็นว่าเป็นนิ้ว โปรแกรมจำลองไม่มีแอปพลิเคชันบางตัว (เช่น Android Market)

ไม่มีประโยชน์ที่จะเขย่าจอภาพเพื่อเปลี่ยนการวางแนวหน้าจอ ให้ใช้ปุ่ม 7 บนส่วนเพิ่มเติมแทน แป้นตัวเลขแป้นพิมพ์เพื่อหมุนจอแสดงผล หากต้องการหลีกเลี่ยงการพิมพ์เลข 7 แทน คุณต้องกด Num Lock ก่อน

ข้าว. 2.8. แอป Hello World ที่ยอดเยี่ยมในการดำเนินการ

โปรแกรมจำลองนั้นช้ามาก อย่าตัดสินประสิทธิภาพของแอปของคุณจากความเร็วของแอปที่ทำงานบนโปรแกรมจำลอง

ในขณะที่เขียน โปรแกรมจำลองรองรับ OpenGL ES 1.0 เท่านั้นและมีส่วนขยายบางส่วน สำหรับวัตถุประสงค์ของเรา นี่ก็เพียงพอแล้ว (ยกเว้นว่าการใช้งานไลบรารีกราฟิกบนเครื่องจำลองจะประสบกับข้อผิดพลาด และบางครั้งคุณอาจไม่ได้ผลลัพธ์เหมือนกับบนอุปกรณ์จริง) ในตอนนี้ โปรดจำไว้ว่าคุณไม่ควรทดสอบแอปพลิเคชันที่ใช้ OpenGL ES บนโปรแกรมจำลอง

ลองมัน การกระทำต่างๆพร้อมโปรแกรมจำลองเพื่อทำความคุ้นเคย

บันทึก

การเริ่มต้นอินสแตนซ์ใหม่ใช้เวลานานพอสมควร (อาจนานหลายนาทีขึ้นอยู่กับคุณลักษณะ) เวิร์กสเตชัน- เพื่อประหยัดเวลา ให้ออกจากโปรแกรมจำลอง ทำงานทั้งหมดเซสชั่นการพัฒนาโดยไม่ต้องรีสตาร์ททุกครั้ง

บางครั้งเมื่อเริ่มแอปพลิเคชัน Android การเลือกอัตโนมัติโปรแกรมจำลอง/อุปกรณ์ที่ดำเนินการโดยปลั๊กอิน ADT กลายเป็นอุปสรรค ตัวอย่างเช่น เราได้เชื่อมต่ออุปกรณ์หรืออีมูเลเตอร์หลายตัว และต้องการทดสอบโปรเจ็กต์กับหนึ่งในนั้น เพื่อให้บรรลุเป้าหมายนี้ คุณสามารถปิดใช้โปรแกรมจำลอง/การเลือกอุปกรณ์อัตโนมัติในการกำหนดค่าการเปิดใช้โปรเจ็กต์ Android ได้ ว่าแต่การกำหนดค่าการเปิดตัวคืออะไร?

การกำหนดค่าการเรียกใช้งานมีวิธีในการบอก Eclipse อย่างชัดเจนว่าควรเรียกใช้แอปพลิเคชันของคุณอย่างไรเมื่อได้รับคำสั่งที่เหมาะสม โดยปกติจะแสดงความสามารถในการกำหนดอาร์กิวเมนต์บรรทัดคำสั่งที่ส่งไปยังโปรแกรม อาร์กิวเมนต์เครื่องเสมือน (ในกรณีของ แอปพลิเคชันเดสก์ท็อปใน Java SE) ฯลฯ ปลั๊กอิน Eclipse และบุคคลที่สามเสนอการกำหนดค่าการเรียกใช้งานที่แตกต่างกัน บางประเภทโครงการ. ADT ก็ไม่มีข้อยกเว้น - มันยังเพิ่มการกำหนดค่าการเปิดตัวของตัวเองให้กับชุดอีกด้วย เมื่อคุณเปิดตัวเราครั้งแรก แอปพลิเคชั่นคราสและ ADT ได้สร้างใหม่ การกำหนดค่า Androidแอปพลิเคชันทำงานด้วยพารามิเตอร์เริ่มต้น

หากต้องการเข้าถึงการกำหนดค่าการเปิดตัวของโครงการ ให้ทำตามขั้นตอนเหล่านี้

1. คลิกขวาที่โปรเจ็กต์ในมุมมอง Package Explorer และเลือก Run As – Run Configurations

2. เลือกโครงการ Hello World จากรายการด้านซ้าย

3. ที่ด้านขวาของหน้าต่าง คุณสามารถเปลี่ยนชื่อของการกำหนดค่าการเปิดตัว รวมถึงปรับการตั้งค่าอื่นๆ เป็น แท็บ Android, แท็บเป้าหมายและแท็บทั่วไป

4. หากต้องการสลับการใช้งานจากโหมดอัตโนมัติเป็นโหมดกำหนดเอง ให้ไปที่แท็บเป้าหมายแล้วเลือกด้วยตนเอง

ตอนนี้ เมื่อคุณเปิดแอปพลิเคชัน คุณจะได้รับแจ้งให้เลือกโปรแกรมจำลองหรืออุปกรณ์ที่เหมาะสมสำหรับการใช้งาน บทสนทนานี้แสดงไว้ในรูปที่. 2.9. เพื่อความชัดเจน ฉันได้เพิ่มอุปกรณ์เสมือนหลายตัวที่มีระบบปฏิบัติการเป้าหมายเวอร์ชันต่างกัน และยังเชื่อมต่ออุปกรณ์จริงสองเครื่องด้วย

ข้าว. 2.9. การเลือกโปรแกรมจำลอง/อุปกรณ์เพื่อเรียกใช้แอปพลิเคชัน

บทสนทนาเผยให้เห็นทุกสิ่ง กำลังรันโปรแกรมจำลองและอุปกรณ์ที่เชื่อมต่ออยู่ในปัจจุบัน รวมถึง AVD อื่นๆ ที่ไม่ได้ทำงานอยู่ในปัจจุบัน

การดีบักแอปพลิเคชัน

บางครั้งแอปทำงานผิดปกติหรือหยุดทำงาน เพื่อระบุสาเหตุของปัญหา คุณจะต้องสามารถตรวจแก้จุดบกพร่องของโปรแกรมได้ Eclipse และ ADT นำเสนออย่างเหลือเชื่อ คุณสมบัติอันทรงพลังสำหรับแอพพลิเคชั่น Android เราสามารถตั้งค่าเบรกพอยต์ในโค้ด รับค่าของตัวแปร สถานะปัจจุบันของสแต็ก และอื่นๆ อีกมากมาย

ก่อนที่คุณจะเริ่มใช้การแก้ไขข้อบกพร่อง คุณต้องปรับไฟล์ AndroidManifest.xml ประเด็นนี้เป็นปัญหาเล็กน้อยเกี่ยวกับไก่และไข่ เนื่องจากเราไม่เคยดูไฟล์ Manifest มาก่อน บน ในขั้นตอนนี้สิ่งที่เราจำเป็นต้องรู้ก็คือไฟล์ Manifest จะกำหนดคุณลักษณะบางอย่างของแอปพลิเคชันของเรา หนึ่งในนั้นคือความสามารถในการดีบักแอปพลิเคชัน พารามิเตอร์นี้ถูกระบุในรูปแบบของแอตทริบิวต์แท็ก XML - หากต้องการเปิดใช้งานการแก้ไขข้อบกพร่อง เราเพียงเพิ่มแอตทริบิวต์ต่อไปนี้ให้กับแท็ก ในไฟล์รายการ: androi d:debuggable=true

เมื่อคุณพัฒนาแอปพลิเคชัน คุณสามารถปล่อยให้แอตทริบิวต์นี้อยู่ในไฟล์ Manifest ได้ อย่างไรก็ตาม อย่าลืมลบออกก่อนที่จะส่งแพ็คเกจไปยัง Android Market

เมื่อคุณได้เปิดใช้งานการแก้ไขข้อบกพร่องสำหรับแอปของคุณแล้ว คุณสามารถใช้งานบนโปรแกรมจำลองหรืออุปกรณ์ได้ ซึ่งมักจะอยู่ในรูปแบบของการตั้งค่าเบรกพอยต์เพื่อวิเคราะห์สถานะของโปรแกรมในบางขั้นตอน หากต้องการตั้งค่าเบรกพอยต์ ให้เปิดไฟล์โค้ดใน Eclipse แล้วดับเบิลคลิกในพื้นที่สีเทาก่อนบรรทัดโค้ดที่คุณต้องการ เพื่อสาธิตคุณลักษณะนี้ ลองทำในบรรทัดที่ 23 ของคลาส He1oWorl dActi vi ty นี่จะทำให้ดีบักเกอร์หยุดการทำงานของโปรแกรมทุกครั้งที่กดปุ่มบนหน้าจอ เบรกพอยต์ถูกทำเครื่องหมายไว้ในโปรแกรมแก้ไขโค้ดโดยมีวงกลมเล็กๆ อยู่ด้านหน้าบรรทัดที่คุณตั้งค่าไว้ (รูปที่ 2.10) หากต้องการลบเบรกพอยต์ ให้ดับเบิลคลิกอีกครั้งในตัวแก้ไขโค้ด

ข้าว. 2.10. การตั้งค่าเบรกพอยต์

การเรียกใช้การแก้ไขข้อบกพร่องนั้นคล้ายกับกระบวนการเรียกใช้แอปพลิเคชันที่อธิบายไว้ข้างต้นมาก คลิกขวาที่โปรเจ็กต์ในมุมมอง Package Explorer และเลือก Debug As – Android Application สิ่งนี้จะสร้างการกำหนดค่าการแก้ไขข้อบกพร่องใหม่สำหรับโปรเจ็กต์ของคุณ (เช่นเดียวกับที่คุณทำเมื่อคุณรันโปรแกรม) คุณสามารถเปลี่ยนการตั้งค่าเริ่มต้นสำหรับการกำหนดค่านี้ได้โดยเลือก Debug As – Debug Configurations จากเมนูบริบท

บันทึก

แทนที่จะใช้เมนูบริบทของโปรเจ็กต์ในมุมมอง Package Explorer คุณสามารถใช้เมนู Run เพื่อรันและดีบักแอปพลิเคชันของคุณและเข้าถึงการตั้งค่า

หากคุณเริ่มเซสชันการแก้ไขข้อบกพร่องเป็นครั้งแรก Eclipse จะถามคุณว่าคุณต้องการสลับไปใช้มุมมองการแก้ไขข้อบกพร่องหรือไม่ ซึ่งคุณสามารถทำได้โดยไม่ลังเล ลองพิจารณามุมมองนี้ ในรูป 2.11 แสดงลักษณะที่ปรากฏหลังจากเริ่มกระบวนการดีบักของแอปพลิเคชัน hel1o world ของเรา

ข้าว. 2.11. มุมมองการแก้ไขข้อบกพร่อง

หากคุณจำภาพรวมคร่าวๆ ของ Eclipse ได้ คุณจะรู้ว่า Eclipse มีหลายมุมมอง ประกอบด้วยชุดมุมมองสำหรับงานเฉพาะ มุมมองการตรวจแก้จุดบกพร่องดูแตกต่างอย่างมากจากมุมมองการเรียกใช้

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

ด้านล่างมุมมอง Debug คือมุมมองการแก้ไขโค้ดที่เราได้แนะนำไปแล้วเมื่อเรียนรู้เกี่ยวกับเปอร์สเปคทีฟ Java

มุมมองคอนโซลจะแสดงข้อความจากปลั๊กอิน ADT เพื่อแจ้งให้เราทราบว่าเกิดอะไรขึ้น

มุมมอง LogCat จะกลายเป็นหนึ่งในเพื่อนที่ดีที่สุดของเราเมื่อพัฒนาแอปพลิเคชัน โดยจะแสดงบันทึกข้อความที่มาจากส่วนประกอบของระบบ แอปพลิเคชันอื่นๆ และโปรแกรมของเรา นอกจากนี้ยังแสดงการติดตามสแต็กหากแอปพลิเคชันขัดข้องและข้อความเรียลไทม์ของเราเอง LogCat จะกล่าวถึงรายละเอียดเพิ่มเติมในหัวข้อถัดไป

มุมมองเค้าร่างไม่มีประโยชน์มากนักในเปอร์สเปคทีฟนี้ คุณน่าจะกำลังศึกษาตัวแปรและเบรกพอยต์ และตำแหน่งปัจจุบันของคุณในโปรแกรมจะไม่มีประโยชน์สำหรับคุณ ฉันมักจะปิดมุมมองนี้จากมุมมอง Debug เพื่อให้มีพื้นที่ว่างมากขึ้นสำหรับผู้อื่น

มุมมองตัวแปรมีประโยชน์อย่างยิ่งสำหรับการแก้ไขจุดบกพร่อง เมื่อดีบักเกอร์ถึงจุดพัก เรามีโอกาสที่จะตรวจสอบและเปลี่ยนแปลงตัวแปรในบริบทของโปรแกรมปัจจุบัน

สุดท้าย มุมมองเบรกพอยท์จะแสดงรายการเบรกพอยท์ที่เราตั้งค่าไว้

หากคุณสงสัย คุณอาจได้คลิกปุ่มในแอปพลิเคชันที่ทำงานอยู่เพื่อดูการทำงานของดีบักเกอร์แล้ว โดยจะหยุดที่เส้น 23 ตามจุดพักที่กำหนด คุณอาจสังเกตเห็นว่าในมุมมองตัวแปร ตัวแปรสำหรับบล็อกโปรแกรมปัจจุบันปรากฏขึ้น ซึ่งประกอบด้วยกิจกรรม (สิ่งนี้) และพารามิเตอร์เมธอด (v) เมื่อขยายรายการตัวแปร คุณจะสำรวจตัวแปรเหล่านั้นได้อย่างละเอียดมากขึ้น

มุมมอง Debug แสดงการติดตามสแต็กที่เกี่ยวข้องกับวิธีการปัจจุบัน โปรดทราบว่าคุณสามารถเปิดเธรดได้หลายเธรด ซึ่งคุณสามารถระงับเธรดได้ตลอดเวลาในมุมมองดีบัก เส้นที่ตั้งจุดพักจะถูกไฮไลต์ ซึ่งระบุตำแหน่งในโค้ดโปรแกรม

คุณสามารถบอกให้ดีบักเกอร์ดำเนินการนิพจน์ปัจจุบัน (โดยการกด F6) ให้เข้าสู่วิธีการที่เรียกโดยวิธีการปัจจุบัน (โดยการกด F5) หรือให้ดำเนินการโปรแกรมต่อตามปกติ (โดยการกด F8) คุณสามารถบรรลุเป้าหมายเดียวกันได้โดยใช้เมนู Run โปรดทราบว่าจริงๆ แล้วมีตัวเลือกการแก้ไขจุดบกพร่องมากกว่าที่ฉันเพิ่งบอกคุณไป และเช่นเคย ฉันขอแนะนำให้คุณทดลองกับสิ่งที่คุณต้องการ

บันทึก

Curiosity เป็นส่วนสำคัญในการพัฒนาเกม Android ที่ประสบความสำเร็จ คุณจะต้องทำความคุ้นเคยกับสภาพแวดล้อมการพัฒนาเพื่อให้ได้รับประโยชน์สูงสุด แต่อธิบายรายละเอียด Eclipse ไม่ได้หมด จึงแนะนำให้ทดลองอีกครั้ง

LogCat และ DDMS

ปลั๊กอิน ADT จะติดตั้งมุมมองและเปอร์สเปคทีฟใหม่ๆ มากมายสำหรับใช้ใน Eclipse มุมมองที่มีประโยชน์ที่สุดอย่างหนึ่ง (กล่าวถึงสั้น ๆ ในส่วนก่อนหน้า) เรียกว่า LogCat

LogCat เป็นระบบบันทึกเหตุการณ์ใน Android ที่ช่วยให้ส่วนประกอบของระบบและแอปพลิเคชันสามารถแสดงข้อมูลในระดับต่างๆ รายการบันทึกแต่ละรายการประกอบด้วยวันที่ เวลา ระดับการบันทึก ID ของกระบวนการต้นทางของรายการ แท็ก (กำหนดโดยแอปพลิเคชันเอง) และตัวข้อความเอง

มุมมอง LogCat รวบรวมและแสดงข้อมูลนี้จากโปรแกรมจำลองที่เชื่อมต่อหรืออุปกรณ์จริง ในรูป รูปที่ 2.12 แสดงตัวอย่างเอาต์พุตจากมุมมอง LogCat

ข้าว. 2.12. มุมมอง LogCat

สังเกตปุ่มที่มุมขวาบนของ LogCat

ห้ารายการแรกให้คุณเลือกระดับการบันทึกที่คุณต้องการดู

ปุ่มบวกสีเขียวช่วยให้คุณกำหนดตัวกรองตามแท็ก รหัสกระบวนการ และระดับการบันทึก มันจะช่วยคุณได้มากถ้าคุณต้องการดูบันทึกของแอปพลิเคชันของคุณเท่านั้น (ซึ่งอาจใช้แท็กพิเศษ)

ปุ่มที่เหลือช่วยให้คุณสามารถแก้ไขและเปลี่ยนตัวกรองรวมทั้งล้างหน้าต่างเอาต์พุตได้

หากเชื่อมต่ออุปกรณ์/เครื่องจำลองหลายเครื่องพร้อมกัน LogCat จะส่งออกข้อมูลจากอุปกรณ์เครื่องใดเครื่องหนึ่งเท่านั้น หากต้องการรับข้อมูลโดยละเอียดเพิ่มเติม คุณสามารถใช้เปอร์สเปคทีฟ DDMS

DDMS (Dalvik Debugging Monitor Server) นำเสนอข้อมูลที่ครอบคลุมมากขึ้นเกี่ยวกับกระบวนการ Dalvik และเครื่องเสมือนที่ทำงานบนอุปกรณ์ที่เชื่อมต่อทั้งหมด คุณสามารถสลับไปใช้เปอร์สเปคทีฟ DDMS ได้ตลอดเวลาโดยใช้รายการเมนู หน้าต่าง – มุมมองแบบเปิด – อื่นๆ – DDMS (หน้าต่าง – มุมมองแบบเปิด – อื่นๆ – DDMS) ในรูป รูปที่ 2.13 แสดงให้เห็นว่าเปอร์สเปคทีฟ DDMS โดยทั่วไปมีหน้าตาเป็นอย่างไร

ข้าว. 2.13. DDMS กำลังทำงานอยู่

เช่นเดียวกับมุมมองอื่นๆ เรามีมุมมองพิเศษหลายประการที่เป็นประโยชน์สำหรับเรา ในกรณีนี้ เราต้องการรวบรวมข้อมูลเกี่ยวกับกระบวนการทั้งหมด เครื่องเสมือน เธรด สถานะหน่วยความจำปัจจุบัน ข้อมูลจาก LogCat สำหรับอุปกรณ์เฉพาะ ฯลฯ มาดูมุมมองเหล่านี้กันดีกว่า

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

LogCat - เหมือนกับที่อธิบายไว้ในส่วนก่อนหน้า โดยมีข้อแตกต่างประการหนึ่งคือ จะแสดงข้อมูลจากอุปกรณ์ที่เลือกในมุมมองอุปกรณ์

การควบคุมโปรแกรมจำลอง – ช่วยให้คุณสามารถเปลี่ยนพฤติกรรมของอินสแตนซ์โปรแกรมจำลองที่ทำงานอยู่ได้ ตัวอย่างเช่น คุณสามารถสร้างพิกัด GPS ตัวอย่างสำหรับการทดสอบได้

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

ฮีป (ไม่แสดงในรูปที่ 2.13) - ให้ข้อมูลเกี่ยวกับสถานะของหน่วยความจำของอุปกรณ์ เช่นเดียวกับข้อมูลเธรด คุณต้องเปิดใช้งานการติดตามหน่วยความจำอย่างชัดเจนในมุมมองอุปกรณ์โดยคลิกปุ่มที่สองจากด้านซ้าย

Allocation Tracker - แสดงคลาสที่ใช้ล่าสุด สิ่งนี้มีประโยชน์มากในการต่อสู้กับหน่วยความจำรั่ว

File Explorer – ช่วยให้คุณสามารถแก้ไขไฟล์บนอุปกรณ์ Android หรืออินสแตนซ์จำลองที่เชื่อมต่อได้ คุณสามารถลากและวางไฟล์ลงในมุมมองนี้ได้เช่นเดียวกับที่คุณทำเมื่อทำงานกับระบบปฏิบัติการ

จริงๆ แล้ว DDMS เป็นแอปพลิเคชันแยกต่างหากที่รวมเข้ากับ Eclipse โดยใช้ปลั๊กอิน ADT คุณยังสามารถรันแยกจากไดเร็กทอรี $ANDR0ID H0M E/ tools (%ANDROID HOME%/tools เมื่อใช้ Windows) มันไม่ได้เชื่อมต่อกับอุปกรณ์โดยตรง แต่ใช้ Android Debug Bridge (ADB) ซึ่งเป็นยูทิลิตี้อื่นที่รวมอยู่ใน SDK แทน เรามาพิจารณาเพื่อเสริมความรู้ของเราเกี่ยวกับสภาพแวดล้อมการพัฒนา Android

การใช้เอดีบี

ADB ช่วยให้คุณจัดการอุปกรณ์ที่เชื่อมต่อและอินสแตนซ์จำลอง ประกอบด้วยสามองค์ประกอบที่แตกต่างกัน

แอปพลิเคชันไคลเอนต์ที่เปิดตัวบนเครื่องของผู้พัฒนาโดยใช้คำสั่ง adb (คำสั่งนี้จะใช้งานได้หากคุณกำหนดค่าตัวแปรสภาพแวดล้อมของคุณอย่างถูกต้อง) เมื่อเราพูดถึง ADB เราหมายถึงยูทิลิตี้บรรทัดคำสั่งนี้อย่างแน่นอน

เซิร์ฟเวอร์ที่ทำงานบนคอมพิวเตอร์ของผู้พัฒนาด้วย มีการติดตั้งเป็นบริการพื้นหลังและรับผิดชอบการเชื่อมต่อระหว่างโปรแกรม ADB และอุปกรณ์หรืออินสแตนซ์จำลองที่เชื่อมต่ออยู่

ADB daemon ซึ่งเป็นกระบวนการเบื้องหลังและทำงานบนโทรศัพท์หรือโปรแกรมจำลองทุกเครื่อง เซิร์ฟเวอร์ ADB ใช้ daemon นี้เพื่อเชื่อมต่อ

โดยปกติแล้วเราจะใช้ ADB ผ่าน DDMS โดยไม่สนใจว่ามียูทิลิตีบรรทัดคำสั่งแยกต่างหาก แต่บางครั้งการใช้งานแยกกันก็มีประโยชน์ ดังนั้นเรามาดูคุณสมบัติบางอย่างของมันกันดีกว่า

บันทึก

สำหรับการอ้างอิงที่สมบูรณ์ของคำสั่งที่มีอยู่ โปรดดูเอกสาร ADB บนเว็บไซต์ Android Developers (http://developer.android.com)

งานที่มีประโยชน์มากที่ดำเนินการโดยใช้ ADB คือการรับรายการอุปกรณ์และโปรแกรมจำลองทั้งหมดที่เชื่อมต่อกับเซิร์ฟเวอร์ ADB (และต่อกับคอมพิวเตอร์) เมื่อต้องการทำเช่นนี้ ให้รันคำสั่งคอนโซลต่อไปนี้ (หมายเหตุ: สัญลักษณ์ไม่ได้เป็นส่วนหนึ่งของคำสั่ง):

ด้วยเหตุนี้ รายการอุปกรณ์และอีมูเลเตอร์ที่เชื่อมต่อทั้งหมดพร้อมหมายเลขซีเรียลที่เกี่ยวข้องจะปรากฏบนหน้าจอ:

หมายเลขซีเรียลของอุปกรณ์หรือโปรแกรมจำลองใช้เพื่อดำเนินการคำสั่งที่ตามมา ตัวอย่างเช่น คำสั่งต่อไปนี้จะติดตั้งไฟล์ APK myapp และ rk จากเครื่องของผู้พัฒนาไปยังอุปกรณ์ที่มีหมายเลขซีเรียล NT019R803783:

อาร์กิวเมนต์ -s สามารถใช้กับคำสั่ง ADB ใดๆ ที่ดำเนินการใดๆ บนอุปกรณ์เฉพาะได้

นอกจากนี้ยังมีคำสั่งสำหรับการคัดลอกไฟล์ระหว่างคอมพิวเตอร์และอุปกรณ์ (โปรแกรมจำลอง) ผลลัพธ์ของคำสั่งต่อไปนี้คือการคัดลอกไฟล์ myfi1e ในเครื่อง txt ไปยังการ์ดหน่วยความจำอุปกรณ์ที่มีหมายเลขซีเรียล HT019Р803783:

หากต้องการทำสำเนาย้อนกลับของ fi1e txt จากการ์ดหน่วยความจำ ให้ใช้ชุดอักขระต่อไปนี้:

หากมีอุปกรณ์หรือโปรแกรมจำลองเพียงเครื่องเดียวเชื่อมต่อกับเซิร์ฟเวอร์ ADB คุณสามารถละหมายเลขซีเรียลได้ - adb จะตรวจจับโดยอัตโนมัติ

แน่นอนว่าความสามารถของ ADB ไม่ได้จำกัดอยู่เพียงฟังก์ชันที่เราอธิบายไว้เท่านั้น สิ่งเหล่านี้ส่วนใหญ่ใช้งานผ่าน DDMS และในกรณีส่วนใหญ่ เราจะไม่ใช้บรรทัดคำสั่ง อย่างไรก็ตาม สำหรับงานเล็กๆ นี่ถือเป็นทางออกที่ดี

เพื่อสรุปมันขึ้นมา

สภาพแวดล้อมการพัฒนา Android บางครั้งอาจดูน่ากลัว โชคดีที่คุณต้องการเพียงส่วนหนึ่งของฟังก์ชันการทำงานเพื่อเริ่มต้น

สิ่งที่สำคัญที่สุดที่คุณควรเข้าใจหลังจากเรียนคือการทำงานร่วมกันอย่างไร JDK และ Android SDK ทำหน้าที่เป็นพื้นฐานสำหรับการพัฒนา Android ทั้งหมด มีเครื่องมือในการคอมไพล์ ปรับใช้ และรันแอปพลิเคชันบนอินสแตนซ์และอุปกรณ์จำลอง เพื่อเร่งกระบวนการพัฒนาให้เร็วขึ้น เราใช้ Eclipse ร่วมกับปลั๊กอิน ADT ซึ่งช่วยลดความไม่สะดวกในการทำงานกับ JDK และ SDK บนบรรทัดคำสั่ง Eclipse นั้นสร้างขึ้นจากแนวคิดหลักหลายประการ: พื้นที่ทำงานที่จัดการโปรเจ็กต์ มุมมองที่มีฟังก์ชันพิเศษ (เช่น การแก้ไขโค้ดหรือเอาต์พุต LogCat) เปอร์สเปคทีฟ ซึ่งรวมมุมมองเพื่อทำงานเฉพาะ (เช่น การดีบัก) เรียกใช้และดีบักการกำหนดค่า ซึ่งช่วยให้คุณสามารถกำหนดตัวเลือกสำหรับการรันหรือดีบักแอปพลิเคชันของคุณได้

ข้อกำหนดเบื้องต้นสำหรับการเรียนรู้ความมั่งคั่งทั้งหมดนี้คือการฝึกฝน ไม่ว่ามันจะฟังดูน่าเบื่อแค่ไหนก็ตาม ขณะที่เราศึกษาเรื่องนี้ เราจะดำเนินโครงการที่จะแนะนำให้คุณรู้จักกับสภาพแวดล้อมการพัฒนา Android อย่างไรก็ตาม คุณไม่ควรหยุดอยู่แค่นั้น ขึ้นอยู่กับคุณแล้วที่จะต้องดำเนินการขั้นต่อไป

เมื่อคุณได้ซึมซับข้อมูลทั้งหมดนี้แล้ว คุณสามารถก้าวไปข้างหน้ากับสิ่งที่คุณเริ่มต้นทั้งหมดนี้เพื่อ: การพัฒนาเกม

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

การแก้จุดบกพร่อง USB ใช้ทำอะไร?

การดีบัก USB ใช้เพื่อใช้บริการสำหรับการดีบักแอปพลิเคชันและอุปกรณ์บนระบบปฏิบัติการ Android (ตรวจสอบว่าแอปพลิเคชันและระบบโดยรวมทำงานอย่างไรและเกิดความล้มเหลวอะไรบ้าง) ซึ่งเรียกว่า

OEM Factory Unlock คืออะไร?

เริ่มต้นด้วย Android 5.0 ผู้ผลิตหลายรายเริ่มใช้กลไกความปลอดภัยเพิ่มเติมเพื่อป้องกันการแก้ไขพาร์ติชันระบบโดยไม่ได้รับอนุญาต ด้วยเหตุนี้ ฟังก์ชัน "OEM Factory Unlock" จึงถูกนำมาใช้ในส่วน "เมนูนักพัฒนา" เมื่อเปิดใช้งาน คุณจะสามารถแฟลชการกู้คืนของบุคคลที่สามและเฟิร์มแวร์ที่กำหนดเองได้

อย่าสับสนระหว่าง "OEM Factory Unlock" กับการปลดล็อค Bootloader ซึ่งผู้ผลิตหลายรายต้องการ - Xiaomi, HTC, Huawei, Google Pixel, Sony

เมนูนักพัฒนา Android

« การแก้ไขจุดบกพร่อง USB" และ " โรงงานปลดล็อค OEM" ทั้งหมดอยู่ในส่วนที่ซ่อนไว้หนึ่งของการตั้งค่า Android ที่เรียกว่า " เมนูสำหรับนักพัฒนา- หากต้องการดูส่วนนี้ คุณต้องทำตามขั้นตอนการเปิดใช้งานง่ายๆ ให้เสร็จสิ้น

จะเปิดใช้งานการดีบัก USB ได้อย่างไร?

ในอุปกรณ์ Android ทุกรุ่น ไม่ว่าจะเป็นสมาร์ทโฟนหรือแท็บเล็ต ก็มีการแก้ไขจุดบกพร่อง USB อยู่แล้ว เมนู -> การตั้งค่า

ตัวเลือกตำแหน่งที่เป็นไปได้

แม้ว่าการแก้ไขข้อบกพร่อง USB จะอยู่ในการตั้งค่า แต่ตัวเลือกตำแหน่งในเมนูอาจแตกต่างกันและอาจมีหลายตัวเลือกในการค้นหา! ลองพิจารณา 6 ตัวเลือกที่เป็นไปได้

ตัวเลือกหมายเลข 1 สำหรับ Android 4.2 - Android 7.1:

เมนู -> การตั้งค่า -> เกี่ยวกับสมาร์ทโฟน/เกี่ยวกับแท็บเล็ต -> หมายเลขบิวด์ และคลิกที่มันประมาณ 7 - 10 ครั้ง จากนั้นกลับไปที่การตั้งค่า -> สำหรับนักพัฒนา ->

ตัวเลือกหมายเลข 2.1 สำหรับ Xiaomi (MIUI เวอร์ชันใหม่)

เมนู -> การตั้งค่า -> เกี่ยวกับโทรศัพท์ -> เวอร์ชัน MIUI และคลิกที่มันประมาณ 7 - 10 ครั้ง จากนั้นกลับไปที่การตั้งค่า -> ขั้นสูง -> สำหรับนักพัฒนา -> การแก้จุดบกพร่อง USB - ทำเครื่องหมายที่ช่อง

ตัวเลือกหมายเลข 2.2 สำหรับ Xiaomi (MIUI เวอร์ชันเก่า)

เมนู -> การตั้งค่า -> ทั่วไป -> เกี่ยวกับสมาร์ทโฟน/เกี่ยวกับแท็บเล็ต -> หมายเลขบิวด์ และคลิกที่มันประมาณ 7 - 10 ครั้ง จากนั้นกลับไปที่การตั้งค่า -> สำหรับนักพัฒนา -> การแก้ไขจุดบกพร่อง USB - ทำเครื่องหมายที่ช่อง

ตัวเลือกหมายเลข 3 สำหรับ Android 8.X และสูงกว่า:

บน Android 8.0 และใหม่กว่า การตั้งค่าได้รับการอัปเดตเล็กน้อย และตอนนี้ เพื่อไปที่เมนูนักพัฒนาซอฟต์แวร์และเปิดใช้งาน "การแก้ไขจุดบกพร่อง USB" คุณต้อง: ไปที่ระบบ -> เกี่ยวกับอุปกรณ์ (แท็บเล็ต/โทรศัพท์) -> คลิก 5-7 ครั้ง บน "หมายเลขบิลด์" และกลับไปที่ส่วนระบบ -> เมนูนักพัฒนา

สำหรับ Android เวอร์ชัน 1.6 - 4.2

ตัวเลือก #4:

เมนู -> การตั้งค่า -> การพัฒนา ->

ตัวเลือก #5:

เมนู -> การตั้งค่า -> สำหรับนักพัฒนา -> การแก้ไขจุดบกพร่อง USB - ทำเครื่องหมายที่ช่อง

ตัวเลือก #6:

เมนู -> การตั้งค่า -> แอปพลิเคชัน -> การพัฒนา -> การดีบัก USB (Android 2.2 - 3.0)

ตัวเลือกหมายเลข 7:

เมนู -> การตั้งค่า -> เพิ่มเติม -> ตัวเลือกสำหรับนักพัฒนา -> การแก้ไขจุดบกพร่อง USB - ทำเครื่องหมายที่ช่อง

ตัวเลือกหมายเลข 8 สำหรับ Android 4.2 และสูงกว่า:

เมนู -> การตั้งค่า -> ระบบ -> เกี่ยวกับสมาร์ทโฟน/เกี่ยวกับแท็บเล็ต -> หมายเลขบิวด์ และคลิกที่มันประมาณ 7 - 10 ครั้ง จากนั้นกลับไปที่การตั้งค่า -> สำหรับนักพัฒนา -> การแก้ไขจุดบกพร่อง USB - ทำเครื่องหมายที่ช่อง

หลังจากเปิดใช้งานการแก้ไขจุดบกพร่อง USB ให้อนุญาตคอมพิวเตอร์! (สำหรับ Android 4.2 ขึ้นไป)

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

เปิดใช้งานการแก้ไขข้อบกพร่อง USB แล้ว

เปิดใช้งานการแก้ไขข้อบกพร่อง USB และตรวจไม่พบอุปกรณ์ Android ของคุณ

สิ่งแรกที่คุณต้องเชื่อก็คือ การมีไดรเวอร์ที่ติดตั้งอยู่ไปยังคอมพิวเตอร์ของคุณหรือติดตั้งใหม่/อัพเดต รายละเอียดเกี่ยวกับการติดตั้งไดรเวอร์รวมถึงลิงก์ไปยังไดรเวอร์ล่าสุดมีอยู่ในบทความ - อย่างไร ปัญหาอีกประการหนึ่งที่ตรวจไม่พบ Android ก็คือมันเข้ามาแล้ว สถานะล็อค - ปลดล็อคสมาร์ทโฟนหรือแท็บเล็ตของคุณ! อย่าใช้พอร์ต ยูเอสบี 3.0, เท่านั้น ยูเอสบี 2.0 .

หากคุณยังคงไม่สามารถติดตั้งการแก้ไขข้อบกพร่อง USB ด้วยคอมพิวเตอร์ของคุณได้ คุณควรลองเปลี่ยนวิธีการเชื่อมต่อกับพีซี เมื่อคุณเชื่อมต่อสมาร์ทโฟนหรือแท็บเล็ตเข้ากับพีซีแล้ว ให้ดึงแถบข้อมูลด้านบน “ม่าน” ลง -> เลือกการเชื่อมต่อ USBและ เปิดใช้งานโหมด PTP.

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

บทความนี้จะแสดงวิธีแนบดีบักเกอร์กับแอปพลิเคชัน Android และทำตามขั้นตอนวิธีการเรียกใช้โดยใช้ข้อมูลที่ได้รับหลังจากการคอมไพล์แอปพลิเคชัน ข่าวดีก็คือว่าการดีบักไม่จำเป็นต้องมีสิทธิ์ของ superuser เทคนิคที่อธิบายไว้อาจมีประโยชน์มากในช่วง Pentest ของแอปพลิเคชันมือถือ เนื่องจากเราสามารถ "เจาะ" โค้ดในขณะที่โปรแกรมกำลังทำงาน รับและบันทึกข้อมูลที่ปกติเราไม่สามารถเข้าถึงได้ ตัวอย่างเช่น คุณสามารถสกัดกั้นการรับส่งข้อมูลก่อนการเข้ารหัส และรับคีย์ รหัสผ่าน และข้อมูลอันมีค่าอื่น ๆ ได้ทันที บทความนี้จะเป็นประโยชน์สำหรับผู้ทดสอบและนักพัฒนาแอปพลิเคชันมือถือที่ต้องการรับความรู้เชิงลึกเพิ่มเติมเกี่ยวกับการโจมตีที่อาจเกิดขึ้นบนแพลตฟอร์ม Android

ข้อกำหนดสภาพแวดล้อมการทดสอบ:

  • ระบบปฏิบัติการ: Windows / Mac OS X / Linux
  • Java (แนะนำเวอร์ชัน 1.7)
  • IDE (อีคลิปส์, IntelliJ IDEA, แอนดรอยด์สตูดิโอ)
  • Android SDK (https://developer.android.com/sdk/index.html?hl=i)
  • APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
  • อุปกรณ์/โปรแกรมจำลองระบบ Android

บทความนี้จะใช้การกำหนดค่าต่อไปนี้: Windows 8, Android Studio และ IntelliJ IDEA- อุปกรณ์: Nexus 4 ที่ใช้ Android เวอร์ชัน 4.4.4 ฉันแนะนำให้เพิ่มยูทิลิตี้ทั้งหมดไปที่ ตัวแปรสภาพแวดล้อม PATH เพื่อทำให้เครื่องมือเหล่านี้เข้าถึงได้ง่ายและรวดเร็วยิ่งขึ้น

สามารถดาวน์โหลดแพ็คเกจแอปพลิเคชัน Android (APK) ที่ใช้ในบทความนี้ได้จากที่นี่: com.netspi.egruber.test.apk .

การตั้งค่าอุปกรณ์

คำแนะนำด้านล่างนี้จะช่วยคุณในการเตรียมอุปกรณ์สำหรับการทดลอง

การเปิดใช้งานส่วนตัวเลือกสำหรับนักพัฒนา

ในการเริ่มต้น จะต้องเปิดใช้งานการแก้ไขข้อบกพร่อง USB บนอุปกรณ์ Android ของคุณ (ตัวเลือกการแก้ไขข้อบกพร่อง USB) ซึ่งจะช่วยให้คุณสามารถ "สื่อสาร" กับอุปกรณ์โดยใช้เครื่องมือจาก หน้าปัดแอนดรอย SDK. อย่างไรก็ตาม ก่อนหน้านี้ คุณต้องเปิดใช้งานส่วนตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ก่อน บนอุปกรณ์ของคุณ ไปที่การตั้งค่า > เกี่ยวกับโทรศัพท์ และคลิกที่หมายเลขบิลด์หลายๆ ครั้ง หลังจากนั้นข้อความจะปรากฏขึ้นโดยระบุว่าส่วนตัวเลือกสำหรับนักพัฒนาเปิดใช้งานอยู่

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

เปิดใช้งานการแก้ไขจุดบกพร่อง USB

หากต้องการเปิดใช้งานการแก้ไขจุดบกพร่องผ่านพอร์ต USB ให้ไปที่การตั้งค่า > ตัวเลือกนักพัฒนา และทำเครื่องหมายที่ช่องถัดจากการแก้ไขจุดบกพร่อง USB

รูปที่ 2: การเปิดใช้งานตัวเลือกการแก้ไขจุดบกพร่อง USB

เชื่อมต่ออุปกรณ์และเปิดใช้งาน ADB

หลังจากเชื่อมต่ออุปกรณ์เข้ากับคอมพิวเตอร์ผ่านพอร์ต USB แล้ว ข้อความ "การดีบัก USB ที่เชื่อมต่อบนอุปกรณ์" ควรปรากฏขึ้น คุณควรตรวจสอบว่าคุณสามารถเชื่อมต่อกับอุปกรณ์ของคุณโดยใช้แอป Android Debug Bridge (ADB) ที่มาพร้อมกับ ระบบปฏิบัติการ Android(แพ็คเกจเครื่องมือแพลตฟอร์ม Android SDK) ที่พรอมต์คำสั่ง ให้ป้อนคำสั่งต่อไปนี้:

อุปกรณ์ควรปรากฏในรายการ

รูปที่ 3: รายการอุปกรณ์ที่เชื่อมต่อ

หากอุปกรณ์ไม่ปรากฏในรายการ แสดงว่าสาเหตุที่เป็นไปได้มากที่สุดนั้นไม่ถูกต้อง ไดรเวอร์ที่ติดตั้ง(บนวินโดวส์) ไดรเวอร์สามารถพบได้ใน Android SDK หรือบนเว็บไซต์ของผู้ผลิต ทั้งนี้ขึ้นอยู่กับอุปกรณ์

การตรวจสอบแอปพลิเคชันสำหรับการดีบัก

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

วิธีแรกคือการวิ่ง อุปกรณ์แอนดรอยด์เฝ้าสังเกตซึ่งรวมอยู่ใน Android SDK (ในโฟลเดอร์เครื่องมือ) ใน ไฟล์วินโดว์เรียกว่า monitor.bat ที่ กำลังเปิด Androidการตรวจสอบอุปกรณ์ อุปกรณ์จะปรากฏในส่วนอุปกรณ์

รูปที่ 4: แอปพลิเคชัน Androidการตรวจสอบอุปกรณ์

หากแอปพลิเคชันใดๆ บนอุปกรณ์สามารถแก้ไขข้อบกพร่องได้ แอปพลิเคชันนั้นจะปรากฏในรายการด้วย ฉันสร้างโปรแกรมทดสอบแล้ว แต่รายการว่างเปล่าเนื่องจากโปรแกรมไม่สามารถดีบั๊กได้

วิธีที่สองในการตรวจสอบว่าแอปพลิเคชันสามารถแก้ไขข้อบกพร่องได้หรือไม่คือการตรวจสอบไฟล์ AndroidManifest.xml จากแพ็คเกจแอปพลิเคชัน (APK, แพ็คเกจแอปพลิเคชัน Android) APK เป็นไฟล์ zip ที่มีข้อมูลทั้งหมดที่จำเป็นในการเรียกใช้แอปพลิเคชันบนอุปกรณ์ Android ของคุณ

เมื่อใดก็ตามที่มีการดาวน์โหลดแอปพลิเคชันจาก Google เพลย์สโตร์แพ็คเกจแอปพลิเคชันก็จะถูกดาวน์โหลดด้วย ไฟล์ APK ที่ดาวน์โหลดมาทั้งหมดมักจะจัดเก็บไว้ในอุปกรณ์ในโฟลเดอร์ /data/app หากคุณไม่มีสิทธิ์ superuser คุณจะไม่สามารถแสดงรายการไฟล์จากไดเร็กทอรี /data/app ได้ แม้ว่าถ้าคุณรู้ชื่อไฟล์ APK คุณสามารถคัดลอกมันได้โดยใช้ยูทิลิตี้นี้ อดีบี- หากต้องการค้นหาชื่อไฟล์ APK ให้ป้อนคำสั่งต่อไปนี้:

จะปรากฏขึ้น บรรทัดคำสั่งอุปกรณ์ จากนั้นป้อนคำสั่งต่อไปนี้:

แพ็คเกจรายการ pm -f

รายการแพ็คเกจทั้งหมดบนอุปกรณ์จะปรากฏขึ้น

รูปที่ 5: รายการแพ็คเกจบนอุปกรณ์

เมื่อดูจากรายการ เราจะพบแอปพลิเคชันทดสอบ

รูปที่ 6: สร้างแพ็คเกจแอปพลิเคชันทดสอบ (เน้นด้วยสีขาว)

ตอนนี้คุณต้องคัดลอกไฟล์แพ็คเกจ เปิดเชลล์แล้วป้อนคำสั่งต่อไปนี้:

adb ดึง /data/app/[ไฟล์ apk]

รูปที่ 7: การคัดลอกไฟล์ APK จากอุปกรณ์ไปยังระบบ

ตอนนี้คุณต้องเปิดไฟล์แพ็กเกจและตรวจสอบเนื้อหาของ AndroidManifest.xml ขออภัย เราไม่สามารถแยกไฟล์เก็บถาวรได้เนื่องจากไฟล์ APK ถูกเข้ารหัสในรูปแบบไบนารี ยูทิลิตี้ที่ใช้บ่อยที่สุดสำหรับการถอดรหัสคือ apktool.apkแม้ว่าฉันจะใช้ เอพีเคสตูดิโอเนื่องจากแอปพลิเคชันนี้มีอินเทอร์เฟซแบบกราฟิกที่เป็นมิตร บทความที่เหลือจะพูดถึง APK Studio

ใน APK Studio ให้คลิกที่ไอคอนสีเขียวเล็กๆ ตั้งชื่อโครงการและระบุเส้นทางไป ไฟล์เอพีเค- จากนั้นระบุให้บันทึกโครงการ

รูปที่ 8: การสร้างโครงการใหม่ใน APK Studio

หลังจากเปิด APK แล้ว ให้เลือกไฟล์ AndroidManifest.xml และดูการตั้งค่าแท็กแอปพลิเคชัน หากไม่มีแฟล็ก android:debuggable (หรือมีการตั้งค่าไว้ ค่าเท็จ) ซึ่งหมายความว่าแอปพลิเคชันไม่สามารถดีบั๊กได้

รูปที่ 9: เนื้อหาของไฟล์ AndroidManifest.xml

การแก้ไขไฟล์ AndroidManifest.xml

การใช้ยูทิลิตี้ apktool หรือ APK Studio ทำให้เราสามารถแก้ไขไฟล์และบรรจุเนื้อหากลับเข้าไปในแพ็คเกจได้ ตอนนี้เราจะแก้ไขไฟล์ AndroidManifest.xml เพื่อให้สามารถแก้ไขข้อบกพร่องของแอปพลิเคชันได้ เพิ่มบรรทัด android:debuggable="true" ภายในแท็กแอปพลิเคชัน

รูปที่ 10: การเปลี่ยนแปลงเนื้อหาของแท็กแอปพลิเคชัน

หลังจากเพิ่มธงแล้ว ให้คลิกที่ไอคอน "ค้อน" และประกอบแพ็คเกจอีกครั้ง แพ็คเกจที่สร้างใหม่จะอยู่ในไดเร็กทอรี build/apk

รูปที่ 11: การสร้างแพ็คเกจใหม่เสร็จสมบูรณ์เรียบร้อยแล้ว

หลังจากสร้างใหม่ แพ็กเกจจะได้รับการลงนามและสามารถติดตั้งใหม่บนอุปกรณ์ได้ (ต้องลงนามแอปพลิเคชัน Android ทั้งหมด) แอปพลิเคชันส่วนใหญ่ไม่ตรวจสอบใบรับรองที่ใช้ในการลงนาม มิฉะนั้น คุณจะต้องเปลี่ยนรหัสที่ทำการตรวจสอบนี้

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

ถอนการติดตั้ง adb pm

จากนั้นติดตั้งแพ็คเกจใหม่:

ติดตั้ง adb [ไฟล์ .apk]

คุณยังสามารถลบและติดตั้งแพ็คเกจได้ด้วยคำสั่งเดียว:

adb ติดตั้ง -r [ไฟล์ apk]

รูปที่ 12: การติดตั้งแพ็คเกจที่สร้างใหม่

ตรวจสอบว่าแอปพลิเคชันที่ติดตั้งใหม่เปิดขึ้นอย่างถูกต้องบนอุปกรณ์ หากทุกอย่างใช้งานได้ ให้กลับไปที่ Android Device Monitor ซึ่งแอปพลิเคชันทดสอบควรปรากฏขึ้น

รูปที่ 13: แอปพลิเคชันที่สร้างใหม่สามารถดีบั๊กได้แล้ว

การตั้งค่าสภาพแวดล้อมการพัฒนา (IDE)

ตอนนี้คุณสามารถแนบดีบักเกอร์กับแอปพลิเคชันที่สร้างใหม่ได้ แต่ก่อนอื่นคุณต้องสร้างโปรเจ็กต์ในสภาพแวดล้อมการพัฒนา (บทความนี้ใช้ IntelliJ IDEA) เรามาสร้างโครงการใหม่กันเถอะ ในฟิลด์ชื่อแอปพลิเคชัน ให้ป้อนชื่อที่กำหนดเอง ในฟิลด์ชื่อแพ็คเกจ ให้ระบุชื่อที่ตรงกับลำดับชั้นโฟลเดอร์ของแพ็คเกจที่สร้างใหม่ทุกประการ

รูปที่ 14: การสร้างโปรเจ็กต์ใหม่ใน IntelliJ IDEA

โดยทั่วไปชื่อไฟล์ APK จะตรงกับโครงสร้างโฟลเดอร์ แม้ว่าคุณจะไม่แน่ใจ ให้ตรวจสอบลำดับชั้นไดเรกทอรีใน APK Studio จนถึงโฟลเดอร์ที่มีไฟล์แอปพลิเคชันอยู่ ในกรณีของฉัน ชื่อและโครงสร้างโฟลเดอร์เหมือนกันทุกประการ (com.netspi.egruber.test)

รูปที่ 15: ทดสอบลำดับชั้นไดเรกทอรีของแอปพลิเคชัน

ยกเลิกการเลือก "สร้างกิจกรรม Hello World" และสร้างโครงการให้เสร็จสิ้น (ตัวเลือกอื่นๆ ทั้งหมดยังคงเป็นค่าเริ่มต้น) โครงการใหม่ควรมีลักษณะดังนี้:

รูปที่ 16: ลำดับชั้นของโฟลเดอร์และไฟล์ของโปรเจ็กต์ใหม่

หลังจากสร้างโครงการแล้ว คุณจะต้องเพิ่ม ซอร์สโค้ดจากไฟล์ APK เพื่อให้ดีบักเกอร์ "รู้" ชื่อของสัญลักษณ์ วิธีการ ตัวแปร ฯลฯ ข่าวดีความจริงที่ว่าแอปพลิเคชัน Android สามารถถอดรหัสได้โดยไม่สูญเสียคุณภาพ (ซอร์สโค้ดจะเหมือนกับต้นฉบับ) หลังจากการคอมไพล์แล้ว ซอร์สโค้ดจะถูกนำเข้าไปยังสภาพแวดล้อมการพัฒนา (IDE)

การดึงแหล่งข้อมูลจากแพ็คเกจแอปพลิเคชัน

ขั้นแรก คุณต้องแปลง APK เป็นไฟล์ jar จากนั้น เมื่อใช้โปรแกรมถอดรหัส java เราจะได้ซอร์สโค้ดของแอปพลิเคชัน เราจะทำการแปลงเป็น jar โดยใช้ยูทิลิตี้นี้ เดกซ์2จาร์- dex2jar มีไฟล์ d2j-dex2jar.bat ซึ่งใช้ในการแปลง APK เป็น jar ไวยากรณ์คำสั่งค่อนข้างง่าย:

d2j-dex2jar.bat [ไฟล์ apk]

รูปที่ 17: การแปลง APK เป็น jar

จากนั้นเปิดหรือลากไฟล์ผลลัพธ์ลงใน JD-GUI (นี่คือตัวถอดรหัส Java)

รูปที่ 18: โครงสร้างไฟล์ Jar

ไฟล์ jar ควรปรากฏเป็นโครงสร้างแบบลำดับชั้นที่มีไฟล์ java พร้อมซอร์สโค้ดที่อ่านได้ ไปที่ ไฟล์ > บันทึกแหล่งที่มาทั้งหมด เพื่อแพ็คทุกอย่าง ข้อความต้นฉบับในไฟล์ zip

รูปที่ 19: บันทึกข้อความต้นฉบับของไฟล์ที่ถอดรหัสแล้ว

หลังจากบันทึกข้อความต้นฉบับแล้ว ให้แตกไฟล์เก็บถาวรลงในไดเร็กทอรีอื่น

รูปที่ 20: ไฟล์เก็บถาวรที่คลายการแพ็ก

ตอนนี้คุณต้องนำเข้าทั้งสองไดเรกทอรีไปยังโครงการที่สร้างไว้ก่อนหน้านี้ใน IDE ใน IntelliJ ไปที่โฟลเดอร์ src และคัดลอกเนื้อหาของไฟล์เก็บถาวรที่คลายแพ็กไว้ที่นั่น (สองไดเร็กทอรี)

รูปที่ 21: ทั้งสองโฟลเดอร์ถูกคัดลอกไปยังไดเร็กทอรี src

เมื่อกลับมาที่ Intellij เราจะเห็นโครงการที่อัปเดต

รูปที่ 22: ข้อความต้นฉบับปรากฏในโครงการ

ถ้าเราคลิกที่องค์ประกอบใดๆ จากรายการ เราจะเห็นข้อความต้นฉบับ ดังที่คุณเห็นในภาพหน้าจอด้านล่าง (ข้อความต้นฉบับของคลาส LoginActivity) ซอร์สโค้ดถูกทำให้สับสนโดยใช้ ProGuard

รูปที่ 23: ข้อความต้นฉบับที่สร้างความสับสนของคลาส LoginActivity

กำลังเชื่อมต่อดีบักเกอร์

ตอนนี้โปรเจ็กต์มีซอร์สโค้ดแล้ว เราก็สามารถเริ่มการตั้งค่าเบรกพอยต์ในเมธอดและตัวแปรได้ เมื่อถึงจุดพัก แอปพลิเคชันจะหยุดลง ตามตัวอย่าง ฉันตั้งค่าเบรกพอยต์ให้กับวิธีการ (ในโค้ดที่สร้างความสับสน) ซึ่งรับผิดชอบในการประมวลผลข้อมูลที่ป้อนลงในฟิลด์ข้อความ

รูปที่ 24: เบรกพอยต์ถูกตั้งค่าด้วยวิธีที่สับสน

ทันทีที่เบรกพอยต์ปรากฏขึ้น ให้เชื่อมต่อดีบักเกอร์กับกระบวนการบนอุปกรณ์โดยคลิกที่ไอคอนหน้าจอทางด้านขวา มุมบน(ไอคอนอาจแตกต่างกันบน IDE ของคุณ)

รูปที่ 25: การเชื่อมต่อดีบักเกอร์เข้ากับกระบวนการ

รูปที่ 26: รายการกระบวนการสำหรับการเชื่อมต่อดีบักเกอร์

หลังจากเลือกกระบวนการแล้ว ตัวดีบักเกอร์จะเชื่อมต่อกับอุปกรณ์

รูปภาพ 27: ดีบักเกอร์ที่เชื่อมต่อกับกระบวนการที่ทำงานบนอุปกรณ์

ฉันจะป้อนหมายเลข 42 ลงในช่องข้อความ (ถ้าคุณจำได้ว่ามีจุดพักในวิธีการที่เกี่ยวข้อง)

รูปภาพ 28: ป้อนหมายเลข 42 ในช่องข้อความ

หลังจากกดปุ่ม Enter Code แอปพลิเคชันจะหยุดทำงานที่จุดพักเนื่องจากดีบักเกอร์ทราบว่ากำลังเรียกใช้เมธอดใดบนอุปกรณ์ แอปพลิเคชัน Android ที่คอมไพล์ประกอบด้วย ข้อมูลการดีบัก(เช่นชื่อตัวแปร) สามารถเข้าถึงได้โดยดีบักเกอร์ที่สอดคล้องกับ Java Debug Wire Protocol (JDWP) หากแอปพลิเคชันของคุณเปิดใช้งานการแก้ไขข้อบกพร่อง ดีบักเกอร์ที่เข้ากันได้กับ JDWP (ดีบักเกอร์ส่วนใหญ่ที่มาพร้อมกับสภาพแวดล้อมการพัฒนา Java จะจัดอยู่ในหมวดหมู่นี้) จะสามารถเชื่อมต่อกับ เครื่องเสมือนแอปพลิเคชัน Android จากนั้นอ่านและดำเนินการคำสั่งแก้ไขจุดบกพร่อง

รูปที่ 29: การโจมตีของเบรกพอยต์

ภาพหน้าจอด้านล่างแสดงหมายเลขที่เราป้อนก่อนหน้านี้ในช่องข้อความ

รูปที่ 30: รายการตัวแปรของอินสแตนซ์คลาสปัจจุบัน

บทสรุป

เราไม่เพียงแต่สามารถอ่านข้อมูลในแอปพลิเคชันเท่านั้น แต่ยังสามารถแทรกข้อมูลของเราเองได้อีกด้วย สิ่งนี้อาจมีประโยชน์ ตัวอย่างเช่น หากเราต้องการขัดขวางโฟลว์ของการเรียกใช้โค้ดและเลี่ยงผ่านบางส่วนของอัลกอริธึม การใช้ดีบักเกอร์ช่วยให้เราเข้าใจตรรกะของแอปพลิเคชันได้ดีขึ้น และวิเคราะห์สิ่งที่ผู้ใช้ทั่วไปไม่สามารถเข้าถึงได้ ตัวอย่างเช่น การดูฟังก์ชันการเข้ารหัสที่ใช้และคีย์ไดนามิกจะมีประโยชน์มาก นอกจากนี้ บางครั้งเมื่อทำการดีบั๊ก จะมีประโยชน์ที่จะทราบว่าฟังก์ชันโต้ตอบกับระบบไฟล์หรือฐานข้อมูลอย่างไร เพื่อทำความเข้าใจว่าแอปพลิเคชันเก็บข้อมูลใดไว้ การจัดการที่คล้ายกันนี้มีอยู่ในอุปกรณ์ Android ใด ๆ ที่ไม่มีสิทธิ์ผู้ใช้ระดับสูง