概要
メーカーが独自の仕様を盛っているAndroidにはどこかしらに謎の仕様や不具合が存在します
残念ながらAndroidアプリ開発者はこの事実を受け入れて開発を行わないといけません
本ページには避けなければいけないそれらの謎をまとめています
発見、もしくは思い出したらドンドン追記していきます
編集リクエストもお待ちしております
昔のXperia
bottomRightRadiusとbottomLeftRadiusが逆になっている
昔のXperiaでは android:bottomRightRadius と android:bottomLeftRadius が逆になっています
つまり四つ角の左上・左下にRadiusを設定しようとすると、左上・右下にRadiusが設定されるということです
もちろんその他の端末では正常に左上・左下とRadiusが設定されます
ごく一部のSHARP端末
CharSequenceをStringにCastしようとすると落ちる
ごく一部のSHARP端末ではCharSequenceをStringにCastしようとすると ClassCastException が発生します
toString() でコンバートするようにチームで徹底すると幸せになれます
Galaxy
EditTextが9000文字までしか入れられない
ソース:http://pandora.sblo.jp/article/44144389.html
GalaxySはすべてのViewに自動で9000文字をmaxに設定しています
android:maxLengthをInteger#MAX_VALUEにするか、@nullを入れると無制限にできます
SharedPreferencesが読めなくなる状況が生まれる
アプリのプロセスのユーザIDは使いまわされることと、GalaxySではSharedPreferencesのファイルの実体が通常とは別のところに保存されること、そしてアプリのアンインストール時にそのファイルが削除されないことの合わせ技で、再インストール後に残骸ファイルを作ったユーザIDとアクセスしているアプリのユーザIDが異なる状況が生まれ、ファイルににアクセスができなくなり、結果SharedPreferencesが読み書きできなくなります
WebViewでSIGSEGVする
絵文字関連でバグが有るらしい(ということまではメモリダンプから分かりましたがどうしたら良いか等不明…)。バグを踏むとSIGSEGVでアプリが静かに落ちます
HTC
Gsonが使えない
ソース:https://code.google.com/p/google-gson/issues/detail?id=255
アプリでGsonを使うと、アプリ起動時にクラスローダ上に何故か2つのGsonがロードされ、片方(アプリ側)がVerifyErrorになり、結果Gsonに依存するクラスを使用した時点でクラッシュします
Gsonのパッケージを無理やり変えてやる必要があります
低解像度の端末
View, Drawableにおいてサイズを0.7dp未満に指定すると描画されない
低解像度の端末において View や Drawable で0.7dp未満にサイズを指定すると描画されない端末がある