android4アプリを6(marshmallow)対応に
いろいろ調べたことのメモ書きです。
runtime permissionを対応する。
Android Marshmallow対応!Permissions事始め
http://qiita.com/chihiro/items/314c1a69d2f2e122aad6
googleのサンプルソース
https://github.com/googlesamples/android-RuntimePermissionsBasic/blob/master/Application/src/main/java/com/example/android/basicpermissions/MainActivity.java
snackbar等のandroid5で導入された部品を使うにはいろいろ最新化が必要
snackbar等のandroid5で導入された使うには
com.android.support:designの導入が必要。
- Android Design Support Library を少しだけ触ってみました
関連していろいろ最新化しないといけない。
play-serviceを最新化
com.google.android.gms:play-serviceを最新にしたら
Unable to execute dex: method ID not in [0, 0xffff]: 65536
とでたのでググったら下記のサイトが見つかったけど、これに従っても解決できずでした。
- Androidのメソッド数が65k(65536)を超えた場合にビルドができなくなる
この場合は下記のサイトが正解。
- Google Playサービスを必要なだけAndroidStudioプロジェクトに追加する
app compat対応
app compatの対応が必要なのでandroid support library v7対応が必要。
- http://qiita.com/KeithYokoma/items/33f5d3e0724751941391
- http://googledevjp.blogspot.jp/2014/11/appcompat-v21-lollipop.html
- http://wada811.blogspot.com/2013/08/action-bar-activity-in-support-library-v7-appcompat.html
v7はv4を拡張してるっぽいので。あまり詳しい文献は見つけられずだけどv4(1.6)サポートは必要ないだろうから気にしない。
といっても一部はv4のままのクラスを使うっぽい。両方使っていくスタイルっぽい。
app compat関連で修正した箇所は下記
- FragmentActivity → AppCompatActivityにした。
- ActionBarActivityへの移行と書いてあるがこれも古くて今はAppCompatActivityを使う。
- ThemeをTheme.AppCompatにした。
- ActionBarDrawerToggle を android.support.v7.app のものに変える
- getActionBar → getSupportActionBarにする。getActionBarのままだとnull返してエラーになる。
- ロゴがでない。
actionBar.setLogo(R.drawable.ic_launcher)
をやめて
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setIcon(R.drawable.ic_launcher);
を呼ぶ。
最後に
時代が変わっていくのついてくの大変。