跳到主要内容

第14章:发布与部署

简要说明

在本章中,我们将学习如何将Flutter应用打包并发布到应用商店。我们将涵盖生成发布版本、配置应用签名以及发布到Google Play和App Store的详细步骤。此外,我们还将通过一个完整的项目,综合运用前面所学的知识,构建一个简易的任务管理应用。

关键知识点

生成发布版本(APK、IPA)

Android APK

  1. 配置build.gradle文件

    • 打开android/app/build.gradle文件,确保buildTypes中的release配置正确。
    buildTypes {
    release {
    signingConfig signingConfigs.release
    minifyEnabled true
    shrinkResources true
    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    }
  2. 生成签名密钥

    • 使用keytool生成签名密钥。
    keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
  3. 配置签名

    • android/app/build.gradle中配置签名。
    signingConfigs {
    release {
    keyAlias 'key'
    keyPassword 'your_key_password'
    storeFile file('~/key.jks')
    storePassword 'your_store_password'
    }
    }
  4. 生成APK

    • 运行以下命令生成APK。
    flutter build apk --release

iOS IPA

  1. 配置Xcode项目

    • 打开ios/Runner.xcworkspace,配置Signing & Capabilities
  2. 生成IPA

    • 在Xcode中选择Product > Archive,然后导出IPA文件。

配置应用签名

Android

  • 如上所述,在build.gradle中配置签名。

iOS

  • 在Xcode中配置Signing & Capabilities,确保使用正确的开发者账号和证书。

发布到Google Play和App Store

Google Play

  1. 创建开发者账号

    • 注册Google Play开发者账号并支付一次性费用。
  2. 上传APK

    • 登录Google Play Console,创建新应用并上传APK。
  3. 填写应用信息

    • 填写应用描述、截图、图标等信息。
  4. 发布应用

    • 提交应用审核,审核通过后即可发布。

App Store

  1. 创建开发者账号

    • 注册Apple Developer账号并支付年费。
  2. 上传IPA

    • 使用Xcode或Transporter上传IPA到App Store Connect。
  3. 填写应用信息

    • 填写应用描述、截图、图标等信息。
  4. 提交审核

    • 提交应用审核,审核通过后即可发布。

项目:简易任务管理应用

项目需求分析与设计

  • 需求
    • 用户可以查看任务列表。
    • 用户可以添加新任务。
    • 用户可以删除任务。
    • 使用状态管理(如Provider)管理应用状态。

实现任务列表、添加任务、删除任务等功能

  1. 创建任务模型

    class Task {
    String title;
    bool isCompleted;

    Task({required this.title, this.isCompleted = false});
    }
  2. 使用Provider管理状态

    class TaskProvider with ChangeNotifier {
    List<Task> _tasks = [];

    List<Task> get tasks => _tasks;

    void addTask(String title) {
    _tasks.add(Task(title: title));
    notifyListeners();
    }

    void removeTask(int index) {
    _tasks.removeAt(index);
    notifyListeners();
    }
    }
  3. 实现任务列表UI

    class TaskList extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    return Consumer<TaskProvider>(
    builder: (context, taskProvider, child) {
    return ListView.builder(
    itemCount: taskProvider.tasks.length,
    itemBuilder: (context, index) {
    final task = taskProvider.tasks[index];
    return ListTile(
    title: Text(task.title),
    trailing: IconButton(
    icon: Icon(Icons.delete),
    onPressed: () => taskProvider.removeTask(index),
    ),
    );
    },
    );
    },
    );
    }
    }
  4. 实现添加任务UI

    class AddTaskScreen extends StatelessWidget {
    final TextEditingController _controller = TextEditingController();

    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(
    title: Text('Add Task'),
    ),
    body: Padding(
    padding: const EdgeInsets.all(16.0),
    child: Column(
    children: [
    TextField(
    controller: _controller,
    decoration: InputDecoration(labelText: 'Task Title'),
    ),
    SizedBox(height: 20),
    ElevatedButton(
    onPressed: () {
    if (_controller.text.isNotEmpty) {
    Provider.of<TaskProvider>(context, listen: false).addTask(_controller.text);
    Navigator.pop(context);
    }
    },
    child: Text('Add Task'),
    ),
    ],
    ),
    ),
    );
    }
    }

部署与测试

  1. 测试应用

    • 在模拟器或真机上测试应用功能。
  2. 打包发布

    • 按照前面的步骤生成APK或IPA,并发布到Google Play或App Store。

参考资源

推荐书籍

  • 《Flutter实战》
  • 《Dart编程语言入门》

通过本章的学习,你应该能够将Flutter应用打包并发布到应用商店,同时通过一个完整的项目综合运用前面所学的知识。希望你能通过实践进一步巩固所学内容。