new: enable StrictMode in debug builds
This commit is contained in:
@@ -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(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user