Flutter 应用配置实战:修改包名、应用名与图标
手把手讲解 Flutter 项目中修改包名、应用名称、应用图标与启动页的方法,分别覆盖 Android 与 iOS 两端的文件改动与注意事项。
用 flutter create 创建项目后,包名、应用名、图标这些”门面”信息往往还需要按真实需求调整。这些配置分散在 Android 与 iOS 各自的原生工程里,本文按”包名 → 应用名 → 图标 → 启动页”的顺序,逐项说明两端需要改动的文件。
提醒:包名最好在项目立项时就确定下来。中途修改包名会牵连到原生目录结构、签名、第三方 SDK 注册等多个环节,容易出问题,非必要不建议改。
一、修改包名 / Bundle ID
Android
包名涉及三处,必须保持一致:
android/app/src/main/AndroidManifest.xml:修改package="xxx.xxx.xxx"。android/app/build.gradle:修改defaultConfig中的applicationId "xxx.xxx.xxx"。android/app/src/main/下的源码目录:MainActivity.java(或MainActivity.kt)所在的包路径需要随之调整,并同步文件顶部的package声明。
iOS
在 ios/Runner/Info.plist 中修改 CFBundleIdentifier 对应的值;也可以直接在 Xcode 的 Runner target → General → Bundle Identifier 里修改。
二、修改应用名称
Android
编辑 android/app/src/main/AndroidManifest.xml,在 <application> 节点修改:
<application
android:label="你的应用名称"
... >
iOS
在 ios/Runner/Info.plist 中修改 CFBundleName(以及需要本地化展示名时的 CFBundleDisplayName)对应的字符串值。
三、修改应用图标
Android
Android 按屏幕密度分目录存放不同尺寸的图标,需要替换 android/app/src/main/res/ 下各 mipmap-* 目录中的 ic_launcher.png:
| 目录 | 尺寸 |
|---|---|
mipmap-mdpi | 48 × 48 |
mipmap-hdpi | 72 × 72 |
mipmap-xhdpi | 96 × 96 |
mipmap-xxhdpi | 144 × 144 |
mipmap-xxxhdpi | 192 × 192 |
替换完成后,确认 AndroidManifest.xml 中 <application> 的 android:icon 指向 @mipmap/ic_launcher。
iOS
替换 ios/Runner/Assets.xcassets/AppIcon.appiconset/ 下对应尺寸的图片。如果使用了不同的文件名,需要同步更新该目录中的 Contents.json,让图标尺寸与文件名的映射关系保持一致。
用插件批量生成(推荐)
逐个尺寸手动切图很繁琐,推荐使用 flutter_launcher_icons 插件,只需准备一张高分辨率原图即可一键生成全平台图标。
在 pubspec.yaml 中添加配置:
dev_dependencies:
flutter_launcher_icons: ^0.13.1
flutter_launcher_icons:
android: "ic_launcher"
ios: true
image_path: "assets/icon/app_icon.png"
然后执行:
flutter pub get
dart run flutter_launcher_icons
四、修改启动页
Android
编辑 android/app/src/main/res/drawable/launch_background.xml,可以自定义背景色与启动图片的显示方式。
iOS
在 ios/Runner/Assets.xcassets/LaunchImage.imageset/ 下替换启动图片,并在 Contents.json 中配置 1x、2x、3x 三种分辨率的映射。
用插件统一配置(推荐)
同样地,启动页推荐使用 flutter_native_splash 插件统一管理。在 pubspec.yaml 中:
dev_dependencies:
flutter_native_splash: ^2.3.10
flutter_native_splash:
color: "#ffffff"
image: assets/splash/splash_logo.png
android: true
ios: true
执行命令生成:
flutter pub get
dart run flutter_native_splash:create
小结
| 配置项 | Android | iOS |
|---|---|---|
| 包名 / Bundle ID | AndroidManifest.xml + build.gradle + 源码包路径 | Info.plist 的 CFBundleIdentifier |
| 应用名称 | AndroidManifest.xml 的 android:label | Info.plist 的 CFBundleName |
| 应用图标 | res/mipmap-*/ic_launcher.png | Assets.xcassets/AppIcon.appiconset |
| 启动页 | res/drawable/launch_background.xml | Assets.xcassets/LaunchImage.imageset |
手动修改适合理解每端的文件结构,而图标与启动页更推荐用 flutter_launcher_icons 和 flutter_native_splash 插件批量生成,省时且不易出错。包名则尽量在项目初期通过 flutter create --org 一次定好。