Frameworkについて	
Bitz Co., Ltd. 村上幸雄	

!

2013/12/7
• 村上幸雄	

• @m_yukio	

• ビッツ有限会社

http://www.bitz.co.jp/!
本日の内容	

✤ 

Frameworkについて!

✤ 

SimpleChartについて!

✤ 

SimpleChartのFramework化
Frameworkについて
✤ 

ライブラリとヘッダーファイル、リソース、ドキュメントをパッ
ケージ化できて、利用者の取り扱いが楽になる。!

✤ 

ライブラリが利用している他のライブラリを自身のライブラ
リに含めたくない場合に便利。
最も簡単なフレームワークのディレクトリ構成
	

MyFramework.framework/	
Frameworks
- Versions/Current/Frameworks	
Headers
- Versions/Current/Headers	
MyFramework - Versions/Current/MyFramework	
Resources
- Versions/Current/Resources	
Versions/	
A/	
Frameworks/	
OtherFramework.framework	
Headers/	
MyHeader.h	
MyFramework	
Resources/	
English.lproj/	
Documentation	
InfoPlist.strings	
Info.plist	
Current - A

!
SimpleChartについて
S7GraphView
!

http://code.google.com/p/s7graphview/
!

残念ながらサイトは閉鎖されている
SimpleChart
!

https://github.com/murakami/SimpleChart !

ソースファイルはヘッダを含めて2個のため、ソース
ファイルをプロジェクトに追加して利用を想定。
SimpleChartのFramework化
プロジェクトの生成
プロジェクトのディレクトリ構成
Info.plist
!
フレームワーク用ターゲット Aggregate
!
スクリプトを追加
#!/bin/sh!
!

# ==============================!
# 変数設定!
# ==============================!
#FRAMEWORK_NAME=$(/usr/libexec/PlistBuddy -c Print CFBundleName ${INFOPLIST})!
FRAMEWORK_NAME='SimpleChart'!
INFOPLIST=${FRAMEWORK_NAME}/Resources/Info.plist!
BUILD_TARGET_NAME=${FRAMEWORK_NAME}!
#FRAMEWORK_BUILD_CONFIGURATION= ${CONFIGURATION}!
FRAMEWORK_BUILD_CONFIGURATION=Release!
FRAMEWORK_VERSION_NUMBER=$(/usr/libexec/PlistBuddy -c Print CFBundleShortVersionString ${INFOPLIST})!
FRAMEWORK_VERSION=A!
FRAMEWORK_BUILD_PATH=Framework!
FRAMEWORK_DIR=${FRAMEWORK_BUILD_PATH}/${FRAMEWORK_NAME}.framework!
PACKAGENAME=${FRAMEWORK_NAME}.${FRAMEWORK_VERSION_NUMBER}.zip!
!

# ==============================!
# ビルド!
# ==============================!
echo xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} clean!
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} clean!
echo xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} -sdk iphonesimulator${IPHONEOS_DEPLOYMENT_TARGET}!
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} -sdk iphonesimulator${IPHONEOS_DEPLOYMENT_TARGET}!
[ $? != 0 ]  exit 1!
echo xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} -sdk iphoneos${IPHONEOS_DEPLOYMENT_TARGET}!
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -project ${PROJECT_NAME}.xcodeproj !
-target ${BUILD_TARGET_NAME} -sdk iphoneos${IPHONEOS_DEPLOYMENT_TARGET}!
[ $? != 0 ]  exit 1

!

	

実機分とシミュレータ
分
# ==============================!
# ディレクトリ作成!
# ==============================!
[ -d ${FRAMEWORK_BUILD_PATH} ]  rm -rf ${FRAMEWORK_BUILD_PATH}!
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!
ln -s ${FRAMEWORK_VERSION} ${FRAMEWORK_DIR}/Versions/Current!
ln -s Versions/Current/Headers ${FRAMEWORK_DIR}/Headers!
ln -s Versions/Current/Resources ${FRAMEWORK_DIR}/Resources!
ln -s Versions/Current/${FRAMEWORK_NAME} ${FRAMEWORK_DIR}/${FRAMEWORK_NAME}!
!
# ==============================!
# framework作成!
# ==============================!
lipo -create !
build/${FRAMEWORK_BUILD_CONFIGURATION}-iphoneos/lib${FRAMEWORK_NAME}.a !
build/${FRAMEWORK_BUILD_CONFIGURATION}-iphonesimulator/lib${FRAMEWORK_NAME}.a !
-o ${FRAMEWORK_DIR}/Versions/Current/${FRAMEWORK_NAME}!

	

実機とシミュレータの
統合

!

!

cp -Rf ${BUILD_TARGET_NAME}/Headers/* ${FRAMEWORK_DIR}/Headers/!
cp ${BUILD_TARGET_NAME}/Resources/* ${FRAMEWORK_DIR}/Resources/!
cp ${INFOPLIST} ${FRAMEWORK_DIR}/Resources/!
cd ${FRAMEWORK_BUILD_PATH}!
chmod -fR 777 ${FRAMEWORK_NAME}.framework!
zip -ry ${PACKAGENAME} $(basename $FRAMEWORK_DIR)!

!

# End Of File

	

ヘッダーとリソースの
配置

Frameworkについて