Harmony OS C++实战

开发步骤
  1. 安装devcostudio打开
  2. File->New->CreateProject->Native C++
bash 复制代码
cd src/main && git clone https://github.com/freetype/freetype && mv freetype/* cpp/
  1. 多平台配置 新增build-profile.json5下abiFilters,支持多平台

    "externalNativeOptions": {

    "path": "./src/main/cpp/CMakeLists.txt",

    "arguments": "",

    "cppFlags": "",

    "abiFilters": [

    "x86_64",

    "arm64-v8a"

    ]

    }

  2. 点击锤子🔨make module生成,右上角圆点切换debug|release。输出文件在build\default\outputs\default\*.hap,解压有ABI对应的.so文件。
  3. ts或其它库调用使用时,需在src同级目录下新建libs文件夹,拷贝abiFilters所有文件夹到libs下。
.so cmake配置
cpp 复制代码
cmake_minimum_required(VERSION 3.5.0)
project(NativeFileAccess)

set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})

if(DEFINED PACKAGE_FIND_FILE)
    include(${PACKAGE_FIND_FILE})
endif()

include_directories(${NATIVERENDER_ROOT_PATH}
                    ${NATIVERENDER_ROOT_PATH}/include)
link_directories(${NATIVERENDER_ROOT_PATH}/../../../libs/${OHOS_ARCH})

add_library(file_access SHARED FileAccessMethods.cpp)

if (CMAKE_BUILD_TYPE STREQUAL "Debug")
    set_property(TARGET file_access PROPERTY IMPORTED_LOCATION ${NATIVERENDER_ROOT_PATH}/libs/${OHOS_ARCH}/libfreetyped.so)
else()
    set_property(TARGET file_access PROPERTY IMPORTED_LOCATION ${NATIVERENDER_ROOT_PATH}/libs/${OHOS_ARCH}/libfreetype.so)
endif ()

set_property(TARGET file_access PROPERTY IMPORTED_LOCATION ${NATIVERENDER_ROOT_PATH}/libs/${OHOS_ARCH}/libc++_shared.so)
target_link_libraries(file_access PUBLIC libace_napi.z.so libhilog_ndk.z.so librawfile.z.so libc++_shared.so)
target_link_libraries(file_access PUBLIC debug libfreetyped.so optimized libfreetype.so)
库依赖查看

readelf -d lib.so

注:so.x.x不支持,需用.so加载

参考

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-compiling-and-building-86

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-access-control-14

https://gitee.com/openharmony-sig/tpc_c_cplusplus.git

https://github.com/AiMiDi/icu-cmake

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-ndk-72

https://gitee.com/harmonyos_samples/NativeFileAccess

https://gitee.com/harmonyos_samples/hiaifoundationkit-samplecode-clientdemo-cpp

https://gitee.com/harmonyos_samples/native-multi-threads


创作不易,小小的支持一下吧!

相关推荐
dialect_2 小时前
KMP算法
开发语言·c++·算法
总要学点什么3 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
ShineWinsu4 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
傲世仙尊4 小时前
多态-虚表才活到运行期符号表早已消失
c++
开开心心_Every4 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c5 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
是main不是漫5 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
吴卫斌5 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
·present·5 小时前
CSAPP(Bomb lab)
c语言·c++
王老师青少年编程5 小时前
2026年信奥赛c++普及组csp-j第二轮复赛真题
c++·真题·csp·信奥赛