
1. 项目概述Flutter应用重命名的核心需求当你完成一个Flutter应用的开发后突然发现应用名称不符合品牌定位需要修改或者客户要求更换显示名称时重命名操作就成为了必经之路。与原生Android/iOS开发不同Flutter作为跨平台框架其重命名流程涉及多端配置文件的联动修改稍有不慎就会导致应用图标丢失、启动名称不一致等水土不服的症状。最近接手的一个电商应用改造项目就遇到了这种情况——原应用名为ShopQuick需要更名为GlobalMart以匹配新的品牌战略。经过实战踩坑我总结出一套完整的Flutter应用重命名方案涵盖Android、iOS双端配置以及常被忽略的macOS/Windows桌面端处理技巧。2. 多平台配置修改详解2.1 Android端配置改造Android端的应用名称主要存储在以下三个关键位置AndroidManifest.xml路径android/app/src/main/AndroidManifest.xml修改android:label属性值示例application android:nameio.flutter.app.FlutterApplication android:labelGlobalMart !-- 修改此处 -- android:iconmipmap/ic_launcherstrings.xml推荐方案路径android/app/src/main/res/values/strings.xml最佳实践是使用字符串资源引用resources string nameapp_nameGlobalMart/string /resources然后在AndroidManifest.xml中引用android:labelstring/app_namebuild.gradle中的应用ID路径android/app/build.gradle如需修改包名非必须defaultConfig { applicationId com.example.globalmart // 修改后需同步改目录结构 minSdkVersion 21 targetSdkVersion 33 }避坑提示修改applicationId会导致应用被视为新应用原有用户的升级路径会中断。非必要情况下建议保留原ID。2.2 iOS端配置调整iOS端的重命名涉及更多文件需要特别注意Xcode的特定配置Info.plist文件路径ios/Runner/Info.plist修改CFBundleDisplayNamekeyCFBundleDisplayName/key stringGlobalMart/stringXcode工程配置可视化修改执行open ios/Runner.xcworkspace在Xcode中点击Runner项目选择Runner target在General → Display Name处修改Scheme名称可选在Xcode菜单栏 Product → Scheme → Manage Schemes → 双击重命名文件夹结构同步重命名项目目录mv ios/Runner ios/GlobalMart然后修改podfile中的路径配置target GlobalMart do # 与原Runner对应 flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end2.3 桌面端特别处理对于Windows/macOS桌面应用需要额外配置Windows (flutter_win_plugins):修改windows/runner/Runner.rc中的APP_NAME更新windows/CMakeLists.txt中的PROJECT_NAMEmacOS:修改macos/Runner/Info.plist中的CFBundleName在Xcode中同步修改Product NameBuild Settings搜索3. 全自动化重命名方案对于需要频繁修改名称的开发场景如多品牌发布推荐使用以下自动化工具3.1 使用rename插件添加依赖dev_dependencies: rename: ^2.0.0执行命令示例flutter pub run rename --bundleId com.yourcompany.globalmart flutter pub run rename --appname GlobalMart3.2 自定义shell脚本创建rename_app.sh#!/bin/bash NEW_NAMEGlobalMart NEW_BUNDLE_IDcom.example.globalmart # Android sed -i s/old_app_name/$NEW_NAME/g android/app/src/main/AndroidManifest.xml sed -i s/com.example.oldid/$NEW_BUNDLE_ID/g android/app/build.gradle # iOS plutil -replace CFBundleDisplayName -string $NEW_NAME ios/Runner/Info.plist plutil -replace CFBundleIdentifier -string $NEW_BUNDLE_ID ios/Runner/Info.plist # Flutter sed -i s/name: .*/name: $NEW_NAME/g pubspec.yaml4. 深度避坑指南4.1 图标资源同步更新重命名后常见问题应用图标显示为默认Flutter图标。这是因为图标文件引用未更新Android检查android/app/src/main/res/mipmap-*/ic_launcher.png更新AndroidManifest.xml中的icon路径iOS替换ios/Runner/Assets.xcassets/AppIcon.appiconset内所有图片确认Contents.json文件配置正确4.2 多语言环境处理当应用支持多语言时需在各语言资源文件中更新应用名Android的values-xx/strings.xmliOS的xx.lproj/InfoPlist.stringsFlutter的arb文件如果使用intl包4.3 第三方服务配置以下服务需要同步更新应用名称Firebase项目配置应用商店后台Apple Connect/Google Play Console社交登录配置Facebook/Google开发者后台深度链接关联域名5. 版本控制策略大规模重命名会导致git识别为文件删除/新增。推荐操作流程创建新分支git checkout -b feature/rename-app分步骤提交# 先提交配置修改 git add android/app/build.gradle git commit -m chore: update app bundleId # 再提交资源变更 git add ios/Runner/Info.plist git commit -m chore: update iOS display name使用git mv处理目录重命名git mv ios/Runner ios/GlobalMart经过完整测试后我在实际项目中验证这套方案可以确保应用名称在各平台显示一致通知栏、桌面快捷方式等系统集成点正常应用商店更新流程不受影响深度链接和第三方服务持续可用