Bài 12. Kiểm thử, build và phát hành ứng dụng

Bài cuối hướng dẫn đưa ứng dụng đến người dùng: kiểm thử, đổi tên và biểu tượng, build APK/AAB, ký ứng dụng, phát hành lên Google Play, App Store và web.

60 phútTrung cấp
Bạn sẽ học được
  • Viết unit test và widget test
  • Đổi tên, biểu tượng, màn hình chờ
  • Build APK, AAB, iOS, web
  • Hiểu quy trình phát hành lên cửa hàng
Thuật ngữ cần biết
Unit test
Kiểm thử một hàm/lớp độc lập.
Widget test
Kiểm thử giao diện ở mức widget, không cần thiết bị.
AAB
Android App Bundle, định dạng bắt buộc khi đưa lên Google Play.
Keystore
Tệp chứa khóa ký ứng dụng Android.

Khái niệm và lý thuyết

Kiểm thử Flutter có ba tầng: unit (nhanh, nhiều), widget (kiểm tra giao diện phản ứng đúng), integration (chạy toàn ứng dụng trên thiết bị, ít nhưng quan trọng). Logic được tách khỏi giao diện (Bài 10) sẽ dễ viết unit test.

Khi phát hành, Flutter biên dịch AOT ra mã máy, thu gọn kích thước (tree shaking). Mỗi bản phát hành cần tăng version trong pubspec.yaml theo dạng 1.2.0+5 (tên phiên bản + số build).

Kiểm thử

// test/gio_hang_test.dart
import 'package:flutter_test/flutter_test.dart';
void main() {
  test('thêm sản phẩm', () {
    final g = GioHang()..them('Sách');
    expect(g.ds.length, 1);
  });
  testWidgets('bấm + tăng bộ đếm', (tester) async {
    await tester.pumpWidget(const MaterialApp(home: Scaffold(body: BoDem())));
    await tester.tap(find.byIcon(Icons.add));
    await tester.pump();
    expect(find.text('1'), findsOneWidget);
  });
}
flutter test

Tên, biểu tượng, màn hình chờ

  • Tên hiển thị: Android sửa android:label trong AndroidManifest.xml; iOS sửa CFBundleDisplayName trong Info.plist.
  • Biểu tượng: dùng gói flutter_launcher_icons, đặt ảnh 1024×1024 rồi chạy dart run flutter_launcher_icons.
  • Màn hình chờ: gói flutter_native_splash.
  • Mã định danh ứng dụng (applicationId) như net.tuhoctin.app, đặt khi tạo dự án bằng --org net.tuhoctin.

Build Android

keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
flutter build apk --release        # cài trực tiếp, chia sẻ thử
flutter build appbundle --release  # nộp Google Play

Cấu hình ký trong android/key.properties và build.gradle.kts theo tài liệu docs.flutter.dev/deployment/android. Tài khoản Google Play Console phí một lần 25 USD; tài khoản cá nhân mới phải thử nghiệm kín với người kiểm tra trước khi phát hành công khai.

iOS và web

flutter build ipa     # cần máy Mac + Xcode, tài khoản Apple Developer
flutter build web     # thư mục build/web, đưa lên Firebase Hosting, GitHub Pages, Vercel
Mẹo hay

Dùng flutter build apk --split-per-abi để tạo các APK nhỏ hơn cho từng loại chip khi chia sẻ thử nghiệm.

Lưu ý

Mất tệp keystore hoặc mật khẩu đồng nghĩa không cập nhật được ứng dụng (trừ khi dùng Play App Signing). Sao lưu keystore cẩn thận và không đưa lên GitHub.

Thực hành
  1. Viết 3 unit test cho lớp giỏ hàng và 1 widget test cho màn hình đăng nhập.
  2. Đổi biểu tượng và tên ứng dụng ghi chú ở Bài 11.
  3. Build APK release và cài lên điện thoại thật.
  4. Build bản web và đưa lên GitHub Pages.
Tóm tắt bài học
  • Kiểm thử unit, widget, integration.
  • Chuẩn bị tên, biểu tượng, phiên bản trước khi build.
  • APK để thử, AAB để lên Google Play; iOS cần Mac.
  • Bảo quản keystore cẩn thận.