HarmonyOS 鸿蒙Next 集成第三方so库何时可不集成libc++_shared.so库
HarmonyOS 鸿蒙Next 集成第三方so库何时可不集成libc++_shared.so库 集成第三方so库的时候,什么时候可以不集成libc++_shared.so这个库呢?这个库有1M多,太大了,但是Harmony文档里面说是纯ArkTs项目又需要集成,如果是通用库,为什么不内置在系统里呢?
可以将需要排除的.so文件路径,配置到模块级build-profile.json5文件中的nativeLib/filter配置下的"excludes"属性中,即:“excludes”:["**/Libc++_shared.so"],即可实现自定义打包。
更多关于HarmonyOS 鸿蒙Next 集成第三方so库何时可不集成libc++_shared.so库的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这个不是排除的问题,是Harmony文档说是要集成的。现在就是不知道是否一定要集成,在什么情况下集成,什么情况下可以不集成,这个文档说的太模糊了,只是说要集成。。。~~~,
libc++_shared.so是系统提供,c运行时依赖的库,必须要集成。
在NDK的{ndk_root}/build/cmake/ohos.toolchain.cmake
文件中,定义了OHOS_STL
变量,可以通过设置"c++_shared"
或者"c++_static"
来控制应用工程中原生库链接C++运行库的方式。
c++_shared
,原生库动态链接libc++_shared.soc++_static
,原生库静态链接libc++_static.a
感谢你的解释。我觉得Harmony写文档的人肯定一点都没有思考应用开发者怎么使用的情况,比如如果是原生库动态链接libc++_shared.so
,每个应用都需要用到的,为什么不内置到系统里面呢?或者是单独只是自己应用使用的,为什么还需要编一个原生库动态链接,直接通过原生库静态链接不行吗?
如果我有10个.so
库,这10个都来自其他第三方,如果每个第三方的.so
都提供了一个libcpp_shared.so
,这个都需要集成到我的应用里面吗?如果需要,应该以哪个为准?如果不需要是因为系统自带还是他们都是通过原生库静态链接编译的?
如果第三方.so
都是原生库静态链接编译的,那么我也可以直接静态链接编译,那文档里面的只是说了需要添加libc++_shared.so
是不是说的不全面?
如果每个第三方.so
都是原生库动态链接编译的,但是集成10个第三方.so
后,只要自己应用使用原生库静态链接编译只生成一个libc++_shared.so
就行,不用管其他的第三方的libc++_shared.so
。那这个时候是不是应用就不能使用原生库静态链接编译,这个好像也没有说明?
这个文档只是推敲下,就又很多解释不明白的地方,真的有点怀疑Harmony的水平,哎。
针对帖子标题“HarmonyOS 鸿蒙Next 集成第三方so库何时可不集成libc++_shared.so库”的问题,以下是专业且简洁的回答:
在HarmonyOS鸿蒙Next系统中,集成第三方so库时是否需要包含libc++_shared.so库,主要取决于第三方so库是否依赖于C++标准库。若第三方so库未使用C++特性或已静态链接了所需的C++库,则无需额外集成libc++_shared.so。
具体而言,若第三方库完全由C语言编写,或已自行处理C++依赖(如通过静态链接方式),则在鸿蒙系统中集成该库时,可省略libc++_shared.so。然而,若第三方库依赖于动态链接的C++标准库(如使用了STL容器、算法等),则必须集成libc++_shared.so以确保库的正常运行。
值得注意的是,随着鸿蒙系统的更新迭代,其对第三方库的兼容性和支持情况可能会有所变化。因此,建议开发者密切关注鸿蒙系统的更新日志和官方文档,以获取最新的集成指南和最佳实践。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。