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

从小项目到大型鸿蒙 App 的架构变化

从小项目到大型鸿蒙 App 的架构变化

子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名) 大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。 我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案, 在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。 技术方向:前端 / 跨端 / 小程序 / 移动端工程化 内容平台:掘金、知乎、ZEEKLOG、简书 创作特点:实战导向、源码拆解、少空谈多落地 文章状态:长期稳定更新,大量原创输出 我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、

By Ne0inhk

Flutter for OpenHarmony: Flutter 三方库 plugin_platform_interface 规范鸿蒙插件跨端接口契约(插件开发标准指南)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行 OpenHarmony 插件开发时,一个核心挑战是如何确保你的插件在 Android、iOS 和鸿蒙等多端表现一致。为了保证扩展的可测试性和规范性,Flutter 团队提出了一套“基于接口”的插件架构规范。 plugin_platform_interface 正是实现这一架构的官方基石。它通过强行校验开发者是否继承了特定的基类,确保任何三方开发者(或你自己在进行鸿蒙适配时)在模拟或重写平台库时,都能遵循严格的协议契约,防止因漏写方法而导致的运行时崩溃。 一、标准分层插件架构 该库致力于定义中间的“平台接口层(Platform Interface)”。 注册实现 注册实现 通过校验器 Flutter App 插件 API (面向用户) Platform Interface (定义契约) 鸿蒙特定实现 (ArkTS 交互) Android 特定实现

By Ne0inhk
手搓简易 Linux 进程池:从 0 到 1 实现基于管道的任务分发系统

手搓简易 Linux 进程池:从 0 到 1 实现基于管道的任务分发系统

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 核心设计思路 * 二. 代码模块拆解 * 2.1 任务定义与随机任务生成 * 2.2 子进程任务处理逻辑 * 2.3 通道(Channel)类:封装父子进程通信 * 2.4 进程池(ProcesspPool)类:核心管理逻辑 * 2.5 主函数:进程池使用示例 * 三. 关键知识点解析 * 3.1 管道通信原理 * 3.2 轮询负载均衡 * 3.3 进程回收的坑

By Ne0inhk
Linux匿名管道通信:原理深挖+代码实现,一篇吃透进程间数据流转

Linux匿名管道通信:原理深挖+代码实现,一篇吃透进程间数据流转

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 🌟心向往之行必能至 🎥Cx330🌸的简介: 目录 前言: 一. 进程间通信介绍 1.1 进程间通信目的 1.2 进程间通信的发展与分类 二、先搞懂:什么是管道?匿名管道有何特殊性? 2.1 管道的本质 2.2 管道的核心特性 三、匿名管道的创建 3.1 匿名管道的创建流程 3.2 匿名管道的使用示例 四. 核心深挖:匿名管道的底层原理 4.1 fork

By Ne0inhk