简体   繁体   English

在XCode 4.2中为iOS创建框架

[英]Creating a framework for iOS in XCode 4.2

I am trying to create a framework in XCode 4.2 for iOS applications. 我正在尝试在XCode 4.2中为iOS应用程序创建一个框架。

I was developing my own Game framework. 我正在开发自己的游戏框架。 I was usually distributing only in source codes and resources but, due to using ARC in my framework, I had to distribute in static library and framework. 我通常只在源代码和资源中进行分发,但是由于在我的框架中使用ARC,所以我不得不在静态库和框架中进行分发。

I haven't decided which shall I use yet. 我还没有决定要使用哪个。 Although developing framework for iOS is not a supported way, It's better that distributing resources and headers and Mach-O file in one directory(same as framework). 尽管不支持为iOS开发框架,但是最好将资源和标头以及Mach-O文件分布在一个目录中(与框架相同)。

So I want to use framework to distribute my Game framework. 因此,我想使用框架来分发我的游戏框架。 I used this script to create a Framework. 我使用此脚本创建了一个框架。 It seems that I have success creating a framework and copy mach-O and headers and resources. 看来我已经成功创建了一个框架并复制了mach-O以及标头和资源。 But this framework's resources couldn't be added to the application which I added this framework. 但是无法将此框架的资源添加到我添加了此框架的应用程序中。

#!/bin/bash 

set -o errexit
set -o nounset

# Environment Variables
PANKIA_DIR="${SRCROOT}/Pankia"
PANKIA_CORE_DIR="${PANKIA_DIR}/Core"
PANKIA_PLATFORM_DIR="${PANKIA_DIR}/Platform"

FRAMEWORK_NAME="Pankia"
FRAMEWORK_VERSION=A
FRAMEWORK_VERSION_NUMBER=1.0
FRAMEWORK_BUILD_PATH="${SRCROOT}/build/${CONFIGURATION}-framework"
FRAMEWORK_DIR="${FRAMEWORK_BUILD_PATH}/${FRAMEWORK_NAME}.framework"
FRAMEWORK_PACKAGE_NAME="${FRAMEWORK_NAME}.${FRAMEWORK_VERSION_NUMBER}.zip"
FRAMEWORK_TARGET_NAME="libPankia"

# Clean directories
rm -rf "${FRAMEWORK_BUILD_PATH}"

# Build simulator and device binaries.
xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphonesimulator${IPHONEOS_DEPLOYMENT_TARGET} -target ${FRAMEWORK_TARGET_NAME} -configuration ${CONFIGURATION} clean build
xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphoneos${IPHONEOS_DEPLOYMENT_TARGET} -target ${FRAMEWORK_TARGET_NAME} -configuration ${CONFIGURATION} clean build

# create framework directories.
mkdir -p ${FRAMEWORK_DIR}
mkdir -p ${FRAMEWORK_DIR}/Versions
mkdir -p ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION}
mkdir -p ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION}/Resources
mkdir -p ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION}/Headers

# create symlinks
ln -s ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION} ${FRAMEWORK_DIR}/Versions/Current
ln -s ${FRAMEWORK_DIR}/Versions/Current/Headers ${FRAMEWORK_DIR}/Headers
ln -s ${FRAMEWORK_DIR}/Versions/Current/Resources ${FRAMEWORK_DIR}/Resources
ln -s ${FRAMEWORK_DIR}/Versions/Current/${FRAMEWORK_NAME} ${FRAMEWORK_DIR}/${FRAMEWORK_NAME}

# create the universal library
lipo ${SRCROOT}/build/${CONFIGURATION}-iphoneos/lib${FRAMEWORK_TARGET_NAME}.a ${SRCROOT}/build/${CONFIGURATION}-iphonesimulator/lib${FRAMEWORK_TARGET_NAME}.a -create -output "${FRAMEWORK_DIR}/Versions/Current/${FRAMEWORK_NAME}"

# copy files
cp ${PANKIA_PLATFORM_DIR}/GameInterface/Pankia.h ${FRAMEWORK_DIR}/Headers/
cp ${PANKIA_PLATFORM_DIR}/Models/Native/*.h ${FRAMEWORK_DIR}/Headers/
cp ${PANKIA_CORE_DIR}/Models/Native/*.h ${FRAMEWORK_DIR}/Headers/

cp -r ${PANKIA_PLATFORM_DIR}/Resources ${FRAMEWORK_DIR}/Resources/
cp -r ${PANKIA_PLATFORM_DIR}/RetinaResources ${FRAMEWORK_DIR}/Resources/
cp ${SRCROOT}/libPankia/Info.plist ${FRAMEWORK_DIR}/Resources/

# cp ${SRCROOT}/build/${CONFIGURATION}-iphoneos/usr/local/include/*.h ${FRAMEWORK_DIR}/Headers/

# cp Info.plist ${FRAMEWORK_DIR}/Resources

# zip (配布用に TestFramework.framework ディレクトリをZIP圧縮するだけなので、配布しないなら以下はコメントアウトしてもよい)
# cd ${FRAMEWORK_BUILD_PATH}
# zip -ry ${FRAMEWORK_PACKAGE_NAME} $(basename $FRAMEWORK_DIR)

Do you know why? 你知道为什么吗?

And is there any better way to distribute my framework? 还有分发我的框架的更好方法吗?

Here is a helpful tutorial on creating frameworks. 这是有关创建框架的有用教程。 I have used it and have been able to package resources with the framework. 我已经使用过它,并且能够使用框架打包资源。

http://codefriend.blogspot.com/2011/09/creating-ios-framework-with-xcode4.html http://codefriend.blogspot.com/2011/09/creating-ios-framework-with-xcode4.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM