Frameworkについて

17
2013/12/7 Frameworkについて Bitz Co., Ltd. 村上幸雄

description

関東第63回Cocoa勉強会 iOS向けのフレームワーク化に挑戦

Transcript of Frameworkについて

Page 1: Frameworkについて

2013/12/7!

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

Page 2: Frameworkについて

• 村上幸雄 • @m_yukio • ビッツ有限会社���http://www.bitz.co.jp/!

Page 3: Frameworkについて

本日の内容

✤  Frameworkについて!

✤  SimpleChartについて!

✤  SimpleChartのFramework化

Page 4: Frameworkについて

Frameworkについて

Page 5: Frameworkについて

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

✤  ライブラリが利用している他のライブラリを自身のライブラリに含めたくない場合に便利。

Page 6: 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!

Page 7: Frameworkについて

SimpleChartについて

Page 8: Frameworkについて

S7GraphView!

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

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

Page 9: Frameworkについて

SimpleChart!

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

ソースファイルはヘッダを含めて2個のため、ソースファイルをプロジェクトに追加して利用を想定。

Page 10: Frameworkについて

SimpleChartのFramework化

Page 11: Frameworkについて

プロジェクトの生成

Page 12: Frameworkについて

プロジェクトのディレクトリ構成

Page 13: Frameworkについて

Info.plist!

Page 14: Frameworkについて

フレームワーク用ターゲット Aggregate!

Page 15: Frameworkについて

スクリプトを追加

Page 16: Frameworkについて

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

実機分とシミュレータ分

Page 17: Frameworkについて

# ==============================!# ディレクトリ作成!# ==============================![ -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!

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

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