Gỡ lỗi tệp APK tích hợp sẵn | Android Developers

Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Android Studio 3.0 trở lên cho phép bạn lập hồ sơ và gỡ lỗi tệp APK đã bật tính năng gỡ lỗi mà không cần phải tạo mới từ dự án Android Studio.

Để bắt đầu gỡ lỗi tệp APK, hãy làm theo các bước sau:

  1. Trên màn hình Chào mừng của Android Studio, hãy nhấp vào Profile or debug APK (Lập hồ sơ hoặc gỡ lỗi tệp APK).

    Nếu bạn đã mở dự án, hãy nhấp vào File > Profile or Debug APK (Tệp > Lập hồ sơ hoặc gỡ lỗi tệp APK) trên thanh trình đơn.

  2. Trong hộp thoại mở ra, hãy chọn tệp APK mà bạn muốn nhập vào Android Studio.

  3. Nhấp vào OK.

Sau đó, Android Studio sẽ hiển thị các tệp APK đã giải nén tương tự như hình 1.
Mặc dù những tệp này cung cấp tệp SMALI nhằm giúp các tệp DEX dễ đọc hơn, nhưng đây không phải là một nhóm tệp biên dịch ngược đầy đủ.

Nhập tệp APK tích hợp sẵn vào Android Studio

Hình 1. Nhập tệp APK tích hợp sẵn vào Android Studio.

Lưu ý:

Khi bạn nhập một tệp APK vào Android Studio, IDE sẽ tạo một dự án mới vào thư mục gốc của bạn trong ApkProjects/ và tạo một bản sao cục bộ của tệp APK đích tại đó. Các tệp SMALI được lưu trữ trong thư mục smali/out/ thuộc thư mục dự án mới.

Khung hiển thị Android trong ngăn Project (Dự án) cho phép bạn kiểm tra những nội dung sau của tệp APK:

  • APK file (Tệp APK): Nhấp đúp vào tệp APK để mở công cụ phân tích APK.
  • manifests (tệp kê khai): Chứa các tệp kê khai ứng dụng được trích xuất từ tệp APK.
  • java: Chứa mã Kotlin hoặc Java mà Android Studio tách (vào tệp SMALI) khỏi các tệp DEX của APK.
    Mỗi tệp SMALI trong thư mục này tương ứng với một lớp Kotlin hoặc Java.
  • cpp: Nếu ứng dụng bao hàm mã gốc, thư mục này chứa cả thư viện gốc của APK (các tệp SO).
  • External Libraries (Thư viện bên ngoài): Chứa SDK Android.

Bạn có thể dùng trình phân tích tài nguyên Android để bắt đầu kiểm thử hiệu suất ứng dụng.

Để gỡ lỗi mã Kotlin hoặc Java của ứng dụng, bạn cần đính kèm nguồn Kotlin hoặc Java và thêm điểm ngắt vào tệp nguồn Kotlin hoặc Java. Tương tự, để gỡ lỗi mã gốc, bạn phải đính kèm biểu tượng gỡ lỗi gốc.

Đính kèm nguồn Kotlin hoặc Java

Theo mặc định, Android Studio sẽ trích xuất mã Kotlin hoặc Java từ APK và lưu dưới dạng tệp SMALI. Để gỡ lỗi mã Kotlin hoặc Java bằng điểm ngắt, bạn cần trỏ IDE tới tệp nguồn Kotlin hoặc Java tương ứng với tệp SMALI mà bạn muốn gỡ lỗi.

Để đính kèm nguồn Kotlin hoặc Java, hãy tiến hành như sau:

  1. Nhấp đúp vào một tệp SMALI từ ngăn Project (Dự án) trong khung hiển thị Android.
    Sau khi mở tệp, trình chỉnh sửa sẽ hiển thị một biểu ngữ yêu cầu bạn chọn nguồn Kotlin hoặc Java:
    Đính kèm biểu ngữ nguồn
  2. Nhấp vào Attach Kotlin/Java Sources… (Đính kèm nguồn Kotlin/Java…) trên biểu ngữ trong cửa sổ trình chỉnh sửa.
  3. Chuyển đến thư mục chứa tệp nguồn Kotlin hoặc Java của ứng dụng rồi nhấp vào Open (Mở).

