2011-10-17 82 views
2

我正尝试在iOS应用程序的XCode 4.2中创建一个框架。在XCode 4.2中为iOS创建框架

我正在开发自己的游戏框架。我通常只在源代码和资源中分发,但由于在我的框架中使用ARC,我必须分发静态库和框架。

我还没有决定我应该使用哪个。 虽然不支持为iOS开发框架,但最好将资源,头文件和Mach-O文件分发到一个目录(与框架相同)。

所以我想用框架来分配我的游戏框架。 我用这个脚本来创建一个框架。 看来我已经成功创建了一个框架并复制了mach-O和标题和资源。 但是这个框架的资源无法添加到我添加了这个框架的应用程序中。

#!/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) 

你知道为什么吗?

有没有更好的方式来分发我的框架?

回答