· Publishing · 6 phút đọc

Đăng thông tin App Store mà không cần fastlane

Đăng thông tin App Store mà không cần fastlane
TL;DR. deliver và supply của fastlane đẩy metadata, ảnh chụp màn hình và file cài đặt của bạn lên cả hai kho ứng dụng từ dòng lệnh — miễn phí, mã nguồn mở, và luôn cập nhật nếu bạn tích hợp vào CI. Cái giá phải trả là ai đó phải xây dựng và duy trì pipeline đó: Ruby, Xcode hoặc Gradle, một Fastfile, và việc bảo trì các UI test. Nếu bạn không muốn vận hành pipeline, các lộ trình không-code là bảng điều khiển web của kho ứng dụng, gọi trực tiếp API của kho ứng dụng, hoặc một công cụ soạn sẵn thông tin đăng cho bạn. Mokbi là lộ trình không-code thực sự đăng được: nó thiết kế ảnh chụp màn hình và feature graphic, viết và dịch toàn bộ thông tin đăng sang 50 ngôn ngữ, rồi đẩy thẳng lên Google Play qua Play Developer API, đồng thời chuẩn bị sẵn phiên bản App Store trong App Store Connect để bạn nhấn gửi. Không Ruby, không Xcode, không UI test.

fastlane là câu trả lời mặc định và điều đó có lý do. Đây là bộ công cụ miễn phí, cấp phép MIT, và hành động deliver (còn gọi là upload_to_app_store) tải ảnh chụp màn hình, video App Preview, metadata và file cài đặt lên App Store Connect chỉ trong một lệnh. Ở phía Android, supply (còn gọi là upload_to_play_store) làm điều tương tự cho Google Play — metadata, ảnh chụp màn hình và APK hoặc app bundle. Chạy một trong hai từ CI và thông tin đăng của bạn sẽ tự tái tạo mỗi lần phát hành, không bao giờ lệch khỏi ứng dụng thật.

Vậy câu hỏi trung thực không phải là "fastlane có tốt không" — nó tốt thật. Câu hỏi là bạn có muốn sở hữu pipeline khiến nó tốt như vậy, hay bạn muốn cập nhật thông tin đăng mà không cần pipeline.

deliver và supply thực sự làm gì

Cả hai đều là lớp bọc quanh API chính thức của kho ứng dụng. Đằng sau hậu trường, fastlane thực hiện đúng những lệnh gọi mà bạn có thể tự làm.

  • deliver (iOS). Tải tên ứng dụng, mô tả, từ khóa, ghi chú phát hành, URL, danh mục, thông tin xét duyệt, cùng ảnh chụp màn hình và video preview đã dịch theo ngôn ngữ. File cài đặt được tải lên qua iTMSTransporter của Apple; metadata đi qua App Store Connect API. Nó cũng có thể gửi xét duyệt sau khi tải lên.
  • supply (Android). Tải metadata, ảnh chụp màn hình và APK hoặc AAB lên Google Play, chọn track và đẩy bản build. Lưu ý điểm cần cẩn thận: ảnh chụp màn hình tải lên sẽ thay thế ảnh hiện có của một ngôn ngữ thay vì bổ sung thêm.

Cả hai đều xác thực bằng API key — một App Store Connect API key cho Apple, một service-account JSON cho Google — nên khi đã cấu hình xong, chúng chạy tự động trong CI mà không cần người can thiệp. Đó chính là sức hút: metadata và ảnh chụp màn hình như một dạng code, được đưa vào version control trong repo, tự động đẩy đi mỗi lần build.

Cái giá thực sự của fastlane

fastlane miễn phí để cài đặt và miễn phí để chạy. Cái giá nằm ở việc thiết lập và bảo trì, và nó được trả bằng thời gian kỹ thuật.

  • Một môi trường chạy cần duy trì. fastlane là một toolchain Ruby (Ruby 3.0+), thường được quản lý bằng Bundler. Việc trên iOS cần Xcode trên máy Mac; Android cần phía Gradle. Đó là cỗ máy thật sự cần cài đặt và giữ cho luôn được vá lỗi.
  • File cấu hình cần viết. Một Fastfile định nghĩa các lane của bạn; một Deliverfile hoặc thư mục metadata Android chứa chi tiết thông tin đăng. Làm cho phiên bản đầu tiên chạy đúng thường mất một, hai ngày.
  • CI cần dựng lên. Việc tự động hóa chỉ đáng giá khi nằm trong một pipeline, nghĩa là cần API key, secret ký, và một build runner được cấu hình và giữ luôn xanh.
  • Việc bảo trì chụp ảnh màn hình, nếu bạn dùng. snapshot của fastlane chạy UI test trong simulator để chụp ảnh màn hình theo từng ngôn ngữ. Các test đó khá mong manh: một báo cáo phổ biến là một thiết lập chạy tốt trong vài tháng, rồi một thay đổi UI làm hỏng luồng và code test phải điều hướng lại theo trạng thái mới. snapshot mặc định thử lại các lần chạy không ổn định, che giấu tính bất định do mạng và dữ liệu thay vì thực sự sửa nó. Và output thô không có chú thích hay nền — các đội thường vẫn phải hoàn thiện thiết kế bằng một công cụ khác.

