鸿蒙版Taro 搭建开发环境
鸿蒙版Taro 搭建开发环境
一、配置鸿蒙环境
下载安装 DevEco
建议使用最新版本的 IDE,当前为 5.0.5Release 版本。
二、创建鸿蒙项目
打开 DevEco,点击右上角的 Create Project
,在 Application
处选择 Empty Ability
,点击 Next
,进入配置页面,根据需求调整内容,这里使用默认配置:
-
Project name:
tarooh
-
Bundle name:
com.nutpi.taro
-
Save location:选择需要创建的目录,例如
~/test/tarooh
-
Module name:
entry
注意,当前 Taro 支持的 SDK 版本为 4.1.1。
点击 Finish
完成项目创建。
三、安装 Taro 4.1
npm install -g @tarojs/cli
安装成功后,检查 taro
是否生效:
taro --version
预期输出:
👽 Taro v4.1.1 4.1.1
初始化项目
taro init taro-ohos
按照提示输入以下配置:
注意:当前仅支持使用 Vite 编译鸿蒙应用,所以在配置时请注意选择。
? 请输入项目介绍 taro ohos ? 请选择框架 React ? 是否需要使用 TypeScript?Yes ? 请选择 CSS 预处理器(Sass/Less/Stylus)Sass ? 请选择包管理工具 yarn ? 请选择编译工具 Vite ? 请选择模板源 Gitee(最快) ✔ 拉取远程模板仓库成功! ? 请选择模板 默认模板
等待项目创建成功,直到输出以下提示:
Done in 44.95s. ✔ 安装项目依赖成功 创建项目 taro-ohos 成功! 请进入项目目录 taro-ohos 开始工作吧!😝
四、安装鸿蒙插件
cd taro-ohos
然后使用 npm 安装:
npm i @tarojs/plugin-platform-harmony-cpp
或者使用 pnpm 安装:
pnpm i @tarojs/plugin-platform-harmony-cpp
五、修改编译配置
找到 config/index.ts
文件,在 plugin
处添加 @tarojs/plugin-platform-harmony-cpp
,并在 rn
下方添加 harmony 配置:
import os from 'os' import path from 'path' const config = {// ...plugins: [['@tarojs/plugin-platform-harmony-cpp', { }]],harmony: {// compiler: 'vite',projectPath: path.join(os.homedir(), '/Desktop/test/tarooh'),hapName: 'entry',},// ... }
注意:将 projectPath
设置为 DevEco 创建的鸿蒙项目目录。
六、编译鸿蒙应用
# 编译鸿蒙应用 taro build --type harmony_cpp # 编译鸿蒙原生组件 taro build native-components --type harmony_cpp
如果需要同时编译鸿蒙应用和原生组件,可以在页面配置中添加 entryOption: false
表示该页面是组件,并通过 componentName
指定组件导出名:
export default {navigationBarTitleText: 'Hello World', + componentName: 'MyComponent', + entryOption: false, }
Taro 会将编译好的文件输出至鸿蒙项目目录。
七、运行鸿蒙应用
1.配置应用签名
打开 File
-> Project Structure...
,点击 Signing Configs
,点击 Sign In
,登录华为账号,点击右下角 Apply
,然后点击 OK
,完成签名配置。
{"name": "entry","version": "1.0.0","description": "Please describe the basic information.","main": "","author": "","license": "","dependencies": {"@taro-oh/library": "file:../static/@taro-oh/library-4.1.1.har"},"devDependencies": {} }
2.运行应用
在 DevEco 中,点击运行按钮。
八、常见问题解答(FAQ)
1.不存在编译平台 ${platform}
若运行 Taro 时出现 throw new Error('不存在编译平台 ${platform}')
错误,可能是因为 config/index.ts
文件中未添加 @tarojs/plugin-platform-harmony-cpp
插件。
2.EPERM: operation not permitted
遇到权限问题时,可执行以下命令:
mkdir -p ~/.npm-global/lib/node_modules npm config set prefix '~/.npm-global' npm install -g @tarojs/cli
九、参考资料
-
鸿蒙 & OpenHarmony | Taro 文档
-
Taro 项目仓库
-
Taro 官方文档
-
Taro UI 项目仓库
-
Taro UI 官方文档
-
plugin-platform-harmony-cpp
-
taro-oh
十、Taro 仓库概览
以下是 Taro 的主要 NPM 包及其功能:
路径 | 描述 |
---|---|
@tarojs/cli | CLI 工具 |
@tarojs/service | 插件化内核 |
@tarojs/taro-loader | Webpack loaders |
@tarojs/helper | 工具库,主要供 CLI、编译时使用 |
@tarojs/runner-utils | 工具库,主要供小程序、H5 的编译工具使用 |
@tarojs/shared | 工具库,主要供运行时使用 |
@tarojs/taro | 暴露各端所需要的 Taro 对象 |
@tarojs/api | 和各端相关的 Taro API |
babel-preset-taro | Babel preset |
eslint-config-taro | ESLint 规则 |
postcss-pxtransform | PostCSS 插件,转换 px 为各端的自适应尺寸单位 |
postcss-html-transform | PostCSS 插件,用于 HTML、小程序标签的类名相互转换 |
相关文章:
鸿蒙版Taro 搭建开发环境
鸿蒙版Taro 搭建开发环境 一、配置鸿蒙环境 下载安装 DevEco 建议使用最新版本的 IDE,当前为 5.0.5Release 版本。 二、创建鸿蒙项目 打开 DevEco,点击右上角的 Create Project,在 Application 处选择 Empty Ability,点击 Ne…...
论对生产力决定生产关系的批判:突破决定论的桎梏
笔言: 在学生时代认为"生产力决定生产关系"很有道理,但是进入社会参与市场竞争时候,才发现这种想法太天真了,当生产力一只赔钱时候谁也不会感兴趣;当生产力产生利润,比如1%30%,100%,3…...
ESOP交易系统搭建全景指南:从合规基石到价值跃迁
第一章 重新定义ESOP:合规性与流动性的平衡艺术 1.1 ESOP的本质演进 传统认知误区:员工持股计划股权分配工具 现代定义: ESOP是企业资本运作的中枢神经系统,贯穿“激励授予→行权管理→减持流通→市值协同”全链条,需…...
GICv3电源管理
在符合GICv3体系结构的实现中,CPU接口和PE必须位于相同的电源域,但这不必与关联的Redistributor所在的电源域相同。 这意味着可能会出现PE及其CPU interface断电,而Redistributor、Distributor和its上电的情况。在这种情况下,GIC架…...

《TCP/IP 详解 卷1:协议》第3章:链路层
以太网和IEEE802局域网/城域网标准 IEEE802局域网/城域网标准 IEEE 802 是一组由 IEEE(电气与电子工程师协会)定义的局域网和城域网通信标准系列,涵盖了从物理层到链路层的多个网络技术。其中: IEEE 802.3 定义的是传统的以太网…...
centos 9/ubuntu 一次性的定时关机
方法一 # 15 表示15分钟以后自动关机 sudo shutdown -h 15方法二: sudo dnf install at -y # 晚上十点半关机 echo "shutdown -h now" | at 22:30 # 检查是否设置成功命令 atq [rootdemo-192 ~]# atq 1 Wed Jun 4 11:12:00 2025 a root # 取消定时计划…...

Elasticsearch从安装到实战、kibana安装以及自定义IK分词器/集成整合SpringBoot详细的教程(二)
package com.test.xulk.es.entity.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.test.xulk.es.entity.Hotel;public interface HotelMapper extends BaseMapper<Hotel> { }集成Springboot 项目里面 官方地址: Elasticsearch …...
Java自动类型转换的妙用
Java中的自动类型转换(也称为隐式类型转换)是指在不需要显式指定转换的情况下,Java编译器自动将一种数据类型转换为另一种数据类型。这种特性在编程中有许多妙用,以下是一些常见的应用场景和优点: 1. 简化代码 自动类…...

数据库管理-第333期 Oracle 23ai:RAC打补丁完全不用停机(20250604)
数据库管理333期 2025-06-04 数据库管理-第333期 Oracle 23ai:RAC打补丁完全不用停机(20250604)1 概念2 要求3 操作流程4 转移失败处理总结 数据库管理-第333期 Oracle 23ai:RAC打补丁完全不用停机(20250604࿰…...

【DAY39】图像数据与显存
内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点: 图像数据的格式:灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 作业:今日代码较少࿰…...

AI代码库问答引擎Folda-Scan
简介 什么是 Folda-Scan ? Folda-Scan 是一款革命性的智能项目问答工具, 完全在浏览器中本地运行 。它使用高级语义矢量化将您的代码库转变为对话伙伴,使代码理解和 AI 协作变得前所未有的简单和安全。其采用尖端的 Web 技术和 AI 算法构建&…...

Kafka深度技术解析:架构、原理与最佳实践
一、 消息队列的本质价值与核心特性 1.1 分布式系统的“解耦器” 异步通信模型 代码列表 graph LRA[生产者] -->|异步推送| B[(消息队列)]B -->|按需拉取| C[消费者1]B -->|按需拉取| D[消费者2] 生产者发送后立即返回,消费者以自己的节奏处理消息。典…...

基于cnn的通用图像分类项目
背景 项目上需要做一个图像分类的工程。本人希望这么一个工程可以帮助学习ai的新同学快速把代码跑起来,快速将自己的数据集投入到实战中! 代码仓库地址:imageClassifier: 图片分类器 数据处理 自己准备的分类图像,按照文件夹分…...
Kotlin-协程
文章目录 什么是协程协程的好处协程的挂起和恢复协程原理 什么是协程 协程是一种用户态的轻量级程序组件,其核心特点是通过协作式调度实现单线程内的伪并发。 协程的好处 传统的线程切换通过回调,Handler各种调度,繁琐,代码不清…...
pycharm 左右箭头 最近编辑
目录 经典界面: 快捷键 经典界面: 如果你使用的是新 UI(新版 PyCharm 默认启用的),导航按钮可能被精简了,你可以: File Settings(齿轮图标)→ UI Appearance 或 New …...

Linux环境管道通信介绍
目录 前言 一、通信的本质 二、匿名管道 1.通信资源——文件缓冲区 2.为什么叫匿名管道? 编辑 3.匿名管道的创建过程 4.pipe函数 小结 5.一些问题 1)匿名管道为什么要求父子进程将原本的读/写权限只保留一个 2)为什么一开始父进程要以读/写…...

