LoginSignup
0
0

More than 5 years have passed since last update.

iOSのfwをつくってみる

Posted at

目的

以前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

こちらを使えば、リリースビルドも解決する?まだ詳しく検証してない
→検証した。うまくいった。とくに難しくなかった

問題発生

コンビニでは取り込めたけど、ショットでは取り込めない(開発ビルドはできるけどリリースビルドは作れない。)

以下を参考にした

embeded frameworkは使わず、以下の方法を取った
https://qiita.com/wai21/items/3a2a7a7170ab9c5c1952#%EF%BC%96%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%A8%E5%AE%9F%E6%A9%9F%E3%81%AE%E5%85%B1%E9%80%9A%E3%81%AE%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B

ちゃんと確認してないけど、以下でも良いと思う。
https://medium.com/allatoneplace/writing-custom-universal-framework-in-xcode-9-and-ios-11-7a63a2ce024a

大変疲れた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0