这份记录从一个空白的 Flutter 项目开始,讲清楚三件事:

  • 代码写在哪、应用名字在哪改
  • 怎么让 Gradle 用本地的、不去网上重复下载
  • 怎么编译成 APK 装到手机上

示例项目名叫 demo_flutter_android。编译命令是:


flutter build apk --target-platform android-arm64

一、代码写在 lib 文件夹里

Flutter 的代码文件后缀是 .dart,全部放在项目的 lib 文件夹里。文件名随便起,比如 main.dart。

让应用名字变成中文

用记事本打开这个文件:


android/app/src/main/AndroidManifest.xml

找到这一行,把引号里的内容改成你想要的名字:


android:label="demo_flutter_android"

二、让 Gradle 用本地的,别重复下载

第一次编译时,Gradle 会去网上下载一大包东西,很慢,还经常断。

解决办法是提前把 Gradle 压缩包下到本地,然后告诉项目去本地取。

第 1 步,用记事本打开:


android/gradle/wrapper/gradle-wrapper.properties

第 2 步,找到 distributionUrl 那一行,改成指向本地文件,比如:


distributionUrl=file:///C:/gradle-8.14-all.zip

(路径按你自己放的位置改,注意用正斜杠 /。)

第 3 步,如果本地还没有 Gradle 压缩包,去腾讯云镜像下载:

<https://mirrors.cloud.tencent.com/gradle/>

进去选中你需要的版本下载就行。

三、常用编译命令

编译 APK(在项目目录下执行):


flutter build apk

如果希望生成按 CPU 架构拆分后的 APK(体积更小,但一个包只能装对应机型的手机):


flutter build apk --split-per-abi

编译完成后,APK 文件在这个位置:


build/app/outputs/flutter-apk/app-release.apk

直接安装到手机:


flutter install

四、写一个简单的例子

打开 lib 文件夹,把 main.dart 的内容换成下面这段,就是一个能跑的「点我弹窗」应用:


import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '弹窗 Demo',
      debugShowCheckedModeBanner: false,  // 加这行,关掉右上角的调试标签
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  // 弹出信息框
  void _showMessage(BuildContext context) {
    showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: const Text('提示'),
          content: const Text('你好,世界!'),
          actions: [
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: const Text('确定'),
            ),
          ],
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('弹窗 Demo'),
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () => _showMessage(context),
          child: const Text('点我弹窗'),
        ),
      ),
    );
  }
}

改完存盘,回到项目目录执行 flutter build apk,就能装到手机上看效果了。