Blogs
/
[Flutter & React Native] Hướng dẫn cài đặt ứng dụng IPA trên thiết bị vật lý

Monday, February 17th 2025

[Flutter & React Native] Hướng dẫn cài đặt ứng dụng IPA trên thiết bị vật lý

Bối cảnh

Khi phát triển ứng dụng, chúng ta thường muốn cài đặt ứng dụng trên thiết bị vật lý của mình để kiểm tra hoặc đơn giản là có thể sử dụng ứng dụng của mình mà không phải cắm dây cáp liên tục.

Điều này khá đơn giản với Android khi được phép cài đặt file .apk mà không quá khắt khe về bảo mật. Tuy nhiên, đối với hệ sinh thái Apple, nếu không có tài khoản Apple Developer (trả phí $99/năm), chúng ta không thể sử dụng dịch vụ TestFlight để cài đặt ứng dụng trên thiết bị thật sau khi build .ipa.

Bài viết này sẽ hướng dẫn cách cài đặt file .ipa sau khi build dự án lên chính điện thoại của bạn mà không cần tài khoản Apple Developer, và sẽ có những lưu ý nho nhỏ sau:

  • Yêu cầu:
    • Bạn cần có máy macOS để chạy project với Xcode.
    • Máy Mac cần chung tài khoản iCloud với iPhone được cài đặt.
  • Ưu điểm:
    • Không tốn phí
    • Không qua trung gian
  • Nhược điểm:
    • Chỉ áp dụng cho cá nhân, không thể chia sẻ nhiều người dùng.
    • Do không có Apple Developer account nên không thể test được push-notification, in-app-purchase hay một số tính năng đặc thù khác.
    • Thời hạn sử dụng ứng dụng là 7 ngày. Tất nhiên, sau đó bạn có thể re-build và cài đặt lại bình thường.

Giải pháp

Source code sử dụng cho Demo là một dự án React Native mình chạy với Expo. Do chúng ta chỉ cần quan tâm folder ios sau khi build dự án nên sẽ tương tự với React Native CLI hay Flutter.

Note: folder ios luôn có sẵn khi phát triển dự án Flutter hoặc với React Native CLI. Nếu đây là lần đầu bạn làm quen với React Native Expo, hãy build dự án với lệnh expo run:ios.

Bước 1

  • Mở dự án và mở file ios/Runner.xcworkspace với Xcode.

Hình 1: Mở xcworkspace với Xcode
Hình 1: Mở xcworkspace với Xcode

Bước 2

  • Trong Xcode, Chọn Product -> Archive để build dự án.

Hình 2: Build dự án với Xcode
Hình 2: Build dự án với Xcode

Hình 3: Tiến trình build dự án
Hình 3: Tiến trình build dự án

[Quan trọng]: Cần chọn đúng tài khoản iCloud (cùng dùng trong iPhone) của bạn để có thể cài đặt ứng dụng lên thiết bị. Ngoài ra nếu có lỗi báo push-notification, cần xoá để có thể build ứng dụng.

Hình 4: Cấu hình thông tin dự án
Hình 4: Cấu hình thông tin dự án

Bước 3

  • Sau khi Xcode build thành công, một cửa sổ mới sẽ hiện lên. Right-click và chọn mở trong Finder.

Hình 5: Mở thư mục chứa build folder
Hình 5: Mở thư mục chứa build folder

  • Right-click vào file .xcarchive trong folder Archives và chọn Show Package Contents.

Hình 6: Mở package content
Hình 6: Mở package content

  • Cửa sổ folder build dự án sẽ hiện lên, tìm folder Applications bên trong folder Products.

Hình 7: Folder package content
Hình 7: Folder package content

  • Đổi tên Applications -> Payload, thực hiện nén folder này thành file .zip.

Hình 8: Nén file content thành .zip
Hình 8: Nén file content thành .zip

  • Tiếp tục đổi file .zip thành .ipa.

Hình 9: Chuyển đổi thành file ipa
Hình 9: Chuyển đổi thành file ipa

Bước 4

  • Đến bước này mọi thứ đã chuẩn bị xong nhưng đừng vội đóng tab trên nhé. Tiếp theo chúng ta cần cài đặt file .ipa lên thiết bị.

  • Quay lại Xcode, chọn tab Window > Devices and Simulators, các thiết bị được kết nối với máy Mac sẽ xuất hiện.

Hình 10: Devices and Simulators
Hình 10: Devices and Simulators

  • Thực hiện kéo file .ipa ở bước 3 vào mục Installed Apps. Ứng dụng sẽ được cài đặt lên thiết bị và hiển thị trên iPhone.

[Một chút ghi chú]: Ngay khi bạn mở ứng dụng trên điện thoại sẽ nhận được thông báo "Untrusted App Developer" và ứng dụng bị khoá. Để khắc phục, bạn cần vào Settings > General > VPN & Device Management và chọn "Trust Apple Development" cho ứng dụng. Sau đó bạn có thể mở lại ứng dụng của mình.

Kết luận

Trên đây là cách build file .ipa và cài đặt lên thiết bị vật lý mà không cần tài khoản Apple Developer. Hy vọng bài viết này sẽ giúp ích cho bạn trong quá tình phát triển phần mềm hay đem đi khoe ứng dụng với mọi người xung quanh như mình :)). Mọi góp ý hoặc câu hỏi có thể gửi cho mình qua email nhé.