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