Framework作成-Swiftでの使用メモ(Xcode6)
忘れないようにメモ。。。
1.xcodeのFile -> New -> Framework & Library -> Cocoa Touch Framework
で、テンプレート作成
(とりあえず、swiftでは、どうするかわからんのでobjective-cで作成)
3.APIを公開するヘッダをFramework用のヘッダにインクルードする。
※""じゃなく、<>の方にする事。。。
4.公開するヘッダのTargetをPublicにする。
(ヘッダ内でincludeしているヘッダもPublicにする事!!!)
(FugaFugaObjを追加)
Publicにする。
includeしてるヘッダも同様。。。
(とりあえず、おまじない。。。)
※Dynamic Library Install Baseが何も入ってなかったら、@rpathを設定。。。
6.Universal化する為、ターゲット追加
ターゲット名を「プロジェクト名」+「-Universal」とする。
メニューから、Product -> Scheme -> Edit Scheme... を選択
Univesal化の為に、Build Phasesに Runscriptを編集
ないので、+を押して追加(New Run Scriptを選択)
親切な人のスクリプトを設定
https://gist.github.com/syshen/c24d127e1adc2783e0e7
######################
# Options
######################
REVEAL_ARCHIVE_IN_FINDER=false
FRAMEWORK_NAME="${PROJECT_NAME}"
SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework"
DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework"
UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal"
FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework"
######################
# Build Frameworks
######################
xcodebuild -workspace ${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator 2>&1
xcodebuild -workspace ${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos 2>&1
######################
# Create directory for universal
######################
rm -rf "${UNIVERSAL_LIBRARY_DIR}"
mkdir "${UNIVERSAL_LIBRARY_DIR}"
mkdir "${FRAMEWORK}"
######################
# Copy files Framework
######################
cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK}"
######################
# Make an universal binary
######################
lipo "${SIMULATOR_LIBRARY_PATH}/${FRAMEWORK_NAME}" "${DEVICE_LIBRARY_PATH}/${FRAMEWORK_NAME}" -create -output "${FRAMEWORK}/${FRAMEWORK_NAME}" | echo
# For Swift framework, Swiftmodule needs to be copied in the universal framework
if [ -d "${SIMULATOR_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/" ]; then
cp -f ${SIMULATOR_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/* "${FRAMEWORK}/Modules/${FRAMEWORK_NAME}.swiftmodule/" | echo
fi
if [ -d "${DEVICE_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/" ]; then
cp -f ${DEVICE_LIBRARY_PATH}/Modules/${FRAMEWORK_NAME}.swiftmodule/* "${FRAMEWORK}/Modules/${FRAMEWORK_NAME}.swiftmodule/" | echo
fi
######################
# On Release, copy the result to release directory
######################
OUTPUT_DIR="${PROJECT_DIR}/Output/${FRAMEWORK_NAME}-${CONFIGURATION}-iphoneuniversal/"
rm -rf "$OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR"
cp -r "${FRAMEWORK}" "$OUTPUT_DIR"
if [ ${REVEAL_ARCHIVE_IN_FINDER} = true ]; then
open "${OUTPUT_DIR}/"
fi
7.ビルド
クリーンして、
シミュレーターと、実機、両方でビルドする。
9.プロジェクト上にframeworkを適当にフォルダ掘ってコピー
10.swiftで使えるようにヘッダ作成
ヘッダ名:プロジェクト名+「-Bridging-Header.h」
(TkTkApp-Bridging-Header.hを作成)
作成したヘッダにFrameworkのヘッダをインクルードする。
※共通ヘッダをインクルード
11.Build Phasesを確認
Link Binary With Librariesを確認
入ってると思う。。。
Copy Filesは、ないと思うので追加する。
(メニューのEditor -> Add Build Phases は非活性なので、Build Phasesを開いて
+ボタンを押す)
※DestinationをFrameworksにする事!!!!
11.FrameworkのAPIを使ってみる
共通ヘッダをimportして、API呼び出し
動いた。。。
同じく動いてるので、Univasal化されている。。。
TODO
・空容量がないのでXcodeを上げれない。。。
次のXcodeでやり方かわってくるかどうか。。。
・univarsalを最初から作りたいが、xcodeがバージョンあがったら、
そうなってるかどうか。。。(多分なってない)
Author And Source
この問題について(Framework作成-Swiftでの使用メモ(Xcode6)), 我々は、より多くの情報をここで見つけました https://qiita.com/cyclon2joker/items/b983940c16cfc5896849著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .