[M1 Mac] flutter開発メモ
Android StudioでiOS, Android, Chrome一通りデバッグできたけど、
ソースいじってる中で以下のエラーが出た。
Warning: Operand of null-aware operation '??' has type 'Color' which excludes null
原因としてはflutter_date_pickerのバグっぽい
pubspec.yamlを↑の参考サイトの通りにしたら出なくなった。
ソースを色々いじってたら、
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からストレージの容量を増やしたら解消された。
↑のやつが解消されたと思ったら、AssertionErrorが発生した。
'package:flutter/src/material/input_decorator.dart': Failed assertion: line 955 pos 7: 'layoutConstraints.maxWidth < double.infi
原因としてはTextFieldに横幅の指定がなくてダメだったぽい。
TextFieldをFlexibleでラップすることにより解消された。
スマホのローカルに保存したりする処理を書いているときに、
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
Androidエミュレータでデバッグできない場合がある。
Installing ...で停止して、
エミュにカーソル持ってくと応答なし状態になっている状態。
度々起こるので鬱陶しいが、
エミュレータを強制終了して起動し直すことで解消される。
Androidエミュレータがデフォルトで英語設定なので、
日時のデフォルト値が日本時間じゃなかった。
下記を参考にエミュの設定を変更したが、
なぜか日時がずれたままになる。。。
スマホでローカル通知実装したくて色々調べた結果、
Timezoneの初期設定などが必要なことがわかり、
以下を参考に初期化の設定を実装したけど、
何故か以下の処理でぬるぽになるため、タイムゾーン名は直接指定することにした。
final timeZoneName = await FlutterNativeTimezone.getLocalTimezone();
少し形になったのでPlay storeにリリースしてみようと、
以下を参考にリリースビルドを作成しようとしたが、
リリースビルドを実行した際に以下のエラーでビルドできなかった。
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
Androidアプリリリースするために↑の参考サイトから順々に進めたけど、
Google Play Consoleの初期設定タスクめんどすぎぃ。。。
とりあえずプライバシーポリシーをGithub Pagesで作ったり、 ※ こちらのプライバシーポリシーを参考にさせていただきました
アプリアイコンとかリサイズしつつ、
Androidエミュでスマホ、タブレットのキャプチャ撮って何とか公開申請まででけた。
リポジトリ:https://github.com/ki504178/simple_reminder
とりあえず年末年始休暇の目標だったアプリ作成とリリース申請は達成できたので、
あとは審査待ちやけど最初のアプリ申請は結構日数かかるようなので気長に待とう。
App Storeリリースしようとしたら毎年11,800円(税別)を払う必要があるので、
富豪になれたらそっちでも作ってリリースしてみよう。。。
金額設定したやつ足元み過ぎぃ
そのうちリリース記事でも書こうかと思いつつ、
機能少な過ぎ、レイアウトとか適当な雑アプリだから迷いますなぁ。。。
1/9に公開申請して、13日には審査完了してたから、
初期リリースは4日くらいかかるのね。
試しにPlay storeからDLして起動してみたら、
予定ないパターンの画面表示がされなかった。。。なんでや。。。
以下のサイトと↑の画面表示されなかったやつの症状が似ていたため、
参考に修正入れたら解消されたことに今更気づいた。