DIC技术助力金属管材全场应变测量:高效解决方案
在石油管道、汽车排气系统、航空航天液压管路等工业场景中,金属管作为关键承力部件,其拉伸性能(如弹性极限、颈缩行为、断裂韧性)直接影响结构安全性和使用寿命。 实际应用中,选用合适的管材非常重要,通过…...
python基础day04
1.两大编程思想的异同点: 面向过程面向对象区别事物比较简单,可以用线性的思维去解决事物比较复杂,使用简单的线性思维无法解决共同点面向过程和面向对象都是解决实际问题的一种思维方式二者相辅相成,并不是对立的解决复杂问题,通…...

嵌入式学习--江协stm32day1
失踪人口回归了,stm32的学习比起51要慢一些,因为涉及插线,可能存在漏插,不牢固等问题。 相对于51直接对寄存器的设置,stm32因为是32位修改起来比较麻烦,江协课程是基于标准库的,是对封装函数进…...

湖北理元理律师事务所:债务化解中的心理重建与法律护航
专业法律顾问视角 一、债务危机的双重属性:法律问题与心理困境 在对173名债务人的调研中发现: 68%存在焦虑引发的决策障碍(如不敢接听银行电话) 42%因羞耻感隐瞒债务导致雪球效应 湖北理元理律师事务所创新采用法律-心理双轨…...
constexpr 是 C++11 引入的关键字
constexpr 是 C11 引入的关键字,用于在编译期进行常量表达式计算,从而提高程序性能和安全性。以下是其核心作用和用法: 一.作用 1编译期 计算 constexpr 变量或函数的值在编译时确定,避免运行时计算开销。例如,数组大…...

