From c0391e7265ac763070a420dc085acc8acef62bc2 Mon Sep 17 00:00:00 2001 From: longfeng Date: Thu, 9 Mar 2023 16:05:41 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=96=B0=E5=A2=9Etinyxml2=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longfeng --- tinyxml2/BUILD.gn | 0 tinyxml2/CMakeLists.txt | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 tinyxml2/BUILD.gn create mode 100644 tinyxml2/CMakeLists.txt diff --git a/tinyxml2/BUILD.gn b/tinyxml2/BUILD.gn new file mode 100644 index 00000000..e69de29b diff --git a/tinyxml2/CMakeLists.txt b/tinyxml2/CMakeLists.txt new file mode 100644 index 00000000..02a4659b --- /dev/null +++ b/tinyxml2/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required (VERSION 3.4.1) + +project(tinyxml2) + +set(TARGET_NAME tinyxml2) + +add_subdirectory(${TARGET_NAME}) + + + -- Gitee From bc4be8c8b14275391f52eb8c5dcc143c9af63051 Mon Sep 17 00:00:00 2001 From: longfeng Date: Thu, 9 Mar 2023 16:28:26 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=96=B0=E5=A2=9Etinyxml2=20README?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longfeng --- tinyxml2/README.OpenSource | 11 ++++ tinyxml2/README_zh.md | 13 ++++ tinyxml2/docs/pic/result.png | Bin 0 -> 26975 bytes tinyxml2/docs/rom_integrate.md | 111 +++++++++++++++++++++++++++++++++ 4 files changed, 135 insertions(+) create mode 100644 tinyxml2/README.OpenSource create mode 100644 tinyxml2/README_zh.md create mode 100644 tinyxml2/docs/pic/result.png create mode 100644 tinyxml2/docs/rom_integrate.md diff --git a/tinyxml2/README.OpenSource b/tinyxml2/README.OpenSource new file mode 100644 index 00000000..934000ec --- /dev/null +++ b/tinyxml2/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "tinyxml2", + "License": "zlib license", + "License File": "LICENSE", + "Version Number": "v9.0.0", + "Owner": "leethomason", + "Upstream URL": "https://github.com/leethomason/tinyxml2.git", + "Description": "TinyXML-2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs." + } +] diff --git a/tinyxml2/README_zh.md b/tinyxml2/README_zh.md new file mode 100644 index 00000000..c1a98679 --- /dev/null +++ b/tinyxml2/README_zh.md @@ -0,0 +1,13 @@ +# tinyxml2三方库说明 +## 功能简介 +TinyXML2 是 simple、small、efficient 的开源 C++ XML 文件解析库,可以很方便地应用到现有的项目中。 +## 使用约束 +- ROM版本:OpenHarmony-v3.2-Beta1 + +- 三方库版本:v9.0.0 + +- 当前适配的功能:xml解析 + +- [libtiff license](https://github.com/leethomason/tinyxml2/blob/9.0.0/LICENSE.txt) +## 集成方式 ++ [系统Rom包集成](docs/rom_integrate.md) diff --git a/tinyxml2/docs/pic/result.png b/tinyxml2/docs/pic/result.png new file mode 100644 index 0000000000000000000000000000000000000000..f10c60c20b19be6045cfb3cd0eb8305d45b0a2e9 GIT binary patch literal 26975 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 XPEk)$kQ*F|G$nXV$m$DU?Kt=+Nv=ht literal 0 HcmV?d00001 diff --git a/tinyxml2/docs/rom_integrate.md b/tinyxml2/docs/rom_integrate.md new file mode 100644 index 00000000..43098845 --- /dev/null +++ b/tinyxml2/docs/rom_integrate.md @@ -0,0 +1,111 @@ +# tinyxml2如何集成到系统Rom +## 准备源码工程 +本库是基于OpenHarmony-v3.2-Beta1版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +### 准备系统Rom源码 +系统源码获取请参考:[OpenHarmony源码下载](https://gitee.com/openharmony/docs/blob/OpenHarmony-v3.2-Beta2/zh-cn/release-notes/OpenHarmony-v3.2-beta1.md) +### 增加构建脚本及配置文件 +- 下载本仓库代码 + ``` + cd ~ + git clone git@gitee.com:openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/tinyxml #三方库rapidjson的目录结构如下 + ├── adapted #存放三方库适配需要的代码文件 + ├── docs #存放三方库相关文档的文件夹 + ├── BUILD.gn #构建脚本,支持rom包集成 + ├── bundle.json #三方库组件定义文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` +- 将三方库拷贝到OpenHarmony源码的third_party目录下 + ``` + cp ~/tpc_c_cplusplus/tinyxml2 ~/openharmony/third_party -rf + ``` +### 准备三方库源码 +``` +cd ~/openharmony/third_party/rapidjson #进入三方库目录 +git clone https://github.com/leethomason/tinyxml2.git #下载三方库源码 +``` +## 系统Rom中引入三方库 +准备完三方库代码后,我们需要将三方库加入到编译构建体系中。标准系统编译构建可以参考文档[标准系统编译构建指导](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/device-dev/subsystems/subsys-build-standard-large.md) +我们默认三方库是属于OpenHarmony的thirdparty子系统,如果需要自己定义子系统参考文档[如何为三方库组件中添加一个三方库](https://gitee.com/openharmony-sig/knowledge/blob/master/docs/openharmony_getstarted/port_thirdparty/README.md) +新增需要编译的组件,在OpenHarmony源码的vendor/hihope/rk3568/config.json文件中,新增需要编译的组件,如下代码段所示,在thirdparty子系统下面新增tinyxml2组件。 + +``` + { + "subsystem": "thirdparty", + "components": [ + { + "component": "musl", + "features": [] + }, + { + "component": "tinyxml2", + "features": [] + } + ] + } + +``` +## 系统Rom中引入三方库测试程序 +如果需要编译测试用例,在OpenHarmony源码的vendor/hihope/rk3568/config.json文件,对应组件的features中打开编译选项,如下 +``` + { + "subsystem": "thirdparty", + "components": [ + { + "component": "musl", + "features": [] + }, + { + "component": "tinyxml2", + "features": ["enable_tinyxml2_test=true"] + } + ] + } +``` +## 编译工程 +在OpenHarmony源码根目录下 +``` +cd ~/openharmony +``` +- 选择平台 + ``` + hb set #hb set 命令会列出所有可选平台,这里我们选择rk3568 + ``` +- 执行编译 + ``` + hb build --target-cpu arm #编译32位系统 + hb build --target-cpu arm64 #编译64位系统 + ``` +- 生成文件的路径,可执行文件和库文件都在out/rk3568/thirdparty/tinyxml 目录下,同时也打包到了镜像中 +## 运行效果 +将编译生成的库和测试文件放到板子上运行,为避免每次将文件推入设备都烧录整个镜像,我们使用hdc_std工具将文件推到开发板上 +- 首先将hdc_std工具编译出来 + 工具编译出来所在路径out/sdk/ohos-sdk/windows/toolchains/hdc_std.exe + + ``` + hb set #源码根目录下使用hb set 选择产品ohos-sdk + hb build #然后编译 + ``` +- 将工具拷贝到Windows,可以为工具目录配置环境变量,也可以在工具所在目录打开windows命令行 +- 将原生库测试需要的所有文件打包成tinyxml2.tar,并拷贝到windows下 +- 将文件推送到开发板,在windows命令行进行如下操作 + ``` + hdc_std shell mount -oremount,rw / #修改系统权限为可读写 + hdc_std file send tinyxml2.tar / #将文件包推入开发板 + hdc_std shell #进入开发板 + tar xvf tinyxml2.tar #解压 + #注意需要将库拷贝到/system/lib 或者/system/lib64目录下 + ``` +- 运行测试程序 + 运行测试用例,结果如下图 + ![result](pic/result.png) +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [如何为三方库组件中添加一个三方库](https://gitee.com/openharmony-sig/knowledge/blob/master/docs/openharmony_getstarted/port_thirdparty/README.md) +- [标准系统编译构建指导](https://gitee.com/openharmony/docs/blob/OpenHarmony-3.2-Beta1/zh-cn/device-dev/subsystems/subsys-build-standard-large.md) \ No newline at end of file -- Gitee From 4c5f7aec678db7f1b9884ebe2d27cab0fc55b7ad Mon Sep 17 00:00:00 2001 From: longfeng Date: Tue, 21 Mar 2023 14:59:02 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=B7=BB=E5=8A=A0BUILD.gn=EF=BC=8Cbundle.j?= =?UTF-8?q?son=E7=BC=96=E8=AF=91=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longfeng --- tinyxml2/BUILD.gn | 79 ++++++++++++++++++++++++++++++++++++++++++++ tinyxml2/bundle.json | 33 ++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 tinyxml2/bundle.json diff --git a/tinyxml2/BUILD.gn b/tinyxml2/BUILD.gn index e69de29b..cb95f179 100644 --- a/tinyxml2/BUILD.gn +++ b/tinyxml2/BUILD.gn @@ -0,0 +1,79 @@ +# Copyright (c) 2021 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") + +declare_args() { + enable_tinyxml2_test = false +} + +config("tinyxml2_config") { + include_dirs = [ + "//third_party/tinyxml2/tinyxml2" + ] + + cflags = [ + "-fdata-sections", + "-ffunction-sections", + "-funwind-tables", + "-fstack-protector-strong", + "-no-canonical-prefixes", + "-fno-addrsig", + "-Wa,--noexecstack", + "-Wformat", + "-Werror=format-security", + "-D__MUSL__", + "-fPIC", + "-fvisibility=hidden", + "-fvisibility-inlines-hidden" + ] +} + +ohos_shared_library("tinyxml2_shared") { + sources = [ + "//third_party/tinyxml2/tinyxml2/tinyxml2.cpp", + ] + + configs = [ + ":tinyxml2_config" + ] + + deps = [ + ] + + part_name = "tinyxml2" +} + +ohos_executable("xmltest"){ + sources = [ + "//third_party/tinyxml2/tinyxml2/xmltest.cpp", + ] + deps = [ + ":tinyxml2_shared" + ] + configs = [ + ":tinyxml2_config" + ] + part_name = "tinyxml2" +} + +group("tinyxml2") { + deps = [ + ":tinyxml2_shared", + ] +if (enable_tinyxml2_test) { + deps += [ + ":xmltest", + ] +} +} diff --git a/tinyxml2/bundle.json b/tinyxml2/bundle.json new file mode 100644 index 00000000..988d993c --- /dev/null +++ b/tinyxml2/bundle.json @@ -0,0 +1,33 @@ +{ + "name": "@ohos/tinyxml2", + "description": "A fast JSON parser/generator for C++ with both SAX/DOM style API", + "version": "v9.0.0", + "license": "GNU LGPLv2+", + "publishAs": "", + "segment": { + "destPath": "third_party/tinyxml2" + }, + "dirs": {}, + "scripts": {}, + "readmePath": { + "en": "README" + }, + "component": { + "name": "tinyxml2", + "subsystem": "thirdparty", + "syscap": [], + "features": [], + "adapted_system_type": [], + "rom": "", + "ram": "", + "deps": { + "components": [], + "third_party": [] + }, + "build": { + "sub_component": ["//third_party/tinyxml2:tinyxml2"], + "inner_kits": [], + "test": [] + } + } +} -- Gitee From a7e276baf5e4e5a6e6625cada960072f0543b58a Mon Sep 17 00:00:00 2001 From: longfeng Date: Tue, 21 Mar 2023 15:07:08 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9rom=5Fintegrate.md?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longfeng --- tinyxml2/docs/rom_integrate.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tinyxml2/docs/rom_integrate.md b/tinyxml2/docs/rom_integrate.md index 43098845..c58dcf32 100644 --- a/tinyxml2/docs/rom_integrate.md +++ b/tinyxml2/docs/rom_integrate.md @@ -25,7 +25,7 @@ ``` ### 准备三方库源码 ``` -cd ~/openharmony/third_party/rapidjson #进入三方库目录 +cd ~/openharmony/third_party/tinyxml2 #进入三方库目录 git clone https://github.com/leethomason/tinyxml2.git #下载三方库源码 ``` ## 系统Rom中引入三方库 -- Gitee From 2b5df225676d1a33b88f0b619ddfc9b56dc0ac22 Mon Sep 17 00:00:00 2001 From: longfeng Date: Tue, 21 Mar 2023 16:40:30 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9README.md=E5=92=8Crom=5Fi?= =?UTF-8?q?ntegrate.md=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longfeng --- tinyxml2/README_zh.md | 2 +- tinyxml2/docs/rom_integrate.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tinyxml2/README_zh.md b/tinyxml2/README_zh.md index c1a98679..c50e5370 100644 --- a/tinyxml2/README_zh.md +++ b/tinyxml2/README_zh.md @@ -8,6 +8,6 @@ TinyXML2 是 simple、small、efficient 的开源 C++ XML 文件解析库,可 - 当前适配的功能:xml解析 -- [libtiff license](https://github.com/leethomason/tinyxml2/blob/9.0.0/LICENSE.txt) +- [zlib License](https://github.com/leethomason/tinyxml2/blob/9.0.0/LICENSE.txt) ## 集成方式 + [系统Rom包集成](docs/rom_integrate.md) diff --git a/tinyxml2/docs/rom_integrate.md b/tinyxml2/docs/rom_integrate.md index c58dcf32..168bbdeb 100644 --- a/tinyxml2/docs/rom_integrate.md +++ b/tinyxml2/docs/rom_integrate.md @@ -1,6 +1,6 @@ # tinyxml2如何集成到系统Rom ## 准备源码工程 -本库是基于OpenHarmony-v3.2-Beta1版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +本库是基于OpenHarmony-v3.2-Beta5版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 ### 准备系统Rom源码 系统源码获取请参考:[OpenHarmony源码下载](https://gitee.com/openharmony/docs/blob/OpenHarmony-v3.2-Beta2/zh-cn/release-notes/OpenHarmony-v3.2-beta1.md) ### 增加构建脚本及配置文件 @@ -11,7 +11,7 @@ ``` - 三方库目录结构 ``` - tpc_c_cplusplus/tinyxml #三方库rapidjson的目录结构如下 + tpc_c_cplusplus/tinyxml2 #三方库tinyxml2的目录结构如下 ├── adapted #存放三方库适配需要的代码文件 ├── docs #存放三方库相关文档的文件夹 ├── BUILD.gn #构建脚本,支持rom包集成 -- Gitee From dca1b989a2b87659258e289c922ce9a6a1f56253 Mon Sep 17 00:00:00 2001 From: longfeng Date: Wed, 29 Mar 2023 11:51:45 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=96=B0=E5=A2=9Ehap=E5=8C=85=E9=9B=86?= =?UTF-8?q?=E6=88=90=E6=96=B9=E6=B3=95=EF=BC=8C=E4=BF=AE=E6=94=B9README,?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96BUILD.gn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longfeng --- tinyxml2/BUILD.gn | 79 +++++++++++++-------------------- tinyxml2/README.OpenSource | 2 +- tinyxml2/README_zh.md | 1 + tinyxml2/docs/hap_integrate.md | 46 +++++++++++++++++++ tinyxml2/docs/pic/hap.jpeg | Bin 0 -> 79342 bytes tinyxml2/docs/rom_integrate.md | 2 +- 6 files changed, 80 insertions(+), 50 deletions(-) create mode 100644 tinyxml2/docs/hap_integrate.md create mode 100644 tinyxml2/docs/pic/hap.jpeg diff --git a/tinyxml2/BUILD.gn b/tinyxml2/BUILD.gn index cb95f179..841c59ec 100644 --- a/tinyxml2/BUILD.gn +++ b/tinyxml2/BUILD.gn @@ -14,66 +14,49 @@ import("//build/ohos.gni") declare_args() { - enable_tinyxml2_test = false + enable_tinyxml2_test = false } config("tinyxml2_config") { - include_dirs = [ - "//third_party/tinyxml2/tinyxml2" - ] - - cflags = [ - "-fdata-sections", - "-ffunction-sections", - "-funwind-tables", - "-fstack-protector-strong", - "-no-canonical-prefixes", - "-fno-addrsig", - "-Wa,--noexecstack", - "-Wformat", - "-Werror=format-security", - "-D__MUSL__", - "-fPIC", - "-fvisibility=hidden", - "-fvisibility-inlines-hidden" - ] + include_dirs = [ "//third_party/tinyxml2/tinyxml2" ] + + cflags = [ + "-fdata-sections", + "-ffunction-sections", + "-funwind-tables", + "-fstack-protector-strong", + "-no-canonical-prefixes", + "-fno-addrsig", + "-Wa,--noexecstack", + "-Wformat", + "-Werror=format-security", + "-D__MUSL__", + "-fPIC", + "-fvisibility=hidden", + "-fvisibility-inlines-hidden", + ] } ohos_shared_library("tinyxml2_shared") { - sources = [ - "//third_party/tinyxml2/tinyxml2/tinyxml2.cpp", - ] + sources = [ "//third_party/tinyxml2/tinyxml2/tinyxml2.cpp" ] - configs = [ - ":tinyxml2_config" - ] + configs = [ ":tinyxml2_config" ] - deps = [ - ] + deps = [] - part_name = "tinyxml2" + part_name = "tinyxml2" } -ohos_executable("xmltest"){ - sources = [ - "//third_party/tinyxml2/tinyxml2/xmltest.cpp", - ] - deps = [ - ":tinyxml2_shared" - ] - configs = [ - ":tinyxml2_config" - ] - part_name = "tinyxml2" +ohos_executable("xmltest") { + sources = [ "//third_party/tinyxml2/tinyxml2/xmltest.cpp" ] + deps = [ ":tinyxml2_shared" ] + configs = [ ":tinyxml2_config" ] + part_name = "tinyxml2" } group("tinyxml2") { - deps = [ - ":tinyxml2_shared", - ] -if (enable_tinyxml2_test) { - deps += [ - ":xmltest", - ] -} + deps = [ ":tinyxml2_shared" ] + if (enable_tinyxml2_test) { + deps += [ ":xmltest" ] + } } diff --git a/tinyxml2/README.OpenSource b/tinyxml2/README.OpenSource index 934000ec..cfe181c6 100644 --- a/tinyxml2/README.OpenSource +++ b/tinyxml2/README.OpenSource @@ -4,7 +4,7 @@ "License": "zlib license", "License File": "LICENSE", "Version Number": "v9.0.0", - "Owner": "leethomason", + "Owner": "longfeng20@huawei.com", "Upstream URL": "https://github.com/leethomason/tinyxml2.git", "Description": "TinyXML-2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs." } diff --git a/tinyxml2/README_zh.md b/tinyxml2/README_zh.md index c50e5370..7b28692e 100644 --- a/tinyxml2/README_zh.md +++ b/tinyxml2/README_zh.md @@ -11,3 +11,4 @@ TinyXML2 是 simple、small、efficient 的开源 C++ XML 文件解析库,可 - [zlib License](https://github.com/leethomason/tinyxml2/blob/9.0.0/LICENSE.txt) ## 集成方式 + [系统Rom包集成](docs/rom_integrate.md) ++ [系统Hap包集成](docs/hap_integrate.md) diff --git a/tinyxml2/docs/hap_integrate.md b/tinyxml2/docs/hap_integrate.md new file mode 100644 index 00000000..00b24d6c --- /dev/null +++ b/tinyxml2/docs/hap_integrate.md @@ -0,0 +1,46 @@ +# tinyxml2如何集成到应用hap +## 准备应用工程 +本库是基于DevEco Studio 3.1 Beta1版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +### 准备应用开发环境 +开发环境的准备参考:[开发环境准备](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) +### 增加构建脚本及配置文件 +- 下载本仓库,并解压 +- 三方库目录结构 + ``` + tpc_c_cplusplus/tinyxml2 #三方库tinyxml2 的目录结构如下 + ├── docs #存放三方库相关文档的文件夹 + ├── CmakeLists.txt #构建脚本,支持hap包集成 + ├── bundle.json #三方库组件定义文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` +- 将tinyxml2 拷贝至工程xxxx/entry/src/main/cpp/thirdparty目录下 +### 准备三方库源码 +- 三方库下载地址:[tinyxml2](https://github.com/leethomason/tinyxml2), 版本:v9.0.0 + 解压后修改库文件名为tinyxml2,拷贝至工程xxxx/entry/src/main/cpp/thirdparty/tinyxml2目录下 +## 应用中使用三方库 +- 将三方库加入工程中,目录结构如下 + ``` + demo/entry/src/main/cpp + ├── thirdparty #三方库存放目录 + │ ├──tinyxml2 #三方库tinyxml2 + ├── CMakeLists.txt #工程目录的构建脚本 + ├── ..... #工程目录的其他文件 + ``` +- 在工程顶级CMakeLists.txt中引入三方库,增加如下代码 + ``` + include_directories(thirdparty/tinyxml2/tinyxml2) + add_subdirectory(thirdparty/tinyxml2) #引入子目录下的CMakeLists.txt + target_link_libraries(工程库名 PUBLIC tinyxml2) #工程依赖三方库tinyxml2 + ``` +## 编译工程 +编译工程,安装应用可以参考 [应用的安装和运行](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md#%E5%AE%89%E8%A3%85%E8%B0%83%E8%AF%95) +## 运行效果 +- 在 [tinyxml2](https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/tinyxml2)中,运行效果如下图 +  ![演示](pic/hap.jpeg) +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md#%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87deveco-studio%E5%BC%80%E5%8F%91%E4%B8%80%E4%B8%AAnapi%E5%B7%A5%E7%A8%8B) + diff --git a/tinyxml2/docs/pic/hap.jpeg b/tinyxml2/docs/pic/hap.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..677b7e9d1ca32b7b8f466d7247da8f5314ccc7f4 GIT binary patch literal 79342 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 z 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

