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

	

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

More Related Content

PDF
リソースモデリングパターンの提案 #sendagayarb
PPTX
D8でコンテンツをレイアウトする手法について
PDF
Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」
PPTX
Drupalテーマとthemingの基礎
PPTX
CMSMix Sapporo vol.3 (Drupal の回)
PPTX
Drupal勉強会@さっぽろ/おたる ご紹介
PPTX
Defining and creating quality webinars mitchell levy - marketing camp
PDF
SVGorumMktgSIG Collaborative Economy Jeremiah Owyang
リソースモデリングパターンの提案 #sendagayarb
D8でコンテンツをレイアウトする手法について
Drupal、group、quiz、webformを利用したeラーニングサイト「sqt」
Drupalテーマとthemingの基礎
CMSMix Sapporo vol.3 (Drupal の回)
Drupal勉強会@さっぽろ/おたる ご紹介
Defining and creating quality webinars mitchell levy - marketing camp
SVGorumMktgSIG Collaborative Economy Jeremiah Owyang

More from 幸雄 村上 (20)

PDF
アプリケーション識別子.pdf
PDF
圧縮ネイティブ・ライブラリについて.pdf
PDF
分散環境におけるジャストインタイム設定の試み
PDF
SwiftのOptionalを理解する
PDF
え!それって参照渡し?
PDF
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
PDF
AppleScriptなど
PDF
MojaveのDark Mode
PDF
AppleScriptとは何ぞや
PDF
Web API 通信の符号化について
PPTX
Master-Detail App を実装する
PPTX
SwiftのOptionalを理解する
PPTX
Getting a packet trace
PPTX
The Bash in Tokyo : AppKitとUIKit
PPTX
PPTX
Swiftでブロックチェーンを実装する
PPTX
ゲームの企画書づくりに挑戦
PPTX
IBM Watson Services for Core ML
PPTX
独自Documentクラス
PPTX
独自Documentクラス
アプリケーション識別子.pdf
圧縮ネイティブ・ライブラリについて.pdf
分散環境におけるジャストインタイム設定の試み
SwiftのOptionalを理解する
え!それって参照渡し?
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
AppleScriptなど
MojaveのDark Mode
AppleScriptとは何ぞや
Web API 通信の符号化について
Master-Detail App を実装する
SwiftのOptionalを理解する
Getting a packet trace
The Bash in Tokyo : AppKitとUIKit
Swiftでブロックチェーンを実装する
ゲームの企画書づくりに挑戦
IBM Watson Services for Core ML
独自Documentクラス
独自Documentクラス
Ad

Frameworkについて