[iPhoneアプリ開発]自作Frameworkをつくる シリーズ(Xcode 4.6対応)
第1回 プロジェクトを作る
第2回 Property Listを作る
第3回 Command Line Tools
《今回》第4回 Targetを作る
第5回 Workspaceを作る
第6回 Frameworkを完成させる
第7回 リンカフラグ
前回は、“Command Line Tools”をインストールしました。
そこで、今回は“FrameworkをBuildする”ためのTargetを作成します。
1.Targetを追加する
Projectツリーの“Project本体”をクリックします。今回は「LWPdfKit」がそれです。
クリックして少し待つのですが、下図のように表示されます。
下部にある「Add Target」をクリックします。
開いたダイアログで「iOS > Other > Aggregate」を選択し、「Next」をクリックします。
下図のように「LWPdfKit.framework」と名前をつけます。
2.Run Scriptを入力する
上の手順に引き続いて、右下の「Add Build Phase」をクリックして、「Add Run Script」をクリックします。
下図のように、「Run Script」が追加されます。
上図の「Type a script or drag a script file from your workspace」と書かれている欄に下記のコードを入力します。
# ==============================
# 変数設定
# ==============================
INFOPLIST='LWPdfKit/Resources/Info.plist'
FRAMEWORK_NAME=$(/usr/libexec/PlistBuddy -c "Print CFBundleName" ${INFOPLIST})
BUILD_TARGET_NAME=$FRAMEWORK_NAME
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"
# ==============================
# ビルド
# ==============================
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -target ${BUILD_TARGET_NAME} clean
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -target ${BUILD_TARGET_NAME} -sdk iphonesimulator${IPHONEOS_DEPLOYMENT_TARGET}
[ $? != 0 ] && exit 1
xcodebuild -configuration ${FRAMEWORK_BUILD_CONFIGURATION} -target ${BUILD_TARGET_NAME} -sdk iphoneos
[ $? != 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)
注意するのは1カ所です。
INFOPLIST='LWPdfKit/Resources/Info.plist'
を正確に指定することです。
Pathが正しくないとエラーになります。この時のエラーは、“ファイルがありません”ではなく、“CFBundleNameがNullです”というようなものになります。
3.Manage Schemes
Xcodeの上部にある「Scheme(の左の方)」をクリックします。
「Manage Schemes」をクリックします。
「LWPdfKit」のチェックを外します。
代わりに「LWPdfKit.framework」をチェックします。
4.ビルド
「Product > Build」でビルドを実行します。
Finderでフォルダを見てみましょう。
ビルドが成功して、Frameworkが書き出されています。
今回はここまでとします。
これまでの作業で、“スケルトンのFrameworkがビルドされる状態”ができたことになります。
ここに、既存のファイルを移してきて、Frameworkとして切り出すことになります。
何かエラーが発生すれば、以後の作業に問題があるということが明確になります。
次回は、既存のProjectからファイルを移して、目的のFrameworkを作成します。
ロゴスウェア
最新記事 by ロゴスウェア (全て見る)
- Amazon Linux(EC2)と PHPSTORM で Xdebug を行う - 2018年9月26日
- やらないことの合意 - 2018年6月27日
- 卒園アルバムとプロジェクトマネジメント - 2018年3月30日
Comments are closed.