乐于分享
好东西不私藏

鸿蒙Flutter插件精选:change_app_package_name_plus

鸿蒙Flutter插件精选:change_app_package_name_plus

上一期我们聊了 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.ktsapplicationId
  • 还要改三个 manifest 文件(maindebugprofile)的 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.json5bundleName
  • Android 源码自动迁移:Java/Kotlin 文件从旧包路径移到新路径并更新 import
  • 智能清理:迁移后自动清理旧包路径下的空目录
  • 平台独立执行:支持 --android--ios--ohos 参数单独改名
  • 支持 Kotlin DSLbuild.gradle.kts 也能处理
  • 源码是纯 Dart,无需 JVM 或原生依赖,即装即用

快速上手

1. 添加依赖

pubspec.yamldev_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 后,插件会:

  1. 读取 ohos/AppScope/app.json5,解析出当前 app.bundleName
  2. bundleName 替换为新的包名
  3. 写回 app.json5,保留其他字段不变

看一下修改前后的对比:

字段 修改前 修改后
ohos/AppScope/app.json5 → app.bundleName com.example.app com.yourcompany.yourapp

插件非常「温柔」——只修改 bundleName 一个字段,app.json5 中的其他配置(如 vendorversionapiVersion 等)全部原样保留。源码中定义了一个 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