特定の端末で特定の写真を開くとエラーも出ずすっとアプリが再起動する。
OpenGLの問題で同じようなこともありましたが今回はより条件がわからない。
結果的におそらくメモリ不足であろうという推測に至ったので、ImagePicker
で取得する画像の調整や使えるメモリ量などの備忘録。
最終的にImagePickerが原因で対処療法しかないという内容ですが、これを機に色々調べることが出来たので時系列順に書いていきます。
特定の端末で特定の写真を開くとエラーも出ずすっとアプリが再起動する。
OpenGLの問題で同じようなこともありましたが今回はより条件がわからない。
結果的におそらくメモリ不足であろうという推測に至ったので、ImagePicker
で取得する画像の調整や使えるメモリ量などの備忘録。
最終的にImagePickerが原因で対処療法しかないという内容ですが、これを機に色々調べることが出来たので時系列順に書いていきます。
expoでビルドした「カレイドツクール」は49MBでした。
こんなもんかなと思いましたがassetに大きなファイルも入れていないのにこれまでのUnityアプリよりもサイズが大きい。
Google Play App Signingを有効化してAndroid App Bundleを使用することで容量の削減を試みました。
少し減ればいいなと思っていたらなんと半分になります。
バグフィックスしつつOpenGL仕様のおさらいをする内容です。
発端はReact Native(expo)で作ったAndroidアプリをテストしているときです。
ビルド後、複数端末でテストしたところタブレット端末で急にアプリが落ちました。
クラッシュレポートなど出ず、すっと消えるように。
expo
をインストールしてデバッグするもログにも全く残りません。困った。
どの端末で使える/使えないと知りたかったのでOpenGLのバージョンなどから調べていきます。
React nativeで何かアクションを起こしたときに「成功」のような表示を行いたい。
Toast / トースト(画面に浮き上がって消える)やModal / モーダル(ポップアップ表示)、SnackBar / スナックバー(アプリ領域にバー形式で表示する)を考えます。
react-native: ^0.61.5expo: ~36.0.0色々と機能の限られるReact Native(Expo managed)で画像処理することを考える。
細かい部分はドキュメントを参照するとして使うライブラリや全体的な流れをざっくりとまとめてみます。
I/Oに不満がなければわりと好き放題できる。
Expoでカメラを使う時ライブプレビュー画面にgl-reactでエフェクトをかけたい。
結論を書くとあまりスマートな方法で解決はできなかったです。
AsyncStorage
のような永続データを読み込んで初期値にしたい。
データ読み込みのような非同期処理は基本的に初期値には出来ない。
使っていたコンポーネントの初期値指定タイミングでハマったのでメモ。
ReactNativeで永続化する手段としてAsyncStorageがある。
これは文字列のみの保存で毎回処理を書かないといけないのもあり、人気のあるラッパーの react-native-storage を使うことを考えた(expo managedで済ませたい&導入コストが高そうなのでrealmのことは考えない)。
するとバージョンがらみで多少混乱したので整理してみます。
Expo SDK 35( react native 0.59.8 )同じ機能を作るのにパッケージを調べたりコピペしたりしたくない。
作った機能を切り出ししてプライベートリポジトリで管理してみたいと思います。
React Native (expo) + Open GL で遊んでいると描画したものを保存したくなる。
需要ありそうな気がするんだけど全然情報がないので手探りでやってみます。