読者です 読者をやめる 読者になる 読者になる

5.X時代の右メニュー対応に関してのメモ

as2.0p色々と触っていてAndroidManifest.xmlとかが
勝手に書き換わったりしててハマったのでメモ

  • ProjectSettingでの変更保存
    • build.gradleが一から書き換えられるのでカスタムタスク書いてると消える事が多々。。
    • apply from:XXX で外出ししていないとすごく危険><
  • InstantRun
    • これQittaのInstantRunの話以上に色んなファイルが書き換わってるので注意が必要*1
    • Settingのupdate project実行時に書き換わった
  • 一時期はGradleSync
    • 最新は書き換わらなくなったが。。。
    • 独自っぽいコードは外出しして appry from:XXX にしましょう良くいわれますよね。。

AS運用は危険だな−とか凄く思う。
そもそもaarで運用することでminSDKとか権限とか勝手にadd/update されるのもなーとか

  • build.gradle
applicationVariants.all { variant ->
        variant.processManifest.enabled = false
}

でManifest.xml自体マージしないようにするとか*2

  • AndroidManifest.xml
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />

の削除設定をMain側に追加しろとか 苦しい対応が多いなーとよく感じたりしてる今日このごろ


で本題。
5系の端末で右メニューをサポートする場合、下記の対応が必要。

  • AndroidManifest.xml
<manifest 
xmlns:android="http://schemas.android.com/apk/res/android"
package="sample.basic"
android:versionCode="1"
android:versionName="1.0"
xmlns:tools="http://schemas.android.com/tools"> //☆ココ追加

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" tools:ignore="OldTargetApi" />//☆tools:ignore指定


が関連の話

targetSDKVersionって何処にも説明が書いてなくて

  • IDEで使ってるだけの値
    • 事実ASではレイアウトプレビューの初期値に使ってたりするが。。

みたいな解説が出てるんですけど
android:targetSdkVersionを2系以上に上げてしまうと
ソフトウェア右メニューが出てこなくなる。

しかもこれPrefrenceかどっかに設定書き込むみたいで

  • 一度android:targetSdkVersionを上げたapkをインストール
    • ソフトウェア右メニューが出なくなる
  • targetSDKVersion=8の設定で作りなおしたapkをupdateしても右メニュー復活しない

一度uninstallで消して、新規に入れなおしたものは表示されるのですが。。
これ気づかなくてリリースしてしまった場合すごく怖い
ですよね。

個人データなんか普通端末内にもってるからな−
バックアップ・リストア対応ってあれ凄い不安定ですよね実は。。。



最近だと
Zenfone2とかソフトウェアキーの実装でない機種もポロポロでている
何らかのハードキーで代替している感じらしい *3

  • Zenfone2
    • 履歴長押し
  • 他の機種
    • 履歴ダブルタップ
    • 戻るキー長押し
    • 戻るキーダブルタップ

テストとかで嵌りそうなのでメモっておく

*1:でも結局Winではまともに動かなかったけど・・・<苦笑

*2:G社さん的には非推奨らしいけど、この対応。。

*3:これだと右メニュー使えないと思ってるユーザさんそれなりに多そうだよな。。とか思ったりも。。