目的
以前Carthageで取り込む前提でiOSのフレームワークを作ったが、毎回別PJでビルドするのが、めんどくさくなり、運用の途中で、断念した。
が、アプリの数が増えてくるとカブる部分も出てくるので、なんか他にいい方法がないか再度模索してみた。
そもそも
iOSって、だいたい
* gitのsubmodule
* cocoapods
* carthage
* その他
みたいに外部ライブラリを使う方法がある。
これの、
* gitのsubmodule
は試したことがなかった。社内でlaravelの開発で使われだして、
* 結構使い勝手が良いぞ
* アプリそのものを作りながら進化させられるので、これは効果的ではないか?
という結論に至ったので、そちらで対応する方向に。
結論から言うと
うまく行った。これなら、FWのビルドも、かなり楽!
サンプルPJ
https://github.com/shiratsu/CustomPresentDismissAnim
https://github.com/shiratsu/TestFramework
まずは、
TestFrameworkをsubmouleとして、CustomPresentDismissAnim
に取り込む。
git submodule add https://github.com/shiratsu/TestFramework.git
xcodeのTestFrameworkのPJを追加
TestFramework.xcodeprojをCustomPresentDismissAnimに追加
Embedded Binariesにframeworkを追加
xcodeprojを追加すると、選択肢に出てくるはず。
ここにあると、リリースビルドとか気にしなくて良くなる。
追加する際にFWはGeneric iOS Deviceでビルドしておくこと
submoduleを含むプロジェクトのclone
barを含んだfooプロジェクトをcloneするには以下のコマンドを打ちます。
$ git clone https://github.com/s-nlf-fh/foo.git
$ cd foo
$ git submodule update --remote
submoduleの開発
branchを作ったほうが良い。そうしないとpush出来ない。
import文を書く
import TestFramework
注意点
Framework側のメソッドがpublic( or open、使う側でoverrideさせないなら、public)にしてください。プロジェクト外からアクセスするのに必要です。
あと、backlogからはsubmodule使ってるようにはなぜか見えない。
課題(というか今後どこかでぶつかりそうなこと)
リリース時のビルド作るときどうするかは検証できてない
embeded framework
こちらを使えば、リリースビルドも解決する?まだ詳しく検証してない
→検証した。うまくいった。とくに難しくなかった
問題発生
コンビニでは取り込めたけど、ショットでは取り込めない(開発ビルドはできるけどリリースビルドは作れない。)
以下を参考にした
ちゃんと確認してないけど、以下でも良いと思う。
https://medium.com/allatoneplace/writing-custom-universal-framework-in-xcode-9-and-ios-11-7a63a2ce024a
大変疲れた。