【问题标题】:Is it possible to include a .framework in a .framework and how?是否可以在 .framework 中包含 .framework 以及如何包含?
【发布时间】:2014-04-16 15:08:00
【问题描述】:

我想提一下这个问题Include a framework into another one, is it possible? 和这个Include an iOS Framework into another one

还有一个类似于我的目标问题,https://stackoverflow.com/questions/23022211/create-framework-including-plcrashreporter-linked-xcodeproj-source-code-to-the

我想实现同样的目标。不希望开发人员必须链接到两个框架,而只链接到与另一个合并的我的框架。

链接中的两个问题都没有答案。有关该主题的任何更新?

附:我也有源代码,但这不是一个选项,因为它引入了几个问题。

我该怎么做,任何教程、博客、书籍等?

谢谢。

【问题讨论】:

标签: ios objective-c frameworks merge xcode5


【解决方案1】:

是的,可以在 .framework 中包含 .framework。我从来没有这样做过,但我知道 coacoapods 会这样做,而且旧版本的 parse 框架曾经包含 facebookSDK,因此您可以通过下载旧版本的 parse 开始研究 parse 是如何做到的。

这没有回答问题,所以我会在发布答案时将其删除,但至少你有一个信息可以用来进行研究以找到答案:D

在这里尝试使用这个Wenderlich Tutorial 来制作一个静态库。从那里你可以开始玩弄设置。确保您创建的任何框架在主头文件中都有 #import 语句。您知道大多数框架中常见的 -Project/Project.h-,在该 .h 文件中包含所有导入语句。

【讨论】:

  • 是的,它没有,但至少比什么都没有。会尝试找Parse xcode项目,源码公开吗?
  • 当我尝试使用 或``......多么不方便 时,人栈溢出正在删除 Project/Project.h 的东西
  • 我知道这个教程,我也有他们的书,但是这是创建通用静态库的方法,它错过了创建 .framework 的步骤。我将尝试将标题添加到我在设置 -> 构建阶段 -> 复制标题部分中公开的基类中。我还使用这些脚本来生成一个框架github.com/jverkoey/iOS-Framework,还有其他相关资源吗?你有过这样的工作经验吗?
  • 不,我更习惯 git submodules ):
  • 那些 Git 子模块,你的意思是将 .xcodeproj 链接到你的项目并且它包含在你的静态库中?
【解决方案2】:

我找到了创建聚合目标并在构建阶段部分添加以下运行脚本的解决方案。

我将示例中的静态库目标名称命名为 StaticLibraryName。

xcodebuild -project "StaticLibraryName.xcodeproj" -configuration "Release" -target "StaticLibraryName" -sdk iphoneos
xcodebuild -project "StaticLibraryName.xcodeproj" -configuration "Release" -target "StaticLibraryName" -sdk iphonesimulator

mkdir -p "${SRCROOT}/Products/StaticLibraryName.framework"
mkdir -p "${SRCROOT}/Products/StaticLibraryName.framework/Versions"
mkdir -p "${SRCROOT}/Products/StaticLibraryName.framework/Versions/A"
mkdir -p "${SRCROOT}/Products/StaticLibraryName.framework/Versions/A/Resources"
mkdir -p "${SRCROOT}/Products/StaticLibraryName.framework/Versions/A/Headers"

ln -s "A" "${SRCROOT}/Products/StaticLibraryName.framework/Versions/Current"
ln -s "Versions/Current/Headers" "${SRCROOT}/Products/StaticLibraryName.framework/Headers"
ln -s "Versions/Current/Resources" "${SRCROOT}/Products/StaticLibraryName.framework/Resources"
ln -s "Versions/Current/StaticLibraryName" "${SRCROOT}/Products/StaticLibraryName.framework/StaticLibraryName"

cp -R "build/Release-iphoneos/usr/local/include/" "${SRCROOT}/Products/StaticLibraryName.framework/Versions/A/Headers/"

lipo -create "build/Release-iphoneos/libStaticLibraryName.a" "build/Release-iphonesimulator/libStaticLibraryName.a" -output "${SRCROOT}/Products/StaticLibraryName.framework/Versions/A/StaticLibraryName"

libtool -static -o "${SRCROOT}/Products/StaticLibraryName.framework/Versions/A/TheOtherFrameworkName" "${SRCROOT}/Products/StaticLibraryName.framework/Versions/A/TheOtherFrameworkName" "${SRCROOT}/Vendor/TheOtherFrameworkName.framework/Versions/A/TheOtherFrameworkName"

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多