Firebase App DistributionがApp Bundleに対応したらしいので試してみた(失敗)
先日のGoogle I/OでFirebase App DistributionでのAndoirdアプリの配信でApp Bundle形式での配信に対応したとの発表がありました。今まではapkファイル形式での配信に限られていました。
ちなみにApp Bundleへの対応は2021年の8月以降の新規アプリでは必須の対応となっています。すでにapk形式で配信しているアプリはapk形式での配信は継続できます。
android-developers.googleblog.com
これからはApp Bundleが主流になっていくと思われるので、早速試してみます。
Firebaseのプロジェクトを作成する
Firebase App Distributionを使うFirebaseプロジェクトを作成します。
詳細については以前のブログへの参照としてスキップします。
App Bundleファイルを作成する
今回はAndroid Studioで新規プロジェクトをBasic Activityで作成したものをそのまま使います。
App Bundleファイルの作成はGradle taskのbundleタスクを実行すればよいです。
なおAndroid Studio 4.2からGradle TaskがGradleのビューに出なくなってますが、設定で表示するように変更ができます。
ターミナルで実行する場合は以下のコマンドを実行すればよいです。自分でproduct flavorを定義している場合はbunlde${xxxx}
の形になります。
$ ./gradlew bundle
実行するとapp-debug.aab
、app-release.aab
というファイルがapp/build
配下に生成されます。
$ tree app/build/outputs/bundle app/build/outputs/bundle ├── debug │ └── app-debug.aab └── release └── app-release.aab 2 directories, 2 files
Firebase App Distributionにアップロードする
生成したファイルをFirebase App Distributionへアップロードしてみます。
アップロード画面に行くと以下の注意書きが出てきました。
どうやら開発者登録済みのアカウントでのGoogle Playへのリンクが必要なようです。
開発者登録したアカウントで連携すると無事リンクができましたが、下の方のApp Linkのstatusがオンになりません。
ドキュメントをよく読んでみると、以下の記述がありました。
・The app you upload to Google Play and Firebase must share the same package name.
・The app in Google Play must be in a published state. An app is published when its app store listing has been completed and approved, and the app has been distributed to a following Google Play track: internal, closed, production, or open-testing.
日本語版は以下です。
・Google Play と Firebase にアップロードするアプリのパッケージ名が同じであること。
・Google Play のアプリが公開中であること。「公開中」とは、そのアプリのストアの掲載情報が完成して承認されており、かつそのアプリが Google Play のトラック(内部テスト、クローズド テスト、本番環境テスト、オープンテスト)に配布されていることを言います。
どうやらGoogle Playで公開済みのアプリでないと利用できないようです。ぐぬぬー。
残念ながら私は配信しているアプリを持っていないので検証はここまでしかできませんでした。
Google Play周りの機能を利用するのでGoogle Play側でいろいろ整ってる必要があるようです。なので未公開のアプリを開発版でテスト配信に使う場合はまだまだapkでやる必要がありそうです。
もし業務で利用できる機会があったらまた試してみようと思います。
AndroidのCIパイプラインでAndroid StudioのJDKを使う
AndroidのCIパイプラインでgradleタスク実行する場合にはJDKが必要になります。
Android Studio経由でgradleタスク実行する場合はAndroid Studioに内包されたJDKが用いられます。
一方でmacOSのTerminalでプロジェクト作成時にimportされるgralde wrapper経由でgradleタスクを実行すると、利用するJDKはmacOSのものになります。
例えばCIパイプラインをmacOSのCI Runnerで実行する場合、何も設定しないとmacOS側のJDKが用いられてします。macOS側ではJava14、15を入れていた場合にはAndroid Studioで実行した結果と変わってしまう可能性があります。
例えばmacOSのTerminalでの./gradlew --version
の結果とAndroid Studio側での実行結果が微妙に異なっています。
# macOSでの./gradlew --versionの結果 $ ./gradlew --version ------------------------------------------------------------ Gradle 6.7.1 ------------------------------------------------------------ Build time: 2020-11-16 17:09:24 UTC Revision: 2972ff02f3210d2ceed2f1ea880f026acfbab5c0 Kotlin: 1.3.72 Groovy: 2.5.12 Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020 JVM: 11.0.10 (Oracle Corporation 11.0.10+9) OS: Mac OS X 11.3.1 x86_64 # Android StudioのJREでの./gradlew --versionの結果 $ ./gradlew --version ------------------------------------------------------------ Gradle 6.7.1 ------------------------------------------------------------ Build time: 2020-11-16 17:09:24 UTC Revision: 2972ff02f3210d2ceed2f1ea880f026acfbab5c0 Kotlin: 1.3.72 Groovy: 2.5.12 Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020 JVM: 11.0.8 (JetBrains s.r.o 11.0.8+10-b944.6916264) OS: Mac OS X 10.16 x86_64
ちなみにAndroid Studio 4.2からBundleされるJDKが11系に変わったようです。
build.gradleで利用するバージョンをきちんと指定していれば問題ないのですが、気になる場合はAndroid StudioのJDKでgralde タスクを実行するようにしておきましょう。
具体的にはgradleタスクを実行する前にJAVA_HOMEの設定をAndroid Studioが内包しているものに変更すればよいです。
例えばCIパイプラインを実行するシェルスクリプトの最初にJAVA_HOMEを入れ替えるようにするとよいでしょう。
macOSの場合、Android StudioのJDKは/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home
にあります。
!/bin/sh set -e set -x ... JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home" ./gradlew --version ./gradlew lint ./gradlew test ./gradlew connectedAndroidTest
iOSアプリ開発を自習したい人が見るとよさそうなコンテンツをまとめてみた
以前Androidの学習コンテンツについてまとめましたが、今回はそのiOS版について少し見通しがたったのでまとめてみることにします。
macOS端末とiOS端末を用意する
iOSのアプリ開発はXcodeという開発キットを利用します。このXcodeはmacOSでしか動作しないため、iOSアプリ開発ではmacOS端末が必須になります。WindowsやLinuxではXcodeは利用できません。実際に実機端末で動作させたい場合はiOS端末も用意しましょう。
Apple Developer Programへの加入を検討する
手元のiOS端末でデバッグをするだけでなく、TestFlightを利用したり実際にAppStoreでアプリをリリースしたい場合はApple Devleloper Programに加入しましょう。個人向けライセンスであれば税込み12980円で1年単位での更新が必要です。
なお1台のみの実機デバッグだったりApp Storeで公開されているXcodeの利用のみであればApple Developer Programに加入しなくてもよいです。
Apple Developer Program - Apple Developer
メンバーシップの選択 - サポート - Apple Developer
公式のチュートリアルをやる
Androidと同様にiOSも基本的には公式の情報をキャッチアップするのがよいでしょう。
チュートリアルについては以下のリンクにSwiftUI版とUIKit版が公開されています。
https://developer.apple.com/tutorials/app-dev-training
一番最初のXcodeの操作はここを見るとよいでしょう。
https://developer.apple.com/documentation/xcode/creating_an_xcode_project_for_an_app
昨年のWWDCでSwiftUIがリリースされたときに公開されたSwiftUIのチュートリアルもあるので、SwiftUIを使う場合は余裕があれば見ておくとよいでしょう。
https://developer.apple.com/tutorials/swiftui
WWDCの動画を見る
Appleは毎年の開発者向けイベントであるWWDCの動画をアーカイブとして公開しています。新しい技術やアップデート情報はこちらからキャッチアップするとよいでしょう。
Design and Development Videos - Apple Developer
動画内で触れているサンプルコードについても公開されています。
Sample Code - WWDC20 - Apple Developer
WWDC 2020ではSwiftUIのサンプルコードとしてFrutaが公開されていました。
https://developer.apple.com/documentation/swiftui/fruta_building_a_feature-rich_app_with_swiftui
役立つ公式のリンク集
Appleの公式ドキュメントはなかなかたどり着くのが手間なのでせめて入り口だけでもブックマークしておくとよいでしょう。
- Apple Developer Documentation
- Xcode
- Swift
- TestFlight
- App Store Connect
- Help
- App Store Review Guidelines
- Identity Guidelines
- Support Articles
iBooksで公開されている情報
Apple EducationとしてiBooksで学習用のコンテンツも公開されています。書籍なので情報は少し古めです。
books.apple.com非公式の参考となるコンテンツ
スタンフォードの講義やUdemyの動画で学習するのもよいでしょう。mixiのコンテンツが長らく有名でしたがメンテナンスされてないようです。最近ゆめみさんがコンテツを公開したのでそちらも見てみるとよさそうです。
Xcodeのバージョンと各OSの対応表はここを見るとひと目で分かるのでよく使っています。
mixi groupの2021年新卒研修の資料が公開(2021/5/14追記)
mixiのSwiftUIの新卒向け研修のコンテンツが公開されていました。 SwiftUIの説明からCombineやXCTest、MVVMアーキテクチャについても触れられていてよいと思いました。
Peaksや技術書展の本
Peaksで公開されている設計本やテストの本も参考になるので、興味がある方は手元においておくとよいでしょう。紹介リンク付きのツイートを載せておきます。
設計を知る、パターンを知る、導入する「iOSアプリ設計パターン入門」が一般販売開始! https://t.co/yP18FyigjP #iOS_architecture
— takamii228 (@takamii228) 2021年4月25日
iOSテストのバイブル「iOSテスト全書」が一般販売開始! https://t.co/2B3Gb1FVKf #ios_testing
— takamii228 (@takamii228) 2021年4月25日
技術書展でもiOS関連の書籍を執筆している人がいるので、チュートリアルが物足りない方は合わせて見てみるとよさそうです。
RSS登録すべき情報
Appleは定期的に開発者向けにニュースで周知をしているので最新情報をキャッチアップするために以下をRSS登録しておくとよいでしょう。
OSやツールのアップデート情報は以下でRSS取得ができます。
Apple全体のニュースはこちらのようです。
まとめ
以上がiOS関連の技術をキャッチアップするときに見るべき情報一覧になります。
GWにiOSアプリをやっていくぞ、という方の参考になればと思います。
私はまずはチュートリアルを完走しようと思います。