Trong cửa sổ Project (Dự án), Android Studio sẽ thay thế các tệp SMALI bằng tệp nguồn Kotlin hoặc Java tương ứng. Android Studio cũng tự động chứa các lớp bên trong những tệp đó. Bây giờ, bạn có thể thêm điểm ngắt và gỡ lỗi ứng dụng.

Đính kèm biểu tượng gỡ lỗi gốc

Nếu APK gồm các thư viện gốc (tệp SO) không chứa biểu tượng gỡ lỗi, thì Android Studio sẽ hiển thị một biểu ngữ tương tự như minh hoạ trong hình 1. Bạn không thể gỡ lỗi mã gốc của APK hay sử dụng điểm ngắt nếu không đính kèm thư viện gốc có thể gỡ lỗi.

Để đính kèm các thư viện gốc có thể gỡ lỗi, hãy tiến hành như sau:

  1. Tải NDK và các công cụ xuống nếu bạn chưa thực hiện việc này.
  2. Trên khung hiển thị Android, trong thư mục cpp ở cửa sổ Project (Dự án), hãy nhấp đúp vào một tệp thư viện gốc không chứa biểu tượng gỡ lỗi.

    Trình chỉnh sửa sẽ hiện một bảng chứa tất cả ABI mà APK hỗ trợ.

  3. Nhấp vào Add (Thêm) ở góc trên cùng bên phải cửa sổ trình chỉnh sửa.

  4. Chuyển đến thư mục chứa các thư viện gốc có thể gỡ lỗi mà bạn muốn đính kèm và nhấp vào OK.

Nếu tệp APK và thư viện gốc có thể gỡ lỗi được xây dựng bằng một máy trạm khác, thì bạn cũng cần chỉ định đường dẫn đến biểu tượng gỡ lỗi cục bộ bằng cách làm theo các bước sau:

  1. Thêm đường dẫn cục bộ vào các biểu tượng gỡ lỗi bị thiếu bằng cách chỉnh sửa trường trong cột Local Paths (Đường dẫn cục bộ) ở phần Path Mappings (Ánh xạ đường dẫn) của cửa sổ trình chỉnh sửa như minh hoạ trong hình 2.

    Trong hầu hết trường hợp, bạn chỉ cần cung cấp đường dẫn đến một thư mục gốc, sau đó Android Studio sẽ tự động kiểm tra thư mục con để ánh xạ các nguồn bổ sung. Android Studio cũng tự động ánh xạ các đường dẫn đến một NDK từ xa đến tệp tải xuống NDK cục bộ.

  2. Nhấp vào Apply Changes (Áp dụng các thay đổi) trong phần Path Mappings (Ánh xạ đường dẫn) của cửa sổ trình chỉnh sửa.

Cung cấp đường dẫn đến các biểu tượng gỡ lỗi cục bộ

Hình 2. Đường dẫn cục bộ đến các biểu tượng gỡ lỗi.

Các tệp nguồn gốc sẽ xuất hiện trong cửa sổ Project (Dự án). Mở các tệp nguồn gốc đó để thêm điểm ngắt và gỡ lỗi ứng dụng. Để xoá các ánh xạ, hãy nhấp vào Clear (Xoá) trong phần Path Mappings (Ánh xạ đường dẫn) của cửa sổ trình chỉnh sửa.

Vấn đề đã biết: Khi đính kèm biểu tượng gỡ lỗi vào tệp APK, cả tệp APK lẫn tệp SO có thể gỡ lỗi đều phải được tạo qua cùng một máy trạm hoặc máy chủ bản dựng.

Trong Android Studio 3.6 trở lên, bạn không cần tạo dự án mới khi tệp APK cập nhật bên ngoài IDE. Android Studio sẽ phát hiện các thay đổi trong tệp APK và cung cấp tuỳ chọn để nhập lại.

Nhập tệp APK đã cập nhật

Hình 3. Bạn có thể nhập lại tệp APK được cập nhật bên ngoài Android Studio.