前言

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应用工程

  1. 依次点击File -> New -> Create Project -> Application -> [OpenHarmony]Empty Ability -> Next。

  2. Compile SDKCompatible SDK选择11后,创建新工程、同步工程配置、依赖下载、配置签名、安装运行。

添加Native代码

  1. \entry\src\main下创建文件夹cpp

  2. \entry\src\main\cpp下创建文件xxx.cpp。该文件为Native代码文件。

注意:非必须,可根据实际业务来创建对应的代码源文件。当前只是为了进行示例演示。

  1. \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业务代码文件。

  1. \entry\src\main\cpp下创建文件夹types

注意:该文件夹名称自定义,由于IDE默认创建的名称为types,所以暂时沿用。

  1. \entry\src\main\cpp\types下创建文件夹libxxxnative

注意:该文件夹名称自定义,一般使用lib加上步骤3里的so名称。

  1. \entry\src\main\cpp\types\libxxxnative下创建文件index.d.ts。该文件为so对应的api声明文件,里面export的方法需要在xxx.cpp里注册定义对应的napi方法。

  2. \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编译引用依赖

  1. 在工程根目录的oh-package.json5下配置so依赖
    {
    ···
    "devDependencies": {
     ···
     "@types/libxxxnative.so": "file:./entry/src/main/cpp/types/libxxxnative"
    }
    }
    
    并sync。

@types/libxxxnative.so: ArkTS引用的so名称,可自定义。路径为添加Native代码的步骤5创建的文件夹路径。

  1. 在模块下的build-profile.json5下配置Native编译配置
    {
    ···
    "buildOption": {
     ···
     "externalNativeOptions": {
       "path": "./src/main/cpp/CMakeLists.txt",
       "arguments": "",
       "cppFlags": "",
     }
    },
    ···
    }
    
    并sync。

path: 工程编译Native的路径。路径为添加Native代码的步骤3创建的文件路径。

调用so提供的api

  1. \entry\src\main\ets\pages\Index.ets引用so
    import { xxxxxx }  from 'libxxxnative.so'
    

libxxxnative.so: 安装的so依赖。下载路径为\oh_modules\@types\libwinsleinative.so

xxxxxx: so提供的api方法。

  1. \entry\src\main\ets\pages\Index.ets调用xxxxxx方法
    xxxxxx()
    
相关文件下载
NativeAdapterDemo.rar
1.98 MB
下载
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