web-dev-qa-db-ja.com

Google Playストアでのみリリースする場合、Google Play開発者サービスにAndroid.permission.WAKE_LOCKが必要ですか?

Android用のGoogleAnalyticsを統合しようとしています。 ここのドキュメントに従って、Android.permission.WAKE_LOCKを追加するように求められます(以下のコメントノートを提供します)。はっきりわかりません。 Google Playストア でのみアプリをリリースする場合でも、これは必要ですか?

これが絶対に必要でない場合、私は本当にユーザーに追加の許可を求めたくありません。

<!-- Optional permission for reliable local dispatching on non-Google Play devices -->
<uses-permission Android:name="Android.permission.WAKE_LOCK" />

特に、このメモが実際に何を意味するのかわかりません ここ

オプションで、WAKE_LOCK権限をリクエストして、GooglePlay以外のデバイスでのディスパッチを改善できます。

15
user1406716

WAKE_LOCK

PowerManager WakeLocksを使用して、プロセッサがスリープしたり画面が暗くなったりしないようにします。

Google Playデバイスでは、ほとんどの場合、バックグラウンドサービスは「GooglePlay開発者サービス」として実行されているため、WAKE_LOCKは必要ありません。

Google Play以外のデバイスでは、WAKE_LOCKを使用すると、Googleアナリティクスのディスパッチプロセス/サービスを維持できるため、データをレポート/アップロードする機会が増えます。

[〜#〜]編集[〜#〜]

また、SYSTEM_TOOLSなど、ユーザーが設定を介して制御できるものではないアクセス許可グループの危険なアクセス許可がどうなるかは不明です。

https://commonsware.com/blog/2015/06/02/random-musings-m-developer-preview-bad.html

7
shkschneider

更新:Android 6(APIレベル23、WAKE_LOCKは " normal "パーミッションとして分類されます。つまり、パーミッションは自動的に付与されます。WAKE_LOCK権限を削除すると、アプリがクラッシュすることがよくあるため(以下を参照)、それを回避します。


私は同じ立場にいます。アプリの最新バージョンを使用するユーザーの数が大幅に減少するため、追加の権限を追加したくありません(新しい権限は、ユーザーがアプリの更新を受け取るために明示的にオプトインする必要があることを意味します)。

this SO question )のいくつかの答えを組み合わせることで、解決策を見つけることができたと思います。

まず、アプリのマニフェストに「tools」名前空間を追加します

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

次に、「WAKE_LOCK」権限を追加しますが、削除オプションを使用します

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

これで、新しいAPKをアップロードすると、権限が不要になっていることがわかります。

wake lock permission removed

重要

この解決策はもはや実行可能ではないようです。 「ユーザー10182も現在のプロセスにもAndroid.permission.WAKE_LOCKがありません」というメッセージとともに、膨大な数のRuntimeExceptionsがスローされています。

Fatal Exception: Java.lang.RuntimeException
Unable to start receiver com.google.Android.gms.measurement.AppMeasurementReceiver: Java.lang.SecurityException: Neither user 10182 nor current process has Android.permission.WAKE_LOCK.
39
Ian

WAKE_LOCKを削除するときは、AnalyticsReceiverとAnalyticsServiceも削除してください。

そのようにこのサイトに書かれています。 http://coffeee.hatenablog.com/entry/2017/11/26/035828

  1. androidManifest.xmlを開きます
  2. 「マージされたマニフェスト」のタブをクリックします Merged Manifest
  3. wAKE_LOCKを右クリックして削除します Remove WAKE_LOCK
  4. analyticsReceiverとAnalyticsServiceを削除します Remove Receiver and Service

幸運を

3
cobbee