【更新中】(文档+代码)基于推荐算法和Springboot+Vue的购物商城
概要设计 本节规划和定义了Woodnet桌游电商平台的软件概要设计说明书,描述了软件的总体设计、接口设计、运行设计、系统数据库结构设计以及系统出错处理设计,从整体上说明了系统设计的结构层次、处理流程、系统用例等。 本系统是一个独立的系统&#x…...

六种高阶微分方程的特解(原创:daode3056)
高阶微分方程的通解是指包含所有可能解的解的表达式。对于一个 n 阶微分方程,其通解通常包含 n 个任意常数。这些任意常数可以通过初始条件或边界条件来确定。高阶微分方程的特解是指在通解中,特定地选择了一组常数,使得解满足给定的初始条件…...

【C++11(上)】—— 我与C++的不解之缘(三十)
一、C11 这里简单了解一下C发展好吧: C11是C的第二个大版本,也是自C98以来最重要的一个版本。 它引入了大量的更改,它曾被人们称为C0x,因为它被期待在2010年之前发布;但在2011年8月12日才被采纳。 C03到C11花了8年时间…...

【多线程初阶】wait() notify()
文章目录 协调多个线程间的执行顺序join 和 wait 区别sleep 和 wait 区别 wait()方法线程饿死调用 wait()唤醒 wait() notify()方法wait() 和 notify() 需对同一对象使用确保先 wait ,后 notify多个线程在同一对象上wait notify随机唤醒一个wait notifyAll()方法应用 wait() 和…...

