使用Xcode 6或更高版本构建的iOS应用程序允许在其中嵌入动态iOS框架。我正在构建一个共享框架,并希望嵌入一个子框架。我怎样才能做到这一点?在框架内嵌入框架(iOS 8+)
注:这是可能和是生产(在CocoaPods为例如,与夫特框架)被使用。
使用Xcode 6或更高版本构建的iOS应用程序允许在其中嵌入动态iOS框架。我正在构建一个共享框架,并希望嵌入一个子框架。我怎样才能做到这一点?在框架内嵌入框架(iOS 8+)
注:这是可能和是生产(在CocoaPods为例如,与夫特框架)被使用。
找到了答案。下面是它是如何做:
粘贴如下:
cd $BUILT_PRODUCTS_DIR
mkdir $PROJECT_NAME.framework/Frameworks &>/dev/null
for framework in *.framework; do
if [ $framework != $PROJECT_NAME.framework ]; then
cp -r $framework $PROJECT_NAME.framework/Frameworks/ &>/dev/null
fi
done
@Vatsal Manot的回答对我来说非常有帮助。我修改了一下,还需要签名复制的嵌入式框架。我的脚本在下面。
cd $BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Frameworks/Custom.framework/Frameworks
for framework in *.framework; do
mv $framework $BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Frameworks/
/usr/bin/codesign --force --sign "iPhone Developer" --preserve-metadata=identifier,entitlements --timestamp=none $BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Frameworks/$framework
done
要创建一个伞架,其中包含一个子框架可以遵循一步一步的指导写下来这里:Umbrella framework
这并不工作,但只是添加了一个框架,嵌入子框架被称为“伞架”,并且受到苹果公司的阻碍。看到这个问题的一个很好的答案,为什么这是这种情况:http://stackoverflow.com/questions/7365578/why-are-umbrella-frameworks-discouraged你应该做的:而不是嵌入子框架,你应该最好分开分发你的框架及其依赖关系。 – 2015-07-14 21:51:02
@JonathanEllis这并不总是理想的。例如我已经使用WebP.framework添加了WebP支持。我不希望我的主应用程序,照片编辑扩展和iMessage扩展都必须包含WebP.framework的单独副本。浪费空间... – jjxtra 2016-10-07 14:20:17