エモンのブログ(スマホアプリ作成日記)

エモンのブログ(スマホアプリ作成日記)

エモンのブログです。

GooglePlayとAppStoreにアプリをリリースしてます。
「詰将棋パラダイス」4500問無料で公開。
「みんなのしょうぎ」投票型の将棋対局。いずれもソーシャルアプリなので、ソーシャルゲーム作成に興味があるかたは是非ご覧ください。

Amebaでブログを始めよう!
AWSでスナップショットを取って新規でインスタンスを作る
(1)起動中のインスタンスのボリュームでスナップショットを取る
起動中でも大丈夫のようだ。失敗してたら、インスタンスを停止してからにしよう。
(2)スナップショットからAMIを作る
ここでカーネルIDを指定しよう。東京リージョンならaki-176bf516
さらにルートデバイス名をデフォルトの /dev/sda1 から /dev/sda に変更する
(3)AMIからインスタンスを作成
ここでカーネルIDをさっきのものにしよう。
インスタンスの設定>高度な詳細 からカーネルIDを指定できる

カーネルとルートデバイス名を間違えると、インスタンスステータスチェックでひっかかる。

おしまい。
アンドロイドアプリを作っていて
android.view.InflateException: Binary XML file line #XX
というエラーでクラッシュした。しかも毎回でもなく、端末によって出たり出なかったりする。
並行してOut of Memoryも出ていた。

android.view.InflateExceptionはレイアウトxmlの読み込みエラーである。
端末Aでクラッシュし、別の端末Bではクラッシュしていなかったのでxmlの記述の仕方にミスがあるとは思えなかったが、よく見ると異なるxml間で同じIDをつけているViewがあった。これが原因の一端であった。

原因は、
メモリが足りず画面遷移時にレイアウトxmlを読み込みが極端に遅くなると、過去のActivityのxmlを引きずっているのではないか?その際に異なるxml間で同じIDをつけているとクラッシュする。
(だから平行してOut Of Memoryが出ているときにだけこのクラッシュの仕方が起きる)
と考えた。

対策
Out Of Memoryをなくそう。
全てのxmlでIDを違うものにしよう。
...へへ、なんだ当たり前のことじゃないか。

android studioにてRealmを入れたとき
Warning:io.realm.processor.RealmProcessor: can't find referenced class javax.annotation.processing.AbstractProcessor

Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForDebug'.
などが出た。

解決法:app/build.gradleでのbuildTypes debug {...}を消す

原因:不明

考え方:新しいプロジェクトにrealm入れたときは大丈夫だったので、そこと比較してみた。