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.
- 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
- 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 testTên, biểu tượng, màn hình chờ
- Tên hiển thị: Android sửa
android:labeltrong 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ạydart 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 PlayCấ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, VercelDù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.
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.
- Viết 3 unit test cho lớp giỏ hàng và 1 widget test cho màn hình đăng nhập.
- Đổi biểu tượng và tên ứng dụng ghi chú ở Bài 11.
- Build APK release và cài lên điện thoại thật.
- Build bản web và đưa lên GitHub Pages.
- 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.