当前位置: 首页 > article >正文

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (1) - 让 OpenGLES 应用跑起来

在正式移植 AWTK 之前,我们先尝试在 HarmonyOS 上运行一个简单的 OpenGLES 应用程序。虽然可以确定这一步肯定是可行的,但是作为一个 HarmonyOS NEXT 新手,还是先从简单的应用程序开始,把坑都踩一遍,遇到问题比较好解决。

HarmonyOS 本身带的有 OpenGLES 的例子,但是用最新的 DevEco Studio 打开,编译时有几个问题。先是找不到 SDK,安装了 SDK,又出现其它问题,最后懒得折腾了。直接新建一个 Native 应用,然后将代码拷贝过去。

1. 新建 Native 应用

在这里插入图片描述

2. 拷贝下列文件

  1. 从 applications_app_samples/code/BasicFeature/Native/NdkOpenGL 项目中拷贝下列文件到新项目对应目录:
	entry/src/main/cpp/app_napi.cpp
	entry/src/main/cpp/include/
	entry/src/main/cpp/module.cpp
	entry/src/main/cpp/napi_manager.cpp
	entry/src/main/cpp/napi_util.cpp
	entry/src/main/cpp/tetrahedron.cpp
	entry/src/main/ets/utils/
	entry/src/main/resources/base/element/float.json
	entry/src/main/resources/base/media/icon.png

	entry/src/main/cpp/CMakeLists.txt
	entry/src/main/ets/entryability/EntryAbility.ets
	entry/src/main/ets/pages/Index.ets
	entry/src/main/resources/base/element/color.json
	entry/src/main/resources/base/element/string.json
	entry/src/main/resources/en_US/element/string.json
	entry/src/main/resources/zh_CN/element/string.json
  1. 修改 entry/src/main/cpp/CMakeLists.txt,将动态库的名字改成 awtk_napi

  2. 修改 entry/src/main/cpp/types/libentry/Index.d.ts

//传入 x,y 偏移量并返回 x,y 旋转角
export const updateAngle:(offsetX:number, offsetY:number)=>Array;
  1. 修改 entry/src/main/cpp/types/libentry/oh-package.json5
{
  "name": "libentry_napi.so",
  "types": "./Index.d.ts",
  "version": "1.0.0",
  "description": "entry for harmony."
}

3. 编译并运行

可以看到一个简单的 OpenGL 应用。

在这里插入图片描述

通过这个简单的应用程序,熟悉了 HarmonyOS NEXT 的开发流程,心里有底了,接下来就可以开始移植 nanovg 了。


http://www.kler.cn/a/378120.html

相关文章:

  • vue3标签中的ref属性如何使用$refs获取元素
  • 漏洞检测工具:HOST头部攻击
  • 【编辑器扩展】打开持久化路径/缓存路径/DataPath/StreamingAssetsPath文件夹
  • 一体式IO模块:打印机加工产线国产化降本增效的新利器
  • D102【python 接口自动化学习】- pytest进阶之fixture用法
  • Java - 日志体系_Apache Commons Logging(JCL)日志接口库
  • YOLOv11改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新
  • Node.js 应用程序中的文件写入提升为 RCE
  • 江协科技STM32学习- P25 UART串口协议
  • 系统安全与加解密技术
  • 【网络】传输层协议TCP
  • 甄选学习平台 优化员工培训体验
  • huggingface利用bert-base-chinese实现中文情感分类
  • Jenkins面试整理-如何在 Jenkins 中配置构建任务?
  • 新生代对象垃圾回收如何避免全堆扫描
  • 70B的模型需要多少张A10的卡可以部署成功,如果使用vLLM
  • 基于 Java 语言双代号网络图自动绘制系统
  • Vue 事件阻止 e.preventDefault();click.prevent
  • 使用GraphQL构建高效API
  • ArcGIS API for JavaScript 基础应用+实例展示+水波纹特效
  • SpringBoot整合minio服务
  • windows下用CMake构建使用protobuf的应用,编译使用VS2022
  • LeetCode 3226. 使两个整数相等的位更改次数
  • UML介绍-不同类间关系
  • 【Linux】从零开始使用多路转接IO --- poll
  • 利用 Direct3D 绘制几何体—8.光栅器状态