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
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
Release builds of the Android app are signed with a keystore whose credentials
@@ -1,5 +1,39 @@
package bzh.ajaury.chombev
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(),
)
}
}