@JDl&79cp#J%KsM^udC~9iu?XJ~` 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 D3c#Or literal 0 HcmV?d00001 diff --git a/tinyxml2/docs/rom_integrate.md b/tinyxml2/docs/rom_integrate.md index 168bbdeb..28c30792 100644 --- a/tinyxml2/docs/rom_integrate.md +++ b/tinyxml2/docs/rom_integrate.md @@ -1,6 +1,6 @@ # tinyxml2如何集成到系统Rom ## 准备源码工程 -本库是基于OpenHarmony-v3.2-Beta5版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +本库是基于OpenHarmony-v3.2-Beta1版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 ### 准备系统Rom源码 系统源码获取请参考:[OpenHarmony源码下载](https://gitee.com/openharmony/docs/blob/OpenHarmony-v3.2-Beta2/zh-cn/release-notes/OpenHarmony-v3.2-beta1.md) ### 增加构建脚本及配置文件 -- Gitee From cc4b2fab3974c3d217bbbb3c8086dd8b06c9807f Mon Sep 17 00:00:00 2001 From: longfeng Date: Fri, 21 Apr 2023 18:04:50 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=B7=BB=E5=8A=A0hap=E5=8C=85=E9=9B=86?= =?UTF-8?q?=E6=88=90=E7=9A=84=E4=BD=BF=E7=94=A8=E7=BA=A6=E6=9D=9F=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=95=E5=85=A5=E4=B8=89=E6=96=B9=E5=BA=93?= =?UTF-8?q?=E7=9A=84CMakeList.txt=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: longfeng --- tinyxml2/README_zh.md | 5 +++-- tinyxml2/docs/hap_integrate.md | 27 +++++++++++++++++++-------- tinyxml2/docs/pic/install.png | Bin 0 -> 20161 bytes 3 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 tinyxml2/docs/pic/install.png diff --git a/tinyxml2/README_zh.md b/tinyxml2/README_zh.md index 7b28692e..b6823f9c 100644 --- a/tinyxml2/README_zh.md +++ b/tinyxml2/README_zh.md @@ -3,7 +3,8 @@ TinyXML2 是 simple、small、efficient 的开源 C++ XML 文件解析库,可以很方便地应用到现有的项目中。 ## 使用约束 - ROM版本:OpenHarmony-v3.2-Beta1 - +- IDE版本:DevEco Studio 3.1 Beta1(3.1.0.200) +- SDK:API9 Release(3.2.10.6) - 三方库版本:v9.0.0 - 当前适配的功能:xml解析 @@ -11,4 +12,4 @@ TinyXML2 是 simple、small、efficient 的开源 C++ XML 文件解析库,可 - [zlib License](https://github.com/leethomason/tinyxml2/blob/9.0.0/LICENSE.txt) ## 集成方式 + [系统Rom包集成](docs/rom_integrate.md) -+ [系统Hap包集成](docs/hap_integrate.md) ++ [应用Hap包集成](docs/hap_integrate.md) diff --git a/tinyxml2/docs/hap_integrate.md b/tinyxml2/docs/hap_integrate.md index 00b24d6c..68e834cc 100644 --- a/tinyxml2/docs/hap_integrate.md +++ b/tinyxml2/docs/hap_integrate.md @@ -2,24 +2,32 @@ ## 准备应用工程 本库是基于DevEco Studio 3.1 Beta1版本,在RK3568开发板上验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 ### 准备应用开发环境 -开发环境的准备参考:[开发环境准备](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) +- IDE版本:DevEco Studio 3.1 Beta1 +- SDK版本:OpenHarmony SDK +- API版本:API Version 9 + +应用环境准备具体可参照文档[通过IDE开发一个Napi工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) + ### 增加构建脚本及配置文件 -- 下载本仓库,并解压 -- 三方库目录结构 + +- 下载本仓库代码
+ 通过[C/C++三方库TCP仓](https://gitee.com/openharmony-sig/tpc_c_cplusplus)下载本三方库代码并将其解压。 +- 仓库代码库目录结构说明 ``` tpc_c_cplusplus/tinyxml2 #三方库tinyxml2 的目录结构如下 ├── docs #存放三方库相关文档的文件夹 + ├── BUILD.gn # 构建脚本,支持rom包集成 ├── CmakeLists.txt #构建脚本,支持hap包集成 ├── bundle.json #三方库组件定义文件 ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 - ├── README_zh.md + ├── README_zh.md ``` - 将tinyxml2 拷贝至工程xxxx/entry/src/main/cpp/thirdparty目录下 ### 准备三方库源码 - 三方库下载地址:[tinyxml2](https://github.com/leethomason/tinyxml2), 版本:v9.0.0 解压后修改库文件名为tinyxml2,拷贝至工程xxxx/entry/src/main/cpp/thirdparty/tinyxml2目录下 ## 应用中使用三方库 -- 将三方库加入工程中,目录结构如下 +- 将三方库加入工程中,目录结构如下: ``` demo/entry/src/main/cpp ├── thirdparty #三方库存放目录 @@ -29,12 +37,15 @@ ``` - 在工程顶级CMakeLists.txt中引入三方库,增加如下代码 ``` - include_directories(thirdparty/tinyxml2/tinyxml2) - add_subdirectory(thirdparty/tinyxml2) #引入子目录下的CMakeLists.txt + target_include_directories(工程库名 PRIVATE thirdparty/tinyxml2/tinyxml2) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/tinyxml2) #引入子目录下的CMakeLists.txt target_link_libraries(工程库名 PUBLIC tinyxml2) #工程依赖三方库tinyxml2 ``` ## 编译工程 -编译工程,安装应用可以参考 [应用的安装和运行](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md#%E5%AE%89%E8%A3%85%E8%B0%83%E8%AF%95) + +- 连接上设备后,DevEco Studio就会显示被发现设备。然后,点击“运行”,即可依次完成该应用“编译”和“安装”的过程,如图: +  ![install](pic/install.png) + ## 运行效果 - 在 [tinyxml2](https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/tinyxml2)中,运行效果如下图  ![演示](pic/hap.jpeg) diff --git a/tinyxml2/docs/pic/install.png b/tinyxml2/docs/pic/install.png new file mode 100644 index 0000000000000000000000000000000000000000..58ac7e732a58239c3c256f918f4cbe5dafe1601a GIT binary patch literal 20161 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 literal 0 HcmV?d00001 -- Gitee