new: enable StrictMode in debug builds

This commit is contained in:
2026-07-07 21:41:03 +02:00
parent 6361fa6e74
commit 7fc9011d78
2 changed files with 50 additions and 1 deletions
+15
View File
@@ -5,6 +5,21 @@
GlitchTip is configured in the project. It uses the open source solution Senstry to log crashes GlitchTip is configured in the project. It uses the open source solution Senstry to log crashes
generated by the app and send them to GlitchTip on a European server. generated by the app and send them to GlitchTip on a European server.
## StrictMode (debug builds)
The app enables Android [StrictMode](https://developer.android.com/reference/android/os/StrictMode)
**only for debuggable builds** (gated on debug versions, so release builds are never affected).
Both the thread policy (disk/network on the main thread, etc.) and the VM policy (leaked
`Closeable`s, activity leaks, etc.) are enabled and logged to Logcat.
To see violations, filter Logcat for the `StrictMode` tag while running a debug build:
```bash
./gradlew :androidApp:installDebug
adb logcat -s StrictMode
```
## Signing ## Signing
Release builds of the Android app are signed with a keystore whose credentials Release builds of the Android app are signed with a keystore whose credentials
@@ -1,5 +1,39 @@
package bzh.ajaury.chombev package bzh.ajaury.chombev
import android.app.Application import android.app.Application
import android.content.pm.ApplicationInfo
import android.os.StrictMode
class ChomBevApp : Application() class ChomBevApp : Application() {
override fun onCreate() {
super.onCreate()
if (isDebuggable()) {
enableStrictMode()
}
}
private fun isDebuggable(): Boolean =
applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE != 0
/**
* Enables StrictMode for debug builds only. All violations are logged
* ([StrictMode.ThreadPolicy.Builder.penaltyLog]) so problems surface in Logcat
* without ever crashing the app (no `penaltyDeath`).
*/
private fun enableStrictMode() {
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy
.Builder()
.detectAll()
.penaltyLog()
.build(),
)
StrictMode.setVmPolicy(
StrictMode.VmPolicy
.Builder()
.detectAll()
.penaltyLog()
.build(),
)
}
}