Flutter – Liên tục phân phối Android cho ứng dụng Flutter

Tram Ho

Chào các bạn, để tiết kiệm thời gian build app rồi phải deploy thủ công thì hôm nay mình sẽ viết 1 bài về Continuous delivery (from local machine) android phục vụ cho deploy Flutter app. Vì là bài viết đầu tay nên có gì thiếu sót mọi người thông cảm và góp ý để nâng cao chất lượng bài viết sau này nhé.

Các cách để setup Continuous delivery cho Flutter app

Chúng ta có thể dễ dàng tìm được những giải pháp hỗ trợ cho việc deploy Flutter dễ dàng trên Docs của Flutter, về cơ bản có 2 giải pháp chính:

  • Sử dụng dịch vụ bên thứ 3 như: Codemagic, Bitrise, Appcircle. (mình có dùng qua Codemagic, khá tiện lợi).
  • Cấu hình thủ công bằng fastlane (trong bài viết này mình sẽ tập trung vào giải pháp này).

Điều kiện tiên quyết

  • Cần có tài khoản Google Play Console Developer.
  • Đã cài đặt môi trường cần thiết để phát triển Flutter App.
  • Cài đặt môi trường phát triển và build file .aab (android app bundle).

Cài đặt và cấu hình fastlane.

Sau khi chạy lệnh “fastlane init” terminal sẽ yêu cầu cung cấp 1 số thông tin:

  • Cung cấp package name của app (ví dụ: my.package.name).
  • Cung cấp json secret file: nhấn “n” (bước này mình sẽ thiết lập sau).
  • Nhấn ‘n’ khi được hỏi “liệu bạn có định tải thông tin lên Google Play qua fastlane hay không?” (mình sẽ thiết lập sau).

Sau khi hoàn tất “thủ tục” fastlane init fastlane sẽ khởi tạo 2 file Appfile (cấu hình thông tin cho app) và Fastfile (cấu hình các lệnh deploy) trong thư mục android/fastlane.

Cấu hình trên Google Play Console và Google Cloud Platform để lấy “Json secret file” đã đề cập trước đó.

Các bước sẽ như sau:

  1. Mở Google Play Console
  2. Ở Sidebar bên trái, click vào Account Details, chú ý Developer Account ID.
  3. Click vào Setup ⇒ API access
  4. Chuyển tới Google Cloud Platform
  • Click vào nút Create new service account. để chuyển tới Google Cloud Platform.
  • Click nút CREATE SERVICE ACCOUNT ở đầu trang Google Cloud Platform Console.
  • Xác minh dùng đúng Developer Account ID trong IAM & Admin → Service Account.
  • Cung cấp Service account name và click Create.
  • Click Select a role, chọn Service Account User và nhấn tiếp tục → Nhấp DONE.
  • Click  Actions ở icon 3 chấm của service account vừa tạo → Chọn Manage keys.
  • Click ADD KEY  → Create New Key
  • Chọn kiểu JSON → nhấp CREATE.
  • Download file và lưu trữ nơi cần thiết trên máy tính.
  1. Quay về Google Play Store click nút DONE để đóng popup
  2. Click nút Grant Access  → Refresh service accounts để cập nhật những thay đổi từ bước 4.
  3. Cấp quyền cho tài khoản này. Gợi ý Admin (all permissions).
  4. Click Invite user để hoàn tất.

Run những lệnh fastlane đầu tiên.

Sau khi đã cấu hình những thứ cần thiết, chúng ta sẽ viết những lệnh phục vụ cho deploy.

  1. Đầu tiên kiểm tra xem thử đã kết nối với Google Play Store thành công chưa, chạy lệnh:

  1. Khi mọi thứ đã ok hết thì mở file android/fastlane/Appfile để thêm đường dẫn file json secret.

  1. Chạy lệnh sau để bắt đầu cấu hình.

Lưu ý: Google Play Store yêu cầu phải có 1 bản build đầu tiên (version code: 1) đã upload lên Google Play Store trước mới có thể deploy những bản build sau này.

Cấu hình build android appĐể tránh bài viết dài dòng, các bạn có thể làm theo hướng dẫn của Flutter để build bản android app đầu tiên: https://docs.flutter.dev/deployment/android.

Thay đổi 1 số config để tránh việc chạy lệnh fastlane deploy bị lỗi.

  1. Thêm lintOptions: android/app/build.gradle.

  1. Ở file android/gradle.properties thêm dòng lệnh sau:

  1. Ở file android/gradle/wrapper cài đặt project chạy trên gradle 7.5 thay vì 6.7 như hiện tại.

  1. Chạy lệnh sau để cập nhật gradle 7.5

Viết các lệnh cần thiết cho việc Deploy

Sau khi đã hoàn tất các bước trên. Mở file android/fastlane/Appfile.

Cấu hình việc build & deploy

Hoàn tất các lệnh cần thiết. Bắt đầu deploy thôi nào!

Tận hưởng thành quả.

Sau khi đã hoàn tất các bước trên thì ta đã hoàn thành việc Continuous delivery (local machine) cho android app. Các bản build sau chỉ cần nâng version code và chạy lệnh sau là đã upload file lên Internal Tester (tương tự cho các trường hợp beta, production,…)


Tài liệu tham khảo

https://docs.flutter.dev/deployment/cd

https://docs.fastlane.tools/getting-started/android/setup/

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo