Frameworkについて
-
Upload
yukio-murakami -
Category
Technology
-
view
130 -
download
6
description
Transcript of Frameworkについて
2013/12/7!
Frameworkについて Bitz Co., Ltd. 村上幸雄
• 村上幸雄 • @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!
実機とシミュレータの統合
ヘッダーとリソースの配置