OpenHarmony Api11 应用工程适配Native
前言 OpenHarmony 4.1-Release发布后,配套发布了DevEco Studio 4.1 Release。但是该版本的IDE能创建的Native工程模板最高只支持到Api 9,因此下文会为大家介绍,Api11的纯OpenHarmony应用工程如何适配Native。 开发环境 系统版本: OpenHarmony: 4.1-Release(OpenHarmony 4.1.7.3) De
前言
OpenHarmony 4.1-Release发布后,配套发布了DevEco Studio 4.1 Release。但是该版本的IDE能创建的Native工程模板最高只支持到Api 9,因此下文会为大家介绍,Api11的纯OpenHarmony应用工程如何适配Native。
开发环境
系统版本: OpenHarmony: 4.1-Release(OpenHarmony 4.1.7.3)
DevEco Studio版本: OpenHarmony: DevEco Studio 4.1 Release(build: 4.1.0.400)
SDK版本: OpenHarmony: 4.1.7.7
适配流程
新建OpenHarmony Api11应用工程
依次点击File -> New -> Create Project -> Application -> [OpenHarmony]Empty Ability -> Next。
Compile SDK
及Compatible SDK
选择11
后,创建新工程、同步工程配置、依赖下载、配置签名、安装运行。
添加Native代码
在
\entry\src\main
下创建文件夹cpp
。在
\entry\src\main\cpp
下创建文件xxx.cpp
。该文件为Native代码文件。
注意:非必须,可根据实际业务来创建对应的代码源文件。当前只是为了进行示例演示。
- 在
\entry\src\main\cpp
下创建文件CMakeLists.txt
。该文件为Native编译配置文件。
在该文件下进行如下配置
# the minimum version of CMake.
cmake_minimum_required(VERSION 3.4.1)
project(xxx_project)
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${NATIVERENDER_ROOT_PATH}
${NATIVERENDER_ROOT_PATH}/include)
add_library(xxxnative SHARED xxx.cpp)
target_link_libraries(xxxnative PUBLIC libace_napi.z.so)
xxx_project: 当前工程名。
xxxnative: 编译出的so名称。
xxx.cpp: 步骤2创建Nativa业务代码文件。
- 在
\entry\src\main\cpp
下创建文件夹types
。
注意:该文件夹名称自定义,由于IDE默认创建的名称为types,所以暂时沿用。
- 在
\entry\src\main\cpp\types
下创建文件夹libxxxnative
。
注意:该文件夹名称自定义,一般使用lib加上步骤3里的so名称。
在
\entry\src\main\cpp\types\libxxxnative
下创建文件index.d.ts
。该文件为so对应的api声明文件,里面export的方法需要在xxx.cpp
里注册定义对应的napi方法。在
\entry\src\main\cpp\types\libxxxnative
下创建文件oh-package.json5
。该文件为so的oh适配工程文件。
在该文件下进行如下配置
{
"name": "libxxxnative.so",
"types": "./index.d.ts",
"version": "",
"description": "Please describe the basic information."
}
name: so的产物名称。该名称一般由lib
加上步骤3的定义的so名称加上.so
来构成。
types: 步骤6创建的声明文件路径。
配置Native编译引用依赖
- 在工程根目录的
oh-package.json5
下配置so依赖
并sync。{ ··· "devDependencies": { ··· "@types/libxxxnative.so": "file:./entry/src/main/cpp/types/libxxxnative" } }
@types/libxxxnative.so: ArkTS引用的so名称,可自定义。路径为添加Native代码的步骤5创建的文件夹路径。
- 在模块下的
build-profile.json5
下配置Native编译配置
并sync。{ ··· "buildOption": { ··· "externalNativeOptions": { "path": "./src/main/cpp/CMakeLists.txt", "arguments": "", "cppFlags": "", } }, ··· }
path: 工程编译Native的路径。路径为添加Native代码的步骤3创建的文件路径。
调用so提供的api
- 在
\entry\src\main\ets\pages\Index.ets
引用soimport { xxxxxx } from 'libxxxnative.so'
libxxxnative.so: 安装的so依赖。下载路径为\oh_modules\@types\libwinsleinative.so
。
xxxxxx: so提供的api方法。
- 在
\entry\src\main\ets\pages\Index.ets
调用xxxxxx
方法xxxxxx()
更多推荐
所有评论(0)