ChuckerTeam / chucker

🔎 An HTTP inspector for Android & OkHTTP (like Charles but on device)
Apache License 2.0
3.92k stars 341 forks source link

Crash when the client app is using the WAKE_LOCK permission #1077

Open Oleur opened 1 year ago

Oleur commented 1 year ago

:writing_hand: Describe the bug

Chucker 4.0.0 is overriding the WAKE_LOCK permission on the app side.

:bomb: Steps to reproduce

  1. Add Chucker to your app that uses WAKE_LOCK permission
  2. If your app using the PowerManager wakelock at some and is API 25 or above -> crash
  3. See error

java.lang.SecurityException: Neither user 10349 nor current process has android.permission.WAKE_LOCK.

:wrench: Expected behavior

No crash.

:page_facing_up: Additional context

This crash might be avoided by overriding the permission in the manifest: <uses-permission android:name="android.permission.WAKE_LOCK" tools:node="replace"/>

What was the reasons to add a maxSDK requirement to the permission definition?

<uses-permission
        android:name="android.permission.WAKE_LOCK"
        android:maxSdkVersion="25" />
cortinico commented 1 year ago

What was the reasons to add a maxSDK requirement to the permission definition?

I've looked through the history, and apparently we had to add for pre-Oreo device usign JobIntentService. We should probably migrate to WorkManager at this point and the WAKE_LOCK permission is probably not needed anymore

Hinaka commented 1 year ago

FYI, in apps that utilize Chucker and WorkManager, it's possible for a worker to fail when wake lock permission is not granted. Work around is like above post, overriding the permission in the manifest.