Hướng dẫnĐăng ngày: 8 phút đọc

Kiểm thử APK trên thiết bị Android thật không cần Android Studio

Cài và kiểm thử APK trên thiết bị Android thật không cần Android Studio. Thiết lập điện thoại, adb install hoặc trình duyệt, smoke test 10 phút, thu bằng chứng, dọn dẹp.

Bạn hoàn toàn có thể kiểm thử APK trên thiết bị Android thật không cần Android Studio: bật gỡ lỗi USB một lần, rồi cài bản build bằng adb install -r app.apk từ bộ platform-tools, hoặc thả tệp vào bảng Install APK của ADBKit trong Chrome hay Edge mà không phải cài gì. Bài này dành cho người nhận build chứ không tạo ra build: tester QA, quản lý sản phẩm và designer xem bản build từ CI, Firebase App Distribution hay ổ đĩa chung. Nội dung gồm lấy đúng tệp, thiết lập điện thoại, smoke test 10 phút, thu bằng chứng và dọn dẹp.

Vì sao phải kiểm thử trên thiết bị thật

Máy ảo tiện cho nhà phát triển, nhưng che giấu những vấn đề bản phát hành sẽ gặp ngoài thực tế:

  • Hiệu năng. Laptop giả lập điện thoại với CPU và bộ nhớ nhiều hơn hẳn máy tầm trung. Giật, khởi động chậm, hoạt ảnh khựng chỉ lộ ra trên máy thật.
  • Cảm biến và phần cứng. Camera, GPS, vân tay, NFC, Bluetooth, rung và phần khoét màn hình hoạt động khác đi hoặc không có trên máy ảo.
  • Giao diện của hãng. Samsung One UI, Xiaomi HyperOS thay đổi hộp thoại cấp quyền, tối ưu pin, thông báo và cử chỉ quay lại. Build chạy tốt trên Pixel vẫn có thể hỏng trên máy của người dùng.
  • Mạng thật. Dữ liệu di động, Wi-Fi chập chờn và việc chuyển qua lại giữa chúng mới là nơi xử lý lỗi mạng thực sự được thử. Hãy giữ trong nhóm một máy cũ, rẻ "tệ nhất"; nó nói lên nhiều điều hơn flagship.

Lấy đúng bản build

Hãy xin nhà phát triển hoặc pipeline CI tệp .apk, không phải .aab. App Bundle là định dạng phát hành lên Google Play và không cài bằng ADB được; nhà phát triển có thể dùng bundletool xuất APK universal.

Sau đó kiểm tra cách ký, vì chữ ký quyết định bạn có cập nhật được bản đang có trên máy hay không:

Bản buildKý bằngCập nhật bản trên Play Store?Cập nhật bản test trước?
DebugKhoá debug của nhà phát triểnKhôngCó, nếu bản trước dùng cùng khoá debug
Release / nội bộKhoá release hoặc khoá uploadCó, nếu khoá trùngCó, nếu bản trước dùng cùng khoá

Android từ chối cài đè lên ứng dụng ký bằng khoá khác (INSTALL_FAILED_UPDATE_INCOMPATIBLE); hãy gỡ bản cũ trước và chấp nhận mất dữ liệu. Cài versionCode cũ hơn đè lên bản mới sẽ lỗi INSTALL_FAILED_VERSION_DOWNGRADE, trừ khi ứng dụng debuggable và bạn thêm -d. Cả hai được giải thích trong cách cài APK bằng ADB.

Note: Dịch vụ phân phối thường tải build qua trình duyệt trên điện thoại. Với máy lab, tải về máy tính rồi cài qua USB lặp lại chính xác hơn: bạn biết chắc tệp nào đã được cài.

Thiết lập điện thoại một lần

  1. Mở Cài đặt → Giới thiệu về điện thoại và chạm Số bản dựng bảy lần để mở khoá Tuỳ chọn nhà phát triển.
  2. Trong Cài đặt → Hệ thống → Tuỳ chọn nhà phát triển, bật Gỡ lỗi USB.
  3. Kết nối bằng cáp USB truyền dữ liệu (một số cáp sạc không truyền dữ liệu). Nếu điện thoại hỏi, chọn Truyền tệp.
  4. Lần đầu kết nối, điện thoại hiện Cho phép gỡ lỗi USB?. Tích Luôn cho phép và chạm Cho phép.

Hướng dẫn riêng cho từng hãng có trong cách bật gỡ lỗi USB trên Android. Bật thêm Hiển thị thao tác chạm để thấy điểm chạm trong video.

Cài bản build

Bằng adb

Tải platform-tools, giải nén, rồi chạy từ thư mục đó:

adb devices                  # điện thoại phải hiện trạng thái "device"
adb install -r app.apk       # -r giữ dữ liệu khi thay thế bản đã cài

Thêm -g để cấp sẵn mọi quyền runtime; bỏ cờ này khi luồng xin quyền là thứ bạn đang kiểm thử.

Bằng ADBKit trên trình duyệt

Nếu không muốn giữ công cụ dòng lệnh, ADBKit làm đúng việc đó trong Chrome hoặc Edge.

  1. Mở không gian làm việc, bấm Connect device, chọn điện thoại trong hộp thoại USB của trình duyệt và chạm Allow trên điện thoại.
  2. Chọn công cụ Install APK và chọn tệp .apk.
  3. Nếu trên máy đã có bản build trước, tích Replace existing app. ADBKit yêu cầu xác nhận trước khi ghi đè.
  4. Chờ thông báo thành công; nếu cài bị từ chối, bảng hiện mã lỗi.

APK đi thẳng từ trình duyệt sang điện thoại. Chỉ một chương trình giữ được kết nối USB, nên nếu kết nối lỗi, hãy đóng Android Studio, scrcpy hoặc tab ADBKit khác, hoặc chạy adb kill-server.

Smoke test 10 phút

Chạy checklist này với mọi bản build trước khi đi sâu vào tính năng cần xem xét.

#Kiểm traCần để ý
1Khởi động nguộiBuộc dừng, rồi mở từ launcher. Không có hộp thoại ANR, màn hình đầu hiện trong vài giây.
2QuyềnTừ chối quyền lần đầu, rồi cấp lại từ Cài đặt. Ứng dụng giải thích, không crash hay lặp.
3Xoay màn hìnhXoay ở mọi màn hình chính. Chữ đã gõ và vị trí cuộn được giữ, không bị cắt.
4Chạy nền và quay lạiBấm Home, mở hai ứng dụng khác, quay lại, rồi khoá và mở khoá. Trạng thái và đăng nhập còn nguyên.
5Mạng yếuBật chế độ máy bay giữa một yêu cầu mạng, rồi tắt. Lỗi dễ hiểu và nút thử lại, không phải vòng xoay vô tận.
6Nhập liệuGõ vào mọi ô bằng bàn phím thật: emoji, chuỗi rất dài, dán. Bàn phím không được che ô nhập.
7Chế độ tốiBật giao diện tối của hệ thống. Kiểm tra tương phản, biểu tượng và nền trắng cố định.
8Điều hướng quay lạiDùng cả cử chỉ và nút quay lại ở mọi màn hình. Hộp thoại đóng, ứng dụng không thoát bất ngờ.
9Đường nâng cấpTrên máy có bản build trước, cài bản mới bằng chế độ thay thế. Đăng nhập và dữ liệu còn nguyên.

Xoay màn hình, chạy nền rồi quay lại và đường nâng cấp là ba mục hay hỏng nhất.

Thu bằng chứng trong lúc kiểm thử

Lỗi không nhìn thấy được sẽ bị đóng với lý do "không tái hiện được". Hãy thu thập ngay trong lúc thử:

  • Ảnh chụp màn hình của mọi trạng thái bất thường: adb exec-out screencap -p > bug.png, hoặc công cụ Screenshot trong ADBKit, có lịch sử phiên.
  • Video quay màn hình, bật trước bước bạn nghi sẽ lỗi: adb shell screenrecord /sdcard/bug.mp4 (dừng bằng Ctrl+C, rồi adb pull /sdcard/bug.mp4), hoặc nút Screen Record trong ADBKit, lưu tệp WebM về máy tính.
  • Logcat tại thời điểm lỗi. Trong ADBKit, đặt mức Error, lọc theo ứng dụng, tạm dừng khi crash và bấm Export logs. Lệnh CLI tương đương có trong cách tìm lỗi crash ứng dụng trong logcat.

Đẩy tệp kiểm thử lên thiết bị

Nhiều ca kiểm thử cần một tệp trên điện thoại: PDF mẫu, ảnh hỏng, CSV để nhập. Hãy đặt chúng vào Downloads, nơi mọi ứng dụng truy cập được qua bộ chọn tệp hệ thống:

adb push sample.pdf /sdcard/Download/
adb pull /sdcard/Download/export.csv .

Trong ADBKit, mở công cụ Files, vào Downloads, rồi dùng Upload file để gửi tệp từ máy tính hoặc Download để lấy về thứ ứng dụng tạo ra; bảng hỏi trước khi ghi đè. Chi tiết trong duyệt và truyền tệp bằng ADB.

Đặt lại và dọn dẹp giữa các bản build

Mỗi phiên nên bắt đầu từ trạng thái xác định:

adb shell pm clear com.example.app          # xoá dữ liệu, giữ bản cài (như cài mới)
adb uninstall com.example.app               # gỡ ứng dụng cùng dữ liệu
adb shell pm list packages | grep example   # tìm tên gói

pm clear là cách nhanh nhất để kiểm thử lại onboarding và hộp thoại xin quyền lần đầu. Cũng hãy xoá các tệp đã đẩy vào Downloads.

Warning: pm clear và uninstall xoá dữ liệu cục bộ của ứng dụng mà không hỏi lại. Hãy xuất những gì còn cần trước.

Báo lỗi kèm thông tin thiết bị

Mọi báo cáo lỗi phải ghi rõ máy nào và phiên bản Android nào. Thu thập một lần cho mỗi máy:

adb shell getprop ro.product.model          # SM-S911B
adb shell getprop ro.build.version.release  # 14
adb shell dumpsys package com.example.app | grep versionName

Trong ADBKit, công cụ Shell mở terminal trên thiết bị đang kết nối, nơi các lệnh getprop trên chạy y hệt. Đặt dòng máy, phiên bản Android và phiên bản ứng dụng ở đầu báo cáo, rồi đến các bước đánh số, kết quả mong đợi và thực tế, cuối cùng là ảnh chụp, video và log đã thu. Báo cáo đủ các phần đó thường được sửa trong một vòng trao đổi.