2014-09-22 167 views
4

很多iOS的第三方框架是围绕定制框架打造的,也就是说你要在你的依赖应用集成。 新的IOS嵌入式框架,只有在iOS8上工作(参见我的文章here)之前,有用于两个优雅的解决方案(如果你不选择为一个时间问题和知识创造脚本)Xcode的6和iOS静态框架

iOS Universal Framework通过kstenerud

iOS Framework通过jverkoey

他们都工作,必须创建一个.framework分配为您的客户解决方案时是很好的解决方案。

Xcode6一出来,我就无法第一次工作,因为编译错误不同(详见here)。

所以我搬到了iOS的框架,并与我吃惊的是它仍然适用于XCode6。

所以这个建议是针对与iOS的通用框架挣扎,没有找到任何解决方案,使它适用于Xcode6的人。

由于如1所示,如果您的部署目标> = iOS7,这是目前最佳的定制解决方案,并且iOS通用框架的修补程序也可以帮助您接受嵌入式框架。 所有我已经在上面发现问题5

+1

我使用相同。让我明天检查我的。 – bllakjakk 2014-09-22 16:19:09

+0

目前还不清楚你的*问题*是什么。但是,动态框架可以由在较早版本的iOS上运行的应用程序加载。 http://quellish.tumblr.com/post/103107323582/dynamic-frameworks-on-ios-7 – quellish 2014-12-07 19:14:05

回答

4

这一步描绘在Xcode 6

开放的Xcode创建静态可可触摸框架,并通过单击文件\新建\项目创建一个新的静态框架项目并选择iOS \ Framework和Library \ Cocoa Touch框架。

您可以提供框架项目名称和保存到一个空目录。

自动为我们的框架创建标头。在这头,你应该使用之类的语句#进口

静态框架项目是由头文件和执行文件,这些文件被编译,使框架本身的导入我们的框架中所有的公共报头。您可以使用Cocoa Touch类创建课程。

验证您的生成设置转到您的项目的生成设置目标并确认或将“体系结构”设置为“标准体系结构”。这些是arm64和armv7,可能是默认设置。除此之外,我们还需要设置几个架构,因为iOS应用程序需要在许多不同的架构上运行。 armv7:用于最早的iOS 7支持设备armv7s:用于iPhone 5和5C arm64:用于iPhone 5S中的64位ARM处理器i386:用于32位模拟器x86_64:用于64位处理器,位模拟器

这意味着版本是一样快,因为他们可以。当您存档应用程序或在发布模式下构建时,Xcode将为所有ARM体系结构构建,从而允许应用程序在大多数设备上运行。

Mach-O的设置:静态库:

最终建成项目:

的总目标,通过使用脂的设备和模拟器框架结合起来,你可以在下面的脚本添加到您的总目标。

FRAMEWORK_NAME="${PROJECT_NAME}" 


SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework" 

DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework" 

UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal" 

FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework" 

xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphonesimulator -arch i386 -arch x86_64 -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator | echo 

xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphoneos -arch arm64 -arch armv7 -arch armv7s -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos | echo 


rm -rf "${UNIVERSAL_LIBRARY_DIR}" 

mkdir "${UNIVERSAL_LIBRARY_DIR}" 

mkdir "${FRAMEWORK}" 


cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK}" 


lipo "${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}""${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}" -create -output"${FRAMEWORK}/${FRAMEWORK_NAME}" | echo 
+0

好帖子!非常感谢! – e2l3n 2015-12-21 10:37:39

0

可以在iOS的7使用的Xcode 6通用框架, - 见我的回答here