こんにちは。Flutterエンジニアの id:yukioya-dvs です。 この度、YYC アプリ内ライブ配信コンテンツとしてワイワイライブをリリースしました!
これまでのメッセージでのコミュニケーションではなく、ライブ配信しているユーザーとオンライン上でやりとりができるコンテンツになります。
※iOS/Androidのみ対応、Webサービスでは非対応
ワイワイライブの中身について
今回、ワイワイライブは既存のアプリ YYC の1つの機能として実装しました。 YYC アプリは、今まで Android/iOS 共にフルネイティブで開発を進めてきましたが、今回のワイワイライブではFlutterの Add-to-app を利用して開発しました。
工夫した・つまづいたところ
Git
既存のAndroid/iOSのgit リポジトリが存在してましたが、それとは別に Flutterのコードを新規でリポジトリを作成し、git の submodule として Android/iOSに追加する形で、3つのリポジトリで運用するようにしました。
しかし、このまま作業していくと Android/iOS側のリポジトリ側に差分が発生して、毎回コミットする必要が出てきてしまいます。 実に面倒です。
そこで今回 Flutter側のコードを変更しても、Android/iOS側のリポジトリ側には手を加えず Bitrise上でのみ Flutter リポジトリのHEADを参照するようにしました。
CI(Bitrise)
弊社では CIにBitrise を使用しており、そこでつまづいた2点についてお話します。
1. Androidでreleaseビルドができない
Invalid argument(s): Cannot find executable for /root/flutter-sdk/flutter/bin/cache/artifacts/engine/android-arm-release/linux-x64/gen_snapshot.
今までdebug ビルドはできてたのにreleaseになると、上記のエラーがでてビルドできなくなってしまいました。
Flutter Install Stepをそのまま使うと、 /root/flutter-sdk/flutter/bin/cache/artifacts/engine
配下には common
と linux-x64
しかありません。
そこで、みんな大好き $ flutter doctor
を実行するとあら不思議。
# /root/flutter-sdk/flutter/bin/flutter doctor Downloading android-arm-profile/linux-x64 tools... 1.7s Downloading android-arm-release/linux-x64 tools... 0.8s Downloading android-arm64-profile/linux-x64 tools... 0.8s Downloading android-arm64-release/linux-x64 tools... 0.4s Downloading android-x64-profile/linux-x64 tools... 0.4s Downloading android-x64-release/linux-x64 tools... 0.4s Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel unknown, 1.22.1, on Linux, locale en_US.UTF-8) [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0) [!] Android Studio (not installed) [!] Connected device ! No devices available ! Doctor found issues in 2 categories.
なんていうことでしょう。Androidに必要なtoolsがいっぱいdownloadしてくれるではないですか!
Flutter Install Stepで以下の設定がデフォルトでfalseですが、trueにしておきましょう。
2. iOSでビルドできない
上だと、 .ios/Flutter/engine/Flutter.framework
が存在しません。
そこで、Android/iOS側より前にFlutter 側のコードをビルドすることで上記のFrameworkが生成されます。
$ flutter build ios --no-codesiging
なんていうことでしょう。
最後に
いかがでしたでしょうか。 debugビルドだと何事もなく動いてたのに、releaseビルドになるとなにかしら問題が発生しやすいですね 😇 同じ問題に当たって困ってる一助になれば幸いです。
また、Flutterを導入する上でバイナリサイズがどれくらい増えるかについて公式FAQにありますが、
今回ワイワイライブをAdd-to-appで実装した結果、最終的にiOSは+5MB、Androidは+9MB近く増えました。 なかなかの量ですが、今後はこの資産を生かして、既存コードをFlutterに置き換えてスリムにしていこうと思います!
ワイワイライブも気になった方は、是非触ってみてください! We are hiring! \(^o^)/