Closed12

[M1 Mac] flutter開発メモ

ki504178ki504178

Android StudioでiOS, Android, Chrome一通りデバッグできたけど、
ソースいじってる中で以下のエラーが出た。
Warning: Operand of null-aware operation '??' has type 'Color' which excludes null

原因としてはflutter_date_pickerのバグっぽい
https://stackoverflow.com/questions/67389956/why-im-getting-this-error-warning-operand-of-null-aware-operation-has-type
https://github.com/Realank/flutter_datetime_picker/pull/236

pubspec.yamlを↑の参考サイトの通りにしたら出なくなった。

ki504178ki504178

ソースを色々いじってたら、
Androidエミュデバッグ時に以下のエラーで実行できなくなった。iOSエミュでは出ない。

Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
Running Gradle task 'assembleDebug'...
✓  Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...
Error: ADB exited with exit code 1
Performing Streamed Install

adb: failed to install /Users/ユーザー名/StudioProjects/sample/build/app/outputs/flutter-apk/app.apk: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]
Error launching application on sdk gphone64 arm64.

原因としてはエミュAVDの容量不足だったので、
Tools > AVD Manager > 対象のAVDのActions > Wipe Dataで不要なデータ削除して解消した。

しばらくしたら再発したので、
Tools > AVD Manager > 対象のAVDのActions > Editからストレージの容量を増やしたら解消された。

ki504178ki504178

↑のやつが解消されたと思ったら、AssertionErrorが発生した。

'package:flutter/src/material/input_decorator.dart': Failed assertion: line 955 pos 7: 'layoutConstraints.maxWidth < double.infi

原因としてはTextFieldに横幅の指定がなくてダメだったぽい。
TextFieldをFlexibleでラップすることにより解消された。

ki504178ki504178

スマホのローカルに保存したりする処理を書いているときに、
SharedPreferenceを利用していたが、
async + awaitを利用したWidgetの生成方法で詰まりかけた。

async + awaitを利用すると、
戻り値が常にFutureになるので、
FutureBuilderを利用して実装すること。
参考:https://qiita.com/ysknsn/items/76c6326c74dc9059ff20
また、Snapshot has neither data nor error対策として、
hasDataによるガード処理は必ず入れておくこと。
参考:https://qiita.com/Moo_Moo_Farm/items/558545add4294afe49c2

ki504178ki504178

Androidエミュレータでデバッグできない場合がある。
Installing ...で停止して、
エミュにカーソル持ってくと応答なし状態になっている状態。
度々起こるので鬱陶しいが、
エミュレータを強制終了して起動し直すことで解消される。

ki504178ki504178

スマホでローカル通知実装したくて色々調べた結果、
Timezoneの初期設定などが必要なことがわかり、
以下を参考に初期化の設定を実装したけど、
https://qiita.com/1d7678174656/items/0c2f233d70e7b678e2f7
何故か以下の処理でぬるぽになるため、タイムゾーン名は直接指定することにした。
final timeZoneName = await FlutterNativeTimezone.getLocalTimezone();

ki504178ki504178

少し形になったのでPlay storeにリリースしてみようと、
以下を参考にリリースビルドを作成しようとしたが、
https://zenn.dev/kazutxt/books/flutter_practice_introduction/viewer/release_googleplay
リリースビルドを実行した際に以下のエラーでビルドできなかった。

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:signReleaseBundle'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Failed to read key key from store "/Users/<ユーザー名>/key.jks": Integrity check failed: java.security.NoSuchAlgorithmException: Algorithm HmacPBESHA256 not available

原因としては証明書生成時に-storetype JKSが必要だったようで、
以下の通り変更してリリースビルドしたら成功した。
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key -storetype JKS
参考:https://note.com/iga34engineer/n/ndbe247c8e23a

ki504178ki504178

Androidアプリリリースするために↑の参考サイトから順々に進めたけど、
Google Play Consoleの初期設定タスクめんどすぎぃ。。。
とりあえずプライバシーポリシーをGithub Pagesで作ったり、 ※ こちらのプライバシーポリシーを参考にさせていただきました
アプリアイコンとかリサイズしつつ、
Androidエミュでスマホ、タブレットのキャプチャ撮って何とか公開申請まででけた。
リポジトリ:https://github.com/ki504178/simple_reminder

とりあえず年末年始休暇の目標だったアプリ作成とリリース申請は達成できたので、
あとは審査待ちやけど最初のアプリ申請は結構日数かかるようなので気長に待とう。

App Storeリリースしようとしたら毎年11,800円(税別)を払う必要があるので、
富豪になれたらそっちでも作ってリリースしてみよう。。。
金額設定したやつ足元み過ぎぃ

ki504178ki504178

そのうちリリース記事でも書こうかと思いつつ、
機能少な過ぎ、レイアウトとか適当な雑アプリだから迷いますなぁ。。。

ki504178ki504178

1/9に公開申請して、13日には審査完了してたから、
初期リリースは4日くらいかかるのね。
試しにPlay storeからDLして起動してみたら、
予定ないパターンの画面表示がされなかった。。。なんでや。。。

このスクラップは2022/03/15にクローズされました