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ộ
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
Ở đâ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 root
và adb reboot
để chạy adb dưới quyền root
Lúc này device sẽ được reboot. Tiếp tục chạy adb root
và adb 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