Gỡ lỗi APK tích hợp sẵn

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

Để bắt đầu gỡ lỗi tệp APK, hãy nhấp vào Profile or debug APK (Lập hồ sơ hoặc gỡ lỗi tệp APK) trên màn hình Welcome (Chào mừng) của Android. Hoặc 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. Trong cửa sổ hộp thoại tiếp theo, hãy chọn tệp APK mà bạn muốn nhập vào Android Studio rồi nhấp OK.

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

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

Chế độ xem 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ở trình 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/Java 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/Java.
  • cpp: Nếu ứng dụng bao hàm mã gốc, thư mục này chứa cả cá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ể sử dụng trình phân tích tài nguyên Android từ bây giờ để bắt đầu kiểm thử hiệu suất của ứng dụng.

Để gỡ lỗi mã Kotlin/Java trên ứng dụng, bạn cần đính kèm nguồn Kotlin/Java và thêm điểm ngắt vào tệp .kt/.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/Java

Theo mặc định, Android Studio sẽ trích xuất mã Kotlin/Java từ APK của bạn và lưu dưới dạng tệp .smali. Để gỡ lỗi mã Kotlin/Java bằng cách sử dụng các điểm ngắt, bạn cần trỏ IDE tới tệp nguồn .kt 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/Java, hãy tiến hành các bước sau:

  1. Nhấp đúp vào một tệp .smali trong ngăn Project (Dự án) (sử dụng chế độ xem 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/Java:

Đính kèm biểu ngữ nguồn

  1. Nhấp vào Attach Kotlin/Java Sources (Đính kèm nguồn Kotlin/Java) trên biểu ngữ đầu cửa sổ trình chỉnh sửa.
  2. Điều hướng tới thư mục chứa tệp nguồn Kotlin/Java của ứng dụng rồi nhấp vào Open (Mở).

Trong cửa sổ Project (Dự án), IDE sẽ thay thế các tệp .smali bằng các tệp .kt hoặc .java tương ứng. IDE cũng tự động bao hàm các lớp bên trong các tệp đó. Bây giờ, bạn có thể thêm điểm ngắt và gỡ lỗi ứng dụng như bình thường.

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

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

Nếu bạn tạo các thư viện gốc trong APK bằng một mã bản dựng, thì Android Studio sẽ kiểm tra xem mã bản dựng trong các tệp biểu tượng có khớp với mã bản dựng trong thư viện gốc hay không và từ chối các tệp biểu tượng không khớp. Nếu bạn không tạo bằng mã bản dựng, thì việc cung cấp tệp biểu tượng không chính xác có thể gây ra sự cố khi 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. Hãy nhớ tải xuống NDK và công cụ nếu bạn chưa thực hiện việc này.
  2. Tại thư mục cpp trong cửa sổ Project (Dự án) (chỉ hiển thị khi bạn đã chọn chế độ xem Android như minh hoạ trong hình 2), 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 thị một bảng chứa tất cả các ABI mà APK của bạn 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. Điều hướng tới 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, 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 bên dưới cột Local Paths (Đường dẫn cục bộ) trong mục 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 và Android Studio sẽ tự động kiểm tra thư mục con để liên kết các nguồn bổ sung. IDE cũng tự động liên kết các đường dẫn đến một NDK từ xa tới tệp tải xuống NDK cục bộ của bạn.
  2. Nhấp vào Áp dụng thay đổi trong mục Liên kết đường dẫn trong cửa sổ trình chỉnh sửa.

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

Hiện tại, bạn sẽ thấy các tệp gốc trong cửa sổ Project (Dự án). Mở các tệp gốc đó để thêm điểm ngắt và gỡ lỗi ứng dụng của bạn như bình thường. Bạn cũng có thể xoá các ánh xạ bằng cách nhấp vào Clear (Xoá) trong mục 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 APK, tệp APK và tệp .so có thể gỡ lỗi phải cùng được tạo bằng một máy trạm hoặc máy chủ bản dựng.

Trong Android Studio phiên bản 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.

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.