Không có điều gì ở đây là chê bai công cụ. Đây là sự đánh đổi trung thực: fastlane biến một việc thủ công lặp lại thành code, và đổi lại bạn phải duy trì code đó. Với một đội phát hành hàng tuần và có kỹ sư sở hữu quy trình tự động hóa phát hành, đó là một thỏa thuận tốt. Với một người làm một mình hay một PM chỉ cập nhật thông tin đăng vài lần một năm, pipeline có thể tốn công duy trì hơn cả những gì nó tiết kiệm được.

Cập nhật thông tin đăng mà không cần fastlane

Nếu bỏ qua fastlane, bạn vẫn có ba cách để đưa metadata và ảnh chụp màn hình lên kho ứng dụng.

1. Bảng điều khiển web của kho ứng dụng

Lộ trình đơn giản nhất. Trong App Store Connect bạn chỉnh từng bản dịch bằng tay và thả ảnh chụp màn hình vào các ô kích thước hiển thị; trong Google Play Console bạn chỉnh thông tin đăng theo từng ngôn ngữ và tải ảnh chụp màn hình lên ở đó. Không code, không key, không gì cần duy trì — bạn chỉ trỏ chuột và bấm. Nhược điểm là hoàn toàn thủ công, và làm việc này qua nhiều ngôn ngữ từng màn hình một thì chậm và dễ sai sót. Ổn với một hoặc hai ngôn ngữ; đau đầu với 20 ngôn ngữ.

2. Gọi trực tiếp API của kho ứng dụng

Cả hai kho ứng dụng đều công khai đúng những API mà fastlane gọi, nên bạn có thể tự viết script gọi chúng mà không cần dùng đến stack Ruby của fastlane. App Store Connect API của Apple là một REST API xác thực bằng JWT ngắn hạn (ES256, ký bằng key của bạn), với các endpoint để tạo bộ ảnh chụp màn hình, đặt chỗ và tải byte ảnh, cùng cập nhật metadata. Play Developer API của Google dùng mô hình "edits" — bạn mở một edit, thay đổi thông tin đăng và ảnh, rồi commit nó. Cách này cho bạn toàn quyền kiểm soát và phù hợp với một dashboard nội bộ tùy chỉnh, nhưng bạn phải tự viết và duy trì tích hợp đó. Đây là cam kết nhỏ hơn một pipeline fastlane đầy đủ, nhưng không phải là không có cam kết.

3. Một công cụ được quản lý soạn sẵn thông tin đăng

Lộ trình không-code khác là một công cụ tạo sẵn thông tin đăng cho bạn, nên việc còn lại chỉ là đưa nó lên kho ứng dụng. Đây là chỗ sự đánh đổi đảo ngược: thay vì một kỹ sư sở hữu pipeline, một PM hoặc designer sở hữu trực tiếp thông tin đăng trên trình duyệt. Bạn đang đánh đổi tự động hóa CI để không cần đến kỹ sư chút nào.

Vị trí thực sự của Mokbi

Mokbi không cố thay thế câu chuyện CI của fastlane. Nếu mục tiêu của bạn là ảnh chụp màn hình tự tái tạo từ mỗi lần build mà không cần con người can thiệp, một pipeline fastlane là công cụ đúng và nó miễn phí. Chúng tôi phục vụ trường hợp khác: người muốn đăng một bộ thông tin đẹp mà không phải đụng đến Ruby, Xcode, Fastfile, hay UI test.

Trên trình duyệt bạn thiết kế ảnh chụp màn hình, soạn nội dung thông tin đăng, và dịch toàn bộ sang 50 ngôn ngữ — không simulator, không CI, không code. Một designer hay PM có thể sở hữu toàn bộ bề mặt marketing từ đầu đến cuối.

Đây là chặng cuối, và Mokbi lo liệu hết. Nó thiết kế ảnh chụp màn hình và feature graphic, viết và dịch toàn bộ thông tin đăng sang 50 ngôn ngữ, rồi đẩy kết quả thẳng lên Google Play qua Play Developer API và chuẩn bị sẵn phiên bản App Store trong App Store Connect, sẵn sàng để bạn nhấn Gửi — chính Apple yêu cầu bước Gửi cuối cùng đó và tự xét duyệt, một quy định của Apple, không phải khoảng trống từ phía chúng tôi. Cùng những endpoint mà fastlane gọi, chỉ trừ pipeline.

Khi nào chọn cái nào

  • Phát hành hàng tuần, có kỹ sư, muốn không lệch pha? fastlane. Nó miễn phí, tự động, và giữ ảnh chụp màn hình cùng metadata luôn khớp với ứng dụng. Không gì khác ở đây làm tốt hơn được.
  • Cập nhật thông tin đăng vài lần một năm, không có CI dư? Bảng điều khiển web, hoặc một công cụ soạn sẵn thông tin đăng. Việc duy trì pipeline không đáng với tần suất đó.
  • Cần khả năng kiểm soát bằng code nhưng không cần stack của fastlane? Gọi trực tiếp App Store Connect API và Play Developer API.
  • Muốn một designer hay PM sở hữu thông tin đăng trên nhiều ngôn ngữ? Soạn, dịch và đăng ngay trên trình duyệt — Mokbi đẩy lên Google Play và chuẩn bị sẵn phiên bản App Store để bạn gửi.

fastlane xứng đáng với vị trí là lựa chọn miễn phí, tự động và đã có sẵn từ lâu. Lộ trình không-code không phải là "tốt hơn" — đó là một sự đánh đổi khác: bạn từ bỏ tự động hóa CI, và đổi lại không ai phải xây dựng hay chăm sóc một pipeline chỉ để cập nhật thông tin đăng.

Đọc thêm

Mở trình chỉnh sửa →