安全-JAVA开发-第二天
Web资源访问的流程 由此可见 客户访问JAVA开发的应用时 会先通过 监听器(Listener)和 过滤器(Filter) 今天简单的了解下这两个模块的开发过程 监听器(Listener) 主要是监听 我们触发了什么行为 并进行反应…...

Python基础:文件简单操作
🍃引言 手把手带你快速上手Python Python基础专栏 一、🍃文件是什么 变量是把数据保存到内存中. 如果程序重启/主机重启, 内存中的数据就会丢失。 要想能让数据被持久化存储, 就可以把数据存储到硬盘中. 也就是在文件中保存。 通过文件的后缀名, 可以看…...

深度学习项目之RT-DETR训练自己数据集
RT-DETR 1.模型介绍📌 什么是 RT-DETR ?📖 核心改进点📊 结构示意🎯 RT-DETR 优势⚠️ RT-DETR 缺点📈 应用场景📑 论文 & 官方仓库2.模型框架3.Yaml配置文件4.训练脚本5.训练完成截图6.总结…...

以太网帧结构和封装【二】-- IP头部信息
1字节 byte 8比特 bit 【位和比特是同一个概念】 比特/位,字节之间的关系是: 位(Bit) 中文名:位(二进制位)。 英文名:Bit(Binary Digit 的缩写)。 含义&…...
mysql 悲观锁和乐观锁(—悲观锁)
适合悲观锁的使用场景: 悲观锁更适合在,写操作较多、并发冲突高、业务需要强一致性等场景下使用悲观锁。 如何使用悲观锁: 悲观锁主要通过以下两个 SQL语句实现: 1、SELECT...FOR UPDATE; 这个语句会在所查询中的数据行上设置排…...