上一期我们聊了 flutter_launcher_icons_plus,一行命令搞定全平台启动图标。今天继续一个开发中超级高频的需求——改包名。
做过上架的同学都懂:新建 Flutter 项目默认包名是 com.example.app,但每个应用都有自己独一无二的包名。手动改 Android 的 build.gradle、manifest、还有 Java/Kotlin 源码目录结构……改了 iOS 又发现还要改 project.pbxproj……现在多了个鸿蒙,还得去翻 app.json5 😂
好消息是——change_app_package_name_plus v1.6.0 已经原生支持 OHOS 了!一条命令,Android、iOS、鸿蒙三个平台的包名全部搞定,Java/Kotlin 源码目录自动迁移,干干净净 🚀
痛点
新建 Flutter 项目后改包名有多痛苦?
Android 要改 build.gradle/build.gradle.kts的applicationId还要改三个 manifest 文件( main、debug、profile)的 package 声明Java/Kotlin 源码目录要从旧包路径移到新包路径,import 引用也要同步更新 改完后残留的空目录还得手动清理 iOS 要在 project.pbxproj里找到PRODUCT_BUNDLE_IDENTIFIER鸿蒙要在 ohos/AppScope/app.json5中修改bundleName多平台一起改,漏掉一个就等着上架被拒吧 💀
而社区经典的 change_app_package_name[1] 已经停在 v1.5.0,不支持鸿蒙。
现在,change_app_package_name_plus 就是你的包名管理利器 ✨
核心特性
✅ 一条命令修改 Android + iOS + OHOS 三个平台的包名 ✅ 原生支持 OHOS,自动写入 ohos/AppScope/app.json5的bundleName✅ Android 源码自动迁移:Java/Kotlin 文件从旧包路径移到新路径并更新 import ✅ 智能清理:迁移后自动清理旧包路径下的空目录 ✅ 平台独立执行:支持 --android、--ios、--ohos参数单独改名✅ 支持 Kotlin DSL: build.gradle.kts也能处理✅ 源码是纯 Dart,无需 JVM 或原生依赖,即装即用
快速上手
1. 添加依赖
在 pubspec.yaml 的 dev_dependencies 中添加:
dev_dependencies:
change_app_package_name_plus: ^1.6.0
或者直接用命令安装:
flutter pub add -d change_app_package_name_plus
2. 执行命令
flutter pub get
然后一条命令改所有平台的包名:
dart run change_app_package_name_plus:main com.yourcompany.yourapp
⚠️ 把
com.yourcompany.yourapp换成你自己的包名哦~
3. 按平台单独改名
只想改某个平台?支持平台参数灵活执行:
# 仅改 Android
dart run change_app_package_name_plus:main com.new.package.name --android
# 仅改 iOS
dart run change_app_package_name_plus:main com.new.package.name --ios
# 仅改 OHOS
dart run change_app_package_name_plus:main com.new.package.name --ohos
执行后看看终端输出,插件会告诉你旧的包名是什么、改了什么文件,一目了然 ✅
OHOS 修改效果
执行 dart run change_app_package_name_plus:main 后,插件会:
读取 ohos/AppScope/app.json5,解析出当前app.bundleName将 bundleName替换为新的包名写回 app.json5,保留其他字段不变
看一下修改前后的对比:
| 字段 | 修改前 | 修改后 |
|---|---|---|
ohos/AppScope/app.json5 → app.bundleName |
com.example.app |
com.yourcompany.yourapp |
插件非常「温柔」——只修改 bundleName 一个字段,app.json5 中的其他配置(如 vendor、version、apiVersion 等)全部原样保留。源码中定义了一个 extra 字段专门兜底未知属性,所以你自定义的配置也不会被意外删除 😌
环境要求
Dart SDK >= 2.12.0(兼容 Dart 3.x / 4.x) 已初始化的 Flutter 鸿蒙项目(支持 ohos/目录结构)无需额外原生依赖
这个插件真的是多平台开发的包名管理神器!一条命令搞定 Android + iOS + OHOS,再也不用逐个文件手动翻了~
仓库:https://github.com/star4277/change_app_package_name_plus[2]
另外,star4277 就是我们上一期 flutter_launcher_icons_plus 的同一位维护者,真·鸿蒙插件劳模 👍 觉得好用的话去给个 ⭐ Star 支持一下吧!
下期预告:你希望艾玛介绍哪个鸿蒙插件?留言告诉我呀~ 🦊
引用链接
[1]change_app_package_name: https://pub.dev/packages/change_app_package_name
[2]https://github.com/star4277/change_app_package_name_plus
夜雨聆风