Xcodeのバージョンは4.6
Project作成
[File]→[New]→[Project]を選択
[iOS]→[Framework & Library]→[Cocoa Touch Static Library]
で
[Product Name] "MyLibrary" と入力(名前を決める。***.framework の *** の部分)
[Organization Name] と [Company Identifier] は適当に
[Include Unit Tests] はどちらでも
[Use Automatic Reference Counting] はチェック入れたままで
で
パスはまあ適当に好きな所に作成
Headerディレクトリ作成
Xcode の MyLibrary ディレクトリを右クリックして[Add Files to "MyLibrary"...]をクリック出てきたプロンプトの左下の[New Folder]をクリックして "Headers" と入力して[Create]
右下の[Add]でプロジェクトに追加
ここに公開したい .hファイルを置く(ライブラリを実装したら入れてください)
ターゲット作成
[TARGETS]→[MyLibrary]を選択して、左下の[Add Target]をクリック[iOS]→[Other]→[Aggregate]
で
[Product Name] "MyLibrary-Universal" と入力(何でもいい?)
[Finish]して作成
スキーマ設定変更
[Manage schemes]で MyLibrary の Show のチェックを外す(別に外す必要はないけど、使用しないので非表示にしているだけ)
Info.plist作成
[Supporting Files]を右クリックして[New File...]をクリック[iOS]→[Resource]→[Property List]
で
[Save As:]に "Info.plist" と入力
[Create]して作成
Info.plist を右クリックして[Open As]→[Source Code]
下のコードをコピーして上書き。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleName</key> <string>MyLibrary</string> <key>CFBundleIdentifier</key> <string>com.blogspot.fiahfy.MyLibrary</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleVersion</key> <string>1</string> <key>CFBundleExecutable</key> <string>MyLibrary</string> <key>CFBundleGetInfoString</key> <string>MyLibrary</string> <key>NSPrincipalClass</key> <string></string> <key>CFBundlePackageType</key> <string>FMWK</string> <key>CFBundleIconFile</key> <string></string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>NSHumanReadableCopyright</key> <string>Copyright fiahfy. All rights reserved.</string> <key>CFBundleShortVersionString</key> <string>1.0.0</string> </dict> </plist>
Info.plist を右クリックして[Open As]→[Property List]
で開き直して、
MyLibrary, com.blogspot.fiahfy.MyLibrary, fiahfy
等の部分を自分で設定したものに適宜変更する
スクリプト設定
[TARGETS]→[MyLibrary-Universal]を選択して、[Build Phases]→[Add Build Phase]→[Add Run Script]をクリック
"Type a script or drag a script file from your workspace" の部分に以下のスクリプトをコピペ
# Environment Variables
INFO_PLIST="Info.plist"
FRAMEWORK_NAME=${PROJECT_NAME}
FRAMEWORK_VERSION_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" ${SRCROOT}/${PROJECT_NAME}/${INFO_PLIST})
FRAMEWORK_VERSION=A
FRAMEWORK_BUILD_PATH="${SRCROOT}/build/${CONFIGURATION}-framework"
FRAMEWORK_DIR="${FRAMEWORK_BUILD_PATH}/${FRAMEWORK_NAME}.framework"
FRAMEWORK_PACKAGE_NAME="${FRAMEWORK_NAME}.${FRAMEWORK_VERSION_NUMBER}.zip"
# Clean directories
[ -d "${FRAMEWORK_BUILD_PATH}" ] && rm -rf "${FRAMEWORK_BUILD_PATH}"
# Build simulator and device binaries.
xcodebuild -project ${PROJECT_NAME}.xcodeproj \
-sdk iphonesimulator${IPHONEOS_DEPLOYMENT_TARGET} \
-target "${PROJECT_NAME}" \
-configuration ${CONFIGURATION} clean build
xcodebuild -project ${PROJECT_NAME}.xcodeproj \
-sdk iphoneos${IPHONEOS_DEPLOYMENT_TARGET} \
-target "${PROJECT_NAME}" \
-configuration ${CONFIGURATION} clean build
# create framework directories.
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
# create symlinks
ln -s ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION} ${FRAMEWORK_DIR}/Versions/Current
ln -s ${FRAMEWORK_DIR}/Versions/Current/Headers ${FRAMEWORK_DIR}/Headers
ln -s ${FRAMEWORK_DIR}/Versions/Current/Resources ${FRAMEWORK_DIR}/Resources
ln -s ${FRAMEWORK_DIR}/Versions/Current/${FRAMEWORK_NAME} ${FRAMEWORK_DIR}/${FRAMEWORK_NAME}
# create the universal library
lipo -create \
${SRCROOT}/build/${CONFIGURATION}-iphoneos/lib${FRAMEWORK_NAME}.a \
${SRCROOT}/build/${CONFIGURATION}-iphonesimulator/lib${FRAMEWORK_NAME}.a \
-output "${FRAMEWORK_DIR}/Versions/Current/${FRAMEWORK_NAME}"
# copy files
ls ${SRCROOT}/${PROJECT_NAME}/Headers/*.h > /dev/null 2>&1 && cp ${SRCROOT}/${PROJECT_NAME}/Headers/*.h ${FRAMEWORK_DIR}/Headers/
cp ${SRCROOT}/${PROJECT_NAME}/${INFO_PLIST} ${FRAMEWORK_DIR}/Resources
# create zip
cd ${FRAMEWORK_BUILD_PATH}
zip -ry ${FRAMEWORK_PACKAGE_NAME} $(basename $FRAMEWORK_DIR)
ここまで設定すればビルドは一応通るはず(中身がないので意味のないframeworkですが)
ビルド後は
build/Debug-framework/MyLibrary.framework
が作成されているので、これを使用したいプロジェクトで「Linked Frameworks and Libraries」に追加すればおk
リリースビルドした場合は
build/Release-framework/MyLibrary.framework
で、配布したい時は
build/Release-framework/MyLibrary.1.0.0.zip
を配ればよいって感じかと思います
中身書く前に疲れたっていう
参考
No comments:
Post a Comment