HarmonyOS 在模块级build里面添加"arguments": "-v -DOHOS_STL=c++_static",发现har包会比不添加增加了大小

在模块级build里面添加:

"arguments": "-v -DOHOS_STL=c++_static"

本来是要去除libc++_shared.so的,发现打包出来的har包确实去除了libc++_shared,但是其他两个so都增加了大小。

HarmonyOS
2025-01-10 09:55:00
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

推荐参考以下方案:

1、设置构建类型为Release

set(CMAKE_BUILD_TYPE Release) 

2、-s 剥离符号表信息

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -s") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s") 

3、进一步减小大小可以添加Os或Oz编译选项,参考code-generation-options :https://clang.llvm.org/docs/CommandGuide/clang.html#code-generation-options

参考配置代码

"externalNativeOptions": {   "path": "./src/main/cpp/CMakeLists.txt",   "arguments": "-DCMAKE_BUILD_TYPE=Release",   "cppFlags": "-s", } 

然后关于-DOHOS_STL一项,建议根据共享库数量来配置,一个共享库建议配置c++_static静态链接,多个共享库建议配置动态链接,配置静态链接会导致程序中定义多个函数或对象的副本,会破坏C++的单一定义规则,出现不可预知问题。

分享
微博
QQ
微信
回复
2025-01-10 12:22:43
相关问题
HarmonyOS 如何build har
440浏览 • 1回复 待解决
HarmonyOS 日历里面添加日历问题
488浏览 • 1回复 待解决
HarmonyOS worker子线程har生效
319浏览 • 1回复 待解决
HarmonyOS 添加Provision Profile 文件
568浏览 • 1回复 待解决
抓取http请求代理配置添加
1125浏览 • 1回复 待解决
HarmonyOS模块引入har版本问题
390浏览 • 1回复 待解决
ohpm publish 推送har大小的限制
1028浏览 • 1回复 待解决