แก้ไขข้อบกพร่อง APK ที่สร้างไว้ล่วงหน้า

Android Studio 3.0 ขึ้นไปช่วยให้คุณทำโปรไฟล์และแก้ไขข้อบกพร่องของ APK ที่เปิดใช้การแก้ไขข้อบกพร่องได้โดยไม่ต้องสร้างจากโปรเจ็กต์ Android Studio

หากต้องการเริ่มแก้ไขข้อบกพร่องของ APK ให้ทำตามขั้นตอนต่อไปนี้

  1. จากหน้าจอต้อนรับของ Android Studio ให้คลิกทำโปรไฟล์หรือแก้ไขข้อบกพร่องของ APK

    หากเปิดโปรเจ็กต์อยู่แล้ว ให้คลิกไฟล์ > โปรไฟล์หรือแก้ไขข้อบกพร่องของ APK จากแถบเมนู

  2. ในกล่องโต้ตอบที่เปิดขึ้น ให้เลือก APK ที่ต้องการนำเข้าไปยัง Android Studio

  3. คลิกตกลง

หากตัวเลือกนี้ไม่ปรากฏขึ้น ให้ตรวจสอบว่าคุณได้เปิดใช้ปลั๊กอิน "การรองรับ APK ของ Android" แล้ว

จากนั้น Android Studio จะแสดงไฟล์ APK ที่แตกแล้ว ซึ่งคล้ายกับรูปที่ 1 นี่ไม่ใช่ชุดไฟล์ที่คอมไพล์แล้วทั้งหมด แต่มีไฟล์ SMALI สำหรับไฟล์ DEX เวอร์ชันที่อ่านง่ายกว่า

การนำเข้า APK ที่สร้างไว้ล่วงหน้าไปยัง Android Studio

รูปที่ 1 การนำเข้า APK ที่สร้างไว้ล่วงหน้าลงใน Android Studio

มุมมอง Android ในแผงโปรเจ็กต์ช่วยให้คุณตรวจสอบเนื้อหาต่อไปนี้ของ APK ได้

  • ไฟล์ APK: ดับเบิลคลิก APK เพื่อเปิดตัววิเคราะห์ APK
  • ไฟล์ Manifest: มีไฟล์ Manifest ของแอปที่แยกจาก APK
  • java: มีโค้ด Kotlin หรือ Java ที่ Android Studio แยกชิ้นส่วน (เป็นไฟล์ SMALI) จากไฟล์ DEX ของ APK ไฟล์ SMALI แต่ละไฟล์ในไดเรกทอรีนี้จะสอดคล้องกับคลาส Kotlin หรือ Java
  • cpp: หากแอปมีโค้ดที่มาพร้อมเครื่อง ไดเรกทอรีนี้จะมีไลบรารีที่มาพร้อมเครื่องของ APK (ไฟล์ SO)
  • ไลบรารีภายนอก: มี Android SDK

คุณใช้ Android Profiler เพื่อเริ่ม ทดสอบประสิทธิภาพของแอปได้

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

แนบแหล่งที่มาของ Kotlin หรือ Java

โดยค่าเริ่มต้น Android Studio จะแยกโค้ด Kotlin หรือ Java จาก APK และ บันทึกเป็นไฟล์ SMALI หากต้องการแก้ไขข้อบกพร่องของโค้ด Kotlin หรือ Java โดยใช้ เบรกพอยต์ คุณต้องชี้ IDE ไปยังไฟล์ต้นฉบับ Kotlin หรือ Java ที่สอดคล้องกับไฟล์ SMALI ที่ต้องการแก้ไขข้อบกพร่อง

หากต้องการแนบแหล่งที่มาของ Kotlin หรือ Java ให้ทำดังนี้

  1. ดับเบิลคลิกไฟล์ SMALI จากแผงโปรเจ็กต์ในมุมมอง Android หลังจากเปิดไฟล์แล้ว โปรแกรมแก้ไขจะแสดงแบนเนอร์ที่ขอให้คุณเลือก แหล่งที่มาของ Kotlin หรือ Java ดังนี้ แนบแบนเนอร์แหล่งที่มา
  2. คลิกแนบแหล่งที่มาของ Kotlin/Java... จากแบนเนอร์ใน หน้าต่างเอดิเตอร์
  3. ไปที่ไดเรกทอรีที่มีไฟล์ต้นฉบับ Kotlin หรือ Java ของแอป แล้วคลิกเปิด

ในหน้าต่างโปรเจ็กต์ Android Studio จะแทนที่ไฟล์ SMALI ด้วยไฟล์ต้นฉบับ Kotlin หรือ Java ที่เกี่ยวข้อง Android Studio ยังรวมคลาสภายในโดยอัตโนมัติด้วย ตอนนี้คุณเพิ่มเบรกพอยต์และแก้ไขข้อบกพร่องของแอปได้แล้ว

แนบสัญลักษณ์การแก้ไขข้อบกพร่องของระบบ

หาก APK มีไลบรารีเนทีฟ (ไฟล์ SO) ที่ไม่มีสัญลักษณ์การแก้ไขข้อบกพร่อง Android Studio จะแสดงแบนเนอร์ให้คุณเห็น ซึ่งคล้ายกับแบนเนอร์ที่แสดงในรูปที่ 1 คุณจะแก้ไขข้อบกพร่องของโค้ดแบบเนทีฟของ APK หรือใช้ เบรกพอยต์ไม่ได้หากไม่ได้แนบไลบรารีแบบเนทีฟที่แก้ไขข้อบกพร่องได้

หากต้องการแนบไลบรารีเนทีฟที่แก้ไขข้อบกพร่องได้ ให้ทำดังนี้

  1. หากยังไม่ได้ดำเนินการ ให้ดาวน์โหลด NDK และเครื่องมือ
  2. ในมุมมอง Android ภายใต้ไดเรกทอรี cpp ในหน้าต่างโปรเจ็กต์ ให้ดับเบิลคลิกไฟล์ไลบรารีที่มาพร้อมเครื่องซึ่งไม่มีสัญลักษณ์สำหรับแก้ไขข้อบกพร่อง

    เอดิเตอร์จะแสดง ตารางของ ABI ทั้งหมดที่ APK รองรับ

  3. คลิกเพิ่มที่มุมขวาบนของหน้าต่างเครื่องมือแก้ไข

  4. ไปที่ไดเรกทอรีที่มีไลบรารีเนทีฟที่แก้ไขข้อบกพร่องได้ ซึ่งคุณต้องการแนบ แล้วคลิกตกลง

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

  1. เพิ่มเส้นทางในเครื่องไปยังสัญลักษณ์การแก้ไขข้อบกพร่องที่ขาดหายไปโดยแก้ไขฟิลด์ในคอลัมน์เส้นทางในเครื่องในส่วนการแมปเส้นทางของหน้าต่างโปรแกรมแก้ไข ที่แสดงในรูปที่ 2

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

  2. คลิกใช้การเปลี่ยนแปลงในส่วนการแมปเส้นทางของหน้าต่างโปรแกรมแก้ไข

ระบุเส้นทางไปยังสัญลักษณ์การแก้ไขข้อบกพร่องในเครื่อง

รูปที่ 2 เส้นทางในเครื่องเพื่อแก้ไขข้อบกพร่อง สัญลักษณ์

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

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

ใน Android Studio 3.6 ขึ้นไป คุณไม่จำเป็นต้องสร้างโปรเจ็กต์ใหม่ เมื่ออัปเดต APK นอก IDE Android Studio จะตรวจหาการเปลี่ยนแปลงใน APK และให้ตัวเลือกในการนำเข้าอีกครั้ง

นำเข้า APK ที่อัปเดตแล้ว

รูปที่ 3 คุณสามารถนำเข้า APK ที่อัปเดต ภายนอก Android Studio อีกครั้งได้