From 9dabeaba69eaa2a5632747d8c9f50709bac722d8 Mon Sep 17 00:00:00 2001 From: zhongluping <278527840@qq.com> Date: Mon, 8 May 2023 15:08:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=89=E6=96=B9=E5=BA=93?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=20&=20=E6=B7=BB=E5=8A=A0=E6=96=B0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhongluping <278527840@qq.com> --- thirdparty/thirdparty_template/README_zh.md | 42 ++---- .../docs/hap_integrate_template.md | 124 ++++++++++++++++++ .../docs/pic/xxx_install_dir.png | Bin 0 -> 5702 bytes .../docs/pic/xxx_install_dir1.png | Bin 0 -> 4349 bytes .../docs/pic/xxx_usage.png | Bin 0 -> 15375 bytes .../docs/pic/xxx_usage1.png | Bin 0 -> 15429 bytes 6 files changed, 138 insertions(+), 28 deletions(-) create mode 100755 thirdparty/thirdparty_template/docs/hap_integrate_template.md create mode 100755 thirdparty/thirdparty_template/docs/pic/xxx_install_dir.png create mode 100755 thirdparty/thirdparty_template/docs/pic/xxx_install_dir1.png create mode 100755 thirdparty/thirdparty_template/docs/pic/xxx_usage.png create mode 100755 thirdparty/thirdparty_template/docs/pic/xxx_usage1.png diff --git a/thirdparty/thirdparty_template/README_zh.md b/thirdparty/thirdparty_template/README_zh.md index 61a4618e..bee0c27e 100755 --- a/thirdparty/thirdparty_template/README_zh.md +++ b/thirdparty/thirdparty_template/README_zh.md @@ -1,33 +1,19 @@ -## 目录结构 +# XXX三方库说明 -``` -tpc_c_cplusplus/thirdparty -├── README_zh.md #仓库主页 -├── common #仓库通用说明文档的文件夹 -├── thirdparty_template #三方库模板文件夹 -│ ├──README_zh.md #三方库简介 -│ ├──README.OpenSource #说明三方库源码的下载地址,版本,license等信息 -│ ├──ohos.build #三方库组件定义文件 -│ ├──CMakeLists.txt #构建脚本,支持hap包集成 -│ ├──HPKBUILD #交叉构建脚本,使用原库自带脚本编译,支持hap包集成 -│ ├──SHA512SUM #压缩包校验文件,和HPKBUILD一起使用 -│ ├──BUILD.gn #构建脚本,支持rom包集成 -│ ├──adapted #该目录存放三方库适配需要的代码文件 -│ │ ├──config.h #例如配置文件 -│ │ ├──... #其他适配文件 -│ ├──docs #存放三方库相关文档的文件夹 -│ │ ├──rom_integrate.md #rom集成说明文档 -│ │ ├──hap_integrate.md #hap集成说明文档 -│ │ ├── ... #其他说明文档 -├── thirdparty1 #三方库文件夹,内容和thirdparty_template模板的格式一样 -├── thirdparty2 #三方库文件夹,内容和thirdparty_template模板的格式一样 -...... -``` +## 功能简介 +这个是xxx, 主要功能是xxx,简单的一句话介绍 +## 使用约束 -## 如何贡献 +- IDE版本: +- ROM版本: +- API版本: +- 三方库版本: +- 当前适配的功能:完成了xxx功能的适配 +- [License:xxx](./README_zh.md)(链接指向源三方库中的license) -- [遵守仓库目录结构](#本仓库目录) -- [遵守OpenHarmony编码贡献规范](https://gitee.com/openharmony-sig/knowledge_demo_smart_home/blob/master/dev/docs/contribute/README.md) -- [三方库模板目录](thirdparty_template) +## 集成方式 + +- [系统rom包集成](./docs/rom_integrate.md) +- [应用hap包集成](./docs/hap_integrate.md) diff --git a/thirdparty/thirdparty_template/docs/hap_integrate_template.md b/thirdparty/thirdparty_template/docs/hap_integrate_template.md new file mode 100755 index 00000000..8312c2a3 --- /dev/null +++ b/thirdparty/thirdparty_template/docs/hap_integrate_template.md @@ -0,0 +1,124 @@ +# xxx如何集成到应用hap + +## 准备应用工程 + +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 + +### 准备应用开发环境 + +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) + +## 编译三方库 + +- 下载本仓库 + + ```shell + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` + +- 三方库目录结构 + + ```shell + tpc_c_cplusplus/thirdparty/xxx #三方库xxx的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将xxx拷贝至tools/main目录下 + + ```shell + cd tpc_c_cplusplus + cp thirdparty/xxx tools/main -rf + ``` + +- 在tools目录下编译三方库 + + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + + ```shell + cd tools + ./build.sh xxx ### xxx是对应的三方库名 + ``` + +- 三方库头文件及生成的库 + + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + + ```shell + xxx/arm64-v8a xxx/armeabi-v7a ### xxx是对应的三方库名 + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +### 静态库的使用 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示: + +  ![thirdparty_install_dir](pic/xxx_install_dir.png) + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句: + + ```shell + #将三方库加入工程中,xxx是对应的三方库名 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xxx/${OHOS_ARCH}/lib/libxxx.a) + #将三方库的头文件加入工程中,xxx是对应的三方库名 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xxx/${OHOS_ARCH}/include) + ``` + + ![xxx_usage](pic/xxx_usage.png) + +### 动态库的使用 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示: + +  ![thirdparty_install_dir](pic/xxx_install_dir.png) + +- 拷贝动态库到`\\entry\libs\${OHOS_ARCH}\`目录: + + 动态库需要在`\\entry\libs\${OHOS_ARCH}\`目录,才能集成到hap包中,所以需要将对应的so文件拷贝到对应CPU架构的目录: + +  ![thirdparty_install_dir](pic/xxx_install_dir1.png) + + 动态库说明:
+ 此动态库不能是带有版本号(libxxx.so.0.1),通过编译生成的就是libxxx.so,如果生成的so带版本号,可以通过命令进行修改: + + ```shell + patchelf --set-soname libxxx.so libxxx.so.0.1 ## 将原库中的soname改成不带版本号的。libxxx.so是修改后的名字,libxxx.so.0.1原带版本号的库名 + mv libxxx.so.0.1 libxxx.so ## 修改库名字 + ``` + +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句: + + ```shell + #将三方库加入工程中,xxx是对应的三方库名 + target_link_libraries(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xxx/${OHOS_ARCH}/lib/libxxx.so) + #将三方库的头文件加入工程中,xxx是对应的三方库名 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/xxx/${OHOS_ARCH}/include) + ``` + + ![xxx_usage](pic/xxx_usage1.png) + +## 测试三方库 + +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +进入到构建目录执行 对应的测试命令(在[HPKBUILD](../HPKBUILD)文件中的check()函数中有说明) 运行测试用例(arm64-v8a-build为构建64位的目录,armeabi-v7a-build为构建32位的目录), +如`tinyxpath`三方库的测试结果: + + ![hunspell_test](../../tinyxpath/docs/pic/tinyxpath_test.png) + +## 参考资料 + +- [本文档涉及的技术补充说明](hap_integrate.md) +- [本文档引用的相关参考](hap_integrate.md) +- [相关案例参考](hap_integrate.md) diff --git a/thirdparty/thirdparty_template/docs/pic/xxx_install_dir.png b/thirdparty/thirdparty_template/docs/pic/xxx_install_dir.png new file mode 100755 index 0000000000000000000000000000000000000000..65761f27846076fa4c324f6b95600bd7a4025243 GIT binary patch literal 5702 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 literal 0 HcmV?d00001 diff --git a/thirdparty/thirdparty_template/docs/pic/xxx_install_dir1.png b/thirdparty/thirdparty_template/docs/pic/xxx_install_dir1.png new file mode 100755 index 0000000000000000000000000000000000000000..01aa37e7934912863d451e62431fafa7f4721dd2 GIT binary patch literal 4349 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 PvH%$98R-^k+lKuEdZTIB literal 0 HcmV?d00001 diff --git a/thirdparty/thirdparty_template/docs/pic/xxx_usage.png b/thirdparty/thirdparty_template/docs/pic/xxx_usage.png new file mode 100755 index 0000000000000000000000000000000000000000..e9475f3a3b3e938196779f9ea2751d7a1fc845fe GIT binary patch literal 15375 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 F{}*w0eck{7 literal 0 HcmV?d00001 diff --git a/thirdparty/thirdparty_template/docs/pic/xxx_usage1.png b/thirdparty/thirdparty_template/docs/pic/xxx_usage1.png new file mode 100755 index 0000000000000000000000000000000000000000..40c2851224918fed1ae6248b038519637669f15c GIT binary patch literal 15429 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≥M_XEH|&Oo)$7CKShB|b z1XskQ!uG>q9gz>xYcWytzE^48@zT9j#D;rU)^tYH{a3q$i`o3k3k%9=Ijv!pUwRiW zoRvI$!p=Df#EQ}|!oqD^YD4!Pj=%q^u`(-RwI*n$7s+dRJXOFBsl*DdbsS!37xXM; zwOr;GjJdDP)F(1J25b*CKc!kXfV|_k50RE+m+x3s5+M@zLp$}1_Tr3O(Y%578o~6p zM|rpRw0*n%55r75{F4;$xB53wiJAWx?EZf+Sds4W&en@7p+&>HqE_Li{3tLOR#8$TSsh0eN7r(&g;qt>3-=fC|WZh-Nz zyrD5~=9@biZoJ%n5EoGV?MM2T!$pb|sdw!5UW<@P(?XEc8+eLdl&`ZFty)}%5_bpu zc-_BTUS8g7E}(tqs055oxKJ^kU|gv%zuOY6lLjL}%l{TYYQiia_tx6v4my9*P>N2F z3|YS-b7cMlEV;!?C!Y!rxCg(5k~mdXH&p~Rv4Di`$jcW;nqz6Ut|k(;+J zI)KZ2Hw<+@URyBcE;cO{Wgp|YUl_XOZ@8J;MXP$_q_l`;eYv5t^XzxwO>H(fNbit8 z8}y@J&s-P_Q@-A`M6LAqjD%Z->UqN0|2!ui_jV*A255D@ruGP2fH=i!6o)Y0)YE@r#b8H-!kveK= z6^UqA8OA?duX--%%(eh$y%O9a$&=m74Kuq@-s?uwZ&!Q)9T#NjVa}1g)&cWvfrjTf zCDs8?4?TFm%2yAo0-4L~_U8Ch`>!gWddk(SkW(7;U*lb9EPnfQgMM#M`)O1}v;qBS zIL)}&nko7@E(1951*S}ww(n;n2vhY?=@8Sr_p&s$URvnk?~O)i5|v&}bn`cbrP&)d zmVlxxOrD}bfr>Ig`K!)Ng?;=M9SOMN8#aCw6`g()0jt3*9(3#>woc$S0LEb zyk%MtN^9BF=6kv?tLNQr?RCv0NX$79=iYv;c&S|qqkjbqHY$yJxREw@8vV#|%UX8R znwSJn=-|Unec#u@Xn=WU-SBfWy$aLBtglmAg6*bCHcxz#apM9Hp+`4(y;T~@y9**s zb~Wd1mR|6#d){1MX}Z88+-VF8^Q7hZrwv%}%E$v)G**AXw5Tg;&fTWC`oB!(+Xwu8 z9|=Eb@Rjz&Do*}J8H7V&qhu9R7?)_QC0&OIF3jQe1wXsuae6rKHZtfo6Bc!tC5=KjjslH z8cBsp+{Zs>245Qt7BM&)JOL9=H?0QU?1=sE{lXKz#e$+Kj_6WxiWW3sLR^ccR{&D! zs6h`Y(&A8e;=d=L)L?OQt+6YRY+h;d!hf80HtF_T*HB8~@%pnM)MYDZrW{g_nxqI+ zzMLz<9Js|_A$>35F*kmichUQCT4<_ni;b*%XmWdR814yEazVf5;60IqF>Hl_G=%iTuBJWY6=v@YpmBOJ#@G+AK=ktekQmoryx4FpFAwZ* zGup|Q3>H(=#GPs}Ujqg_hCbU*Bo8Eft9?>+bxdBE z%hm=qm_J(fQBJY47pruV5>qRDu?e3|O-oNs&!kpBrgnAJI&J6v z$pS@rgY^OF8MyZ*Sju+zp5N+C-yOYIiBpVmjRRKZtVi>tvU4Aog*^pKdE z>1*ln>%RXz#>XBG-?BU>%eXds5bK46i~aYQcO3Q{ueFTwtH&22G9ZfgJ$R|>p7YxN zrt%I)jb? literal 0 HcmV?d00001 -- Gitee