首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在静态库中包括第三方库(例如: AFNetworking)

在静态库中包括第三方库(例如: AFNetworking)
EN

Stack Overflow用户
提问于 2013-10-18 05:57:48
回答 2查看 2.2K关注 0票数 3

是否有可能在静态库中包括第三方图书馆?AFNetworking可以包含在静态库中吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-04 16:33:31

对您的问题的直接回答是肯定的,如果第三方库公开了公共API (供您参考的一组标头),则绝对可以包括它们。对于AFNetworking,他们通过提供Cocoapods脚本使其变得如此简单,这样您的项目就可以引用它。

但是请注意,当您发布包含AFNetwork的静态库时,如果静态库用户决定在自己的代码中使用AFNetwork,则Obj编译器会抱怨重复的符号,他将无法使用您的静态库构建项目。

我的建议

我的建议是:参考上面@Amar共享的链接。如果您希望与其他开发人员或社区共享这些库,那么在静态库中不要包含任何第三方库是非常重要的。始终考虑对其他第三方静态库使用引用,而不是包含它们,例如,使用Cocoapods。

票数 3
EN

Stack Overflow用户

发布于 2014-01-29 09:16:58

为了完整起见,因为我认为前面的答案/注释提供了很好的建议,这是一个自定义脚本,用于将第三方库包含到构建的输出库中。

代码语言:javascript
复制
set -e
set +u

TGT_FULLPATH="${BUILT_PRODUCTS_DIR}/${EXECUTABLE_NAME}"
TMP_FULLPATH="${BUILT_PRODUCTS_DIR}/original_${EXECUTABLE_NAME}"
THIRPARTY_FULLPATH=...
ARCHSPECIFIC_THIRDPARTY="${BUILT_PRODUCTS_DIR}/thinThirdparty"

# What's the architecture for the lib we just built?
LIPO_ARCH=$(lipo -info  ${TGT_FULLPATH} | awk 'END{ print $NF }')

# Create a thirdparty lib only for the current architecture
lipo -thin ${LIPO_ARCH} ${THIRPARTY_FULLPATH} -output ${ARCHSPECIFIC_THIRDPARTY}

# Join the two libaries
mv ${TGT_FULLPATH} ${TMP_FULLPATH}
libtool -static -o ${TGT_FULLPATH} ${TMP_FULLPATH} ${ARCHSPECIFIC_THIRDPARTY} 2>&1  >/dev/null 

# Remove the temp artifacts
rm ${TMP_FULLPATH}
rm ${ARCHSPECIFIC_THIRDPARTY}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19442593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档