スポンサーリンク

2016年7月22日金曜日

Android アプリに Google アナリティクスを導入したら Wake Lock パーミッションが付いてしまった

Android アプリでユーザの動向を捉もうとアナリティクス(Google アナリティクス)を導入したところ、何故か Wake Lock パーミッション(アプリをスリープさせないパーミッション)が付いてしまいました。

このドキュメント によれば、non-Google Playアプリでデータの送信を効率化するために、オプションで WAKE_LOCK を有効にすることができる、とあります。non-Google Playアプリではアナリティクスのデータをバックグラウンドで送信するのに、プロセスをスリープさせないようにした方が効率的だということのようです。

Google Play アプリであればこれは全く必要ありません。それに「オプション」と書いてあるくせに、手順通りにやると、明示的に指示していないにも係わらず、勝手に WAKE_LOCK が有効になってしまいます。多分どこかのライブラリが有効化してしまっているのでしょう。



この問題に対し Stackoverflow に載っていた対策を以下に示します。ポイントは明示的に WAKE_LOCK パーミッションを無効にしてやるだけです。

まず AndroidManifest.xml の manifest タグに tools ネームスペースを追加します。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools">

次に以下を追加してパーミッションを無効化します。

<uses-permission android:name="android.permission.WAKE_LOCK" tools:node="remove" />

これでパーミッションを無効化できました。こんな方法があるなんてまったく知りませんでした。

Android ではこのように勝手にパーミッションが付いてしまうことが時々あります。一度リリースしたアプリはパーミッションの事などあまり気にしないので、今回も apk をアップロードして初めて気付きました。
必要なパーミッションであればまだ分かりますが、今回の場合、必要もないパーミッションが開発者の意思とは関係ない所で勝手に追加されてしまうというお粗末さ。この辺りがAndroidアプリのダメダメなところです。

0 件のコメント :

コメントを投稿