Kết nối tới server cục bộ trong Android Virtual Device (AVD)

Để kết nối tới server các app thường sử dụng phương thức Application Programming Interface (API) – giao diện lập trình ứng dụng. API cung cấp khả năng truy xuất nhằm trao đổi dữ liệu giữa các ứng dụng.

Trong quá trình phát triển phần mềm đôi khi chúng ta cần kết nối tới các API  nằm trên server cục bộ (local). Trong bài viết này chúng ta sẽ tìm hiểu làm thế nào để kết nối tới api từ Android Virtual Device (AVD) lên server cục bộ có sử dụng host domain.

Giả sử trong file hosts đã có một domain đóng vai trò như một server cục bộ

Server api cục bộ là local.api.work

Lúc này ta có thể truy cập địa chỉ http://local.api.work sẽ được điều hướng tới server cục bộ trên máy

Để gọi api được cung cấp trên server cục bộ này  trong AVD đầu tiên khởi động AVD Manager trong Android Studio. Trong ví dụ này mình đã tạo sẵn một device  có tên là Pixel 3 XL API 28. Chúng ta sẽ thực hiện truy cập server nêu trên trong máy ảo này.

Tiến hành khởi chạy máy ảo

Lúc này ta cần truy cập vào đường dẫn C:\Users\<user>\AppData\Local\Android\Sdk\emulator. Lưu ý thư mục emulator là thư mục ẩn để truy cập vào đường dẫn này cần bật tùy chọn Hidden items trong Explorer

Copy đường dẫn đến thư mục hiện tại và dùng cmd để di chuyển đến thư mục trong ví dụ này đường dẫn là C:\Users\tienl\AppData\Local\Android\Sdk\emulator ta sẽ thực hiện như sau. Chạy lệnh

emulator -list-avds
Lấy danh sách tên các device đang chạy

Ở đây ta có một thiết bị đã tạo trước đó có tên là: Pixel_3_XL_API_28

Tiếp tục khởi chạy emulator dưới chế độ ghi

emulator -avd Pixel_3_XL_API_28 -writable-system -no-snapshot-load

Lưu ý: Pixel_3_XL_API_28 là tên device ta đã lấy ở trên

Nếu trong cửa sổ cmd hiện lên dòng chữ emulator: WARNING: System image is writable là thành công.

Lưu ý: ở bước khởi chạy emulator dưới chế độ ghi nếu bị lỗi sẽ cần bỏ tùy chọn bắt đầu bằng Google Play... trong SDK Platforms chỉ giữ lại Google API System Image. Các bản dựng bao gồm Google Play Image sẽ không thể khởi chạy emulator  dưới chế độ ghi. Vì vậy cần tắt chếđộ này đi. Bạn có thể bật lại sau khi hoàn thành.

Tiếp theo bật một cửa sổ CMD mới. Tiến hành cd đến  đường dẫn C:\Users\<user>\AppData\Local\Android\Sdk\platform-tools để sử dụng adb

Chạy lệnh adb rootadb reboot để chạy adb dưới quyền root

Lúc này device sẽ được reboot. Tiếp tục chạy adb rootadb remount

Bây giờ ta có thể push các hosts file trên window sang file hosts emulator của Android. Chạy lệnh

adb push C:\Windows\System32\drivers\etc\hosts /system/etc/

Trong đó C:\Windows\System32\drivers\etc\hosts là vị trí file hosts trên windows. /system/etc/ là đường dẫn cần sao chép file hosts trong android emulator. Các emulator device sẽ đọc các file hosts trong đường dẫn này. Sau khi chạy thành công sẽ xuất hiện thông báo

Lúc này file hosts trên windows đã được đồng bộ sang emulator. Để kiểm tra lại file host đã được push đúng hay chưa chạy lệnh

  • adb shell
  • cd system/etc
  • cat hosts

Nếu nội dung hosts file hiển thị đồng bộ giống file hosts bên windows là thành công. Lúc này tiến hành tắt emulator và chạy lại bằng lệnh

emulator -avd Pixel_3_XL_API_28 -writable-system -no-snapshot-load

Bây giờ ta có thể truy cập server local trên windows trong emulator android thông qua chrome cũng như call các api local khi code app.

Chúc các bạn thành công :D

Tien Le

Tien Le