ToB企服应用市场:ToB评测及商务社交产业平台

标题: c++_shared库引入的问题 [打印本页]

作者: 郭卫东    时间: 2024-3-15 02:07
标题: c++_shared库引入的问题
项目组提供了一个AAR文件供下游业务团队集成。
某天,下游团队反馈了一个紧急的问题,最终客户的开发者使用Android Studio打包时,构建工具提示构建失败,原因是存在重复的c++_shared库文件,建议使用pickFirst命令来修复。
最终客户的开发者查阅了一些资料,按照帖子的建议,在项目对应的build.gradle文件中尝试增加pickFirst相关的指令后,问题依然存在,构建仍然失败。
检查我们项目提供的AAR包,确实存在libc++_shared.so文件,据下游团队和最终客户的开发者反馈,他们的项目中依赖的其它AAR,也都存在libc++_shared.so文件。
使用C++编写代码时,通常都会使用到STL,NDK针对各平台,分别提供了动态库和静态库版本,即libc++_shared.so和``libc++_static.a。 安卓官网推荐开发者在build.gradle中通过指定变量ANDROID_STL的值来决定使用动态库还是静态库,即在build.gradle`中,增加类似如下配置:
  1. android {
  2.     ...
  3.     defaultConfig {
  4.         ...
  5.         externalNativeBuild {
  6.             cmake {
  7.                 ...
  8.                 // 使用静态库
  9.                 arguments "-DANDROID_STL=c++_static"
  10.                 // 或者使用动态库
  11.                 arguments "-DANDROID_STL=c++_shared"
  12.                 ...
  13.             }
  14.         }
  15.         ...
  16.     }
  17.     ...
  18. }
复制代码
经过咨询部门内其它产品的同事,确认本问题最简洁有效的修复方案即在构建时,静态链接C++ STL的库文件。
最终的修复操作如下:
经过上述修复操作,重新构建AAR包。检查该AAR文件,未找到libc++_shared.so文件。
相关文件提供给下游团队,并提供给最终客户的开发者集成后,报错现象消失,通过Android Studio打包构建成功,相关功能经验证,正常可用,问题得到解决。
参考资料

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4