Flutter for OpenHarmony: Flutter 三方库 package_rename 一键重命名鸿蒙应用包名与显示名称(项目重构利器)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net

前言

在 OpenHarmony 应用开发过程中,我们经常会遇到“项目改名”的需求。无论是项目初期的占位名需要转正,还是为了满足不同渠道(如:内测版、正式版)的发布要求,手动去修改 bundleName、应用标题、图标路径等零散在各处的配置,不仅效率低下,且极其容易漏掉某个角落导致编译失败。

package_rename 是一个强大的命令行工具,它通过一套统一的 YAML 配置,实现对 Flutter 多平台(包括鸿蒙端)项目标识符的一键替换。


一、核心重命名链路

package_rename 扮演了全局搜索替换的智能管家。

pubspec.yaml (配置新包名)

运行 package_rename 指令

替换 iOS/Android 标识 (可选)

替换 Web 标题

更新鸿蒙工程 module.json5/AppScope

生成正确的 HAP/APP 包


二、核心 API 实战

2.1 配置重命名规则

你不需要在代码中调用 API,只需在 pubspec.yaml 中添加配置块。

package_rename_config:# 💡 统一设置应用在桌面上显示的名称app_name:"鸿蒙新纪元"# 💡 设置各平台的标识符 (Package Name / Bundle ID / Bundle Name)# 虽然该库主要针对 android/ios,但通过配置可以同步管理android:package_name:"com.ohos.newapp"ios:bundle_name:"NewOhosApp"

2.2 执行重构指令

# 💡 运行后,它会扫描所有的平台配置并自动执行文件修改 dart run package_rename 
在这里插入图片描述

三、常见应用场景

3.1 模板项目快速“转正”

当你从一个已有的鸿蒙模板仓库克隆项目后,第一件事就是利用此工具快速更名为自己的业务包名。

在这里插入图片描述

3.2 区分多环境构建

在同一个源码库下,快速通过修改配置来产出包名不同的“开发版”和“生产版”应用,方便在一台鸿蒙手机上同时安装共存。


四、OpenHarmony 平台适配

4.1 自动修改鸿蒙核心配置文件

💡 技巧:在鸿蒙 Flutter 项目中,核心标识符存在于 ohos/AppScope/app.json5 中的 bundleName 以及 ohos/entry/src/main/module.json5 中。虽然 package_rename 目前主要直接覆盖 Android/iOS 目录,但其强大的插件机制支持我们通过一行脚本命令,在改名后自动联动修改鸿蒙的 Json 配置文件。

4.2 适配鸿蒙应用图标刷新

改名往往伴随着图标更换。配合 package_rename 的执行逻辑,可以确保应用在鸿蒙桌面上显示的“标签文字”与“包身份”完全匹配,避免出现“名字改了,包还是旧的”尴尬情况。


五、完整实战示例:鸿蒙品牌重塑自动化脚本

本示例演示如何配合此库,编写一个完整的“品牌更名”自动化脚本。

// 💡 模拟自动化执行逻辑import'dart:io';classOhosRebrandingTool{staticFuture<void>start()async{print('🚀 开始鸿蒙应用品牌重塑流程...');// 1. 运行 package_rename 替换各端显示名称final result =awaitProcess.run('dart',['run','package_rename']);if(result.exitCode ==0){print('✅ 基础显示名称已更新');}// 2. 自定义脚本补丁:联动修改鸿蒙 AppScope 中的 bundleNamefinal appJsonPath ='ohos/AppScope/app.json5';final file =File(appJsonPath);if(await file.exists()){String content =await file.readAsString();// 这里进行简单的 bundleName 模拟替换逻辑 content = content.replaceAll('com.old.name','com.harmony.newapp');await file.writeAsString(content);print('✅ 鸿蒙 bundleName 联动修改完成');}print('✨ 打包准备就绪:请运行 flutter build hap');}}voidmain()=>OhosRebrandingTool.start();
在这里插入图片描述

六、总结

package_rename 软件包是 OpenHarmony 开发者在项目迭代中的“后悔药”和“推进器”。它将繁琐、易错的全局修改任务转化为一个确定性的自动化动作。在追求项目整洁与标准化的鸿蒙研发体系中,学会利用这种脚手架工具进行项目治理,是保持开发节奏不被打乱的有效手段。

Read more

[特殊字符]2026 最新 C++ 学习路线图|从零基础到大厂 Offer|保姆级完整版(建议收藏)

简介:零基础学 C++ 最全路线,语法 + 进阶 + 高级 + 项目 + 面试一站式通关。 一、前言:为什么现在还要学 C++? 很多同学问我:Python、Java 这么火,还有必要学 C++ 吗? 答案非常肯定:必须学! C++ 是性能之王,是所有大厂后端、游戏、嵌入式、音视频、自动驾驶、数据库、中间件的核心语言。 1.1 C++ 就业方向 * 后端开发(字节、腾讯、阿里、百度、美团) * 游戏开发(Unity、Unreal、客户端、服务器) * 嵌入式 / 物联网 / 单片机 * 音视频、

By Ne0inhk
【C++】速通涉及 “vector” 的经典OJ编程题

【C++】速通涉及 “vector” 的经典OJ编程题

【C++】速通涉及 “vector” 的经典OJ编程题 * 一. 杨辉三角 * 解题思路: * 代码实现: * 二. 删除有序数组中的重复项 * 解题思路: * 代码实现: * 【C/C++】按位运算符使用规制 * 三. 只出现一次的数字 * 解题思路: * 代码实现: * 四. 只出现一次的数字 III * 解题思路: * 代码实现: 一. 杨辉三角 本题LeetCode链接: 解题思路: 利用vector的特性创建一个二维数组,通过观察得知杨辉三角的0行0列全为1,其他位置元素的值都等于其上一行同列元素与上一行前一列元素的和。 代码实现: classSolution{public: vector<vector<int>>generate(int numRows){ vector<vector<int>

By Ne0inhk
C++学习之旅【实战全面解析C++二叉搜索树】

C++学习之旅【实战全面解析C++二叉搜索树】

🔥承渊政道:个人主页 ❄️个人专栏: 《C语言基础语法知识》《数据结构与算法》 《C++知识内容》《Linux系统知识》 ✨逆境不吐心中苦,顺境不忘来时路!🎬 博主简介: 引言:前篇文章,小编已经介绍了关于C++中多态概念指南与核心内容介绍!相信大家应该有所收获!接下来我将带领大家继续深入学习C++的相关内容!本篇文章着重介绍关于实战全面解析C++二叉搜索树,那么这里面到底有哪些知识需要我们去学习的呢?废话不多说,带着这些疑问,下面跟着小编的节奏🎵一起学习吧! 目录 * 1.⼆叉搜索树的概念 * 2.⼆叉搜索树的性能分析 * 3.⼆叉搜索树的插⼊ * 4.⼆叉搜索树的查找 * 5.⼆叉搜索树的删除 * 6.⼆叉搜索树的实现代码 * 7.⼆叉搜索树key和key/value使⽤场景 * 7.1key搜索场景 * 7.2key/value搜索场景 * 7.3key/value⼆

By Ne0inhk
入门篇--Python篇-3-为什么做AI开发首选Python,而不是Java或C++?

入门篇--Python篇-3-为什么做AI开发首选Python,而不是Java或C++?

作者:Weisian AI探索者 · 软件工程师 · 写给每一个想入行AI的你 哈喽,各位技术小伙伴~ 最近后台好多刚入门AI的同学问我:“想做AI开发,先学Python、Java还是C++呢?” 其实答案很明确——90%的AI开发场景,Python都是首选。 但不是说Java和C++不好,而是这两种语言的优势场景,和AI开发的核心需求不太匹配。今天就从大家实际开发会遇到的问题出发,把这个问题讲透:为什么Python能成为AI开发的“万能钥匙”,而Java、C++更适合做“专项补充”? 一、先搞懂:AI开发的核心需求是什么? 不管是做算法研究、模型训练,还是落地一个简单的AI应用(比如图像识别、聊天机器人),核心需求就3个: 1. 快速迭代:AI是“试错型”开发,比如调模型参数、改算法逻辑,可能要试几十上百次,开发效率直接决定进度; 2. 少造轮子:AI涉及大量复杂计算(矩阵运算、

By Ne0inhk