|
|
@ -11,8 +11,9 @@ import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin
|
|
|
|
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin
|
|
|
|
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin
|
|
|
|
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin
|
|
|
|
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin
|
|
|
|
import com.facebook.soloader.SoLoader
|
|
|
|
import com.facebook.soloader.SoLoader
|
|
|
|
|
|
|
|
import com.todoroo.andlib.utility.AndroidUtilities.atLeastOreo
|
|
|
|
|
|
|
|
import com.todoroo.andlib.utility.AndroidUtilities.atLeastQ
|
|
|
|
import leakcanary.AppWatcher
|
|
|
|
import leakcanary.AppWatcher
|
|
|
|
import org.tasks.data.CRASH_ON_MAIN_THREAD
|
|
|
|
|
|
|
|
import org.tasks.preferences.Preferences
|
|
|
|
import org.tasks.preferences.Preferences
|
|
|
|
import timber.log.Timber
|
|
|
|
import timber.log.Timber
|
|
|
|
import timber.log.Timber.DebugTree
|
|
|
|
import timber.log.Timber.DebugTree
|
|
|
@ -25,7 +26,6 @@ class BuildSetup @Inject constructor(
|
|
|
|
fun setup() {
|
|
|
|
fun setup() {
|
|
|
|
Timber.plant(DebugTree())
|
|
|
|
Timber.plant(DebugTree())
|
|
|
|
SoLoader.init(context, false)
|
|
|
|
SoLoader.init(context, false)
|
|
|
|
CRASH_ON_MAIN_THREAD = preferences.getBoolean(R.string.p_crash_main_queries, false)
|
|
|
|
|
|
|
|
if (preferences.getBoolean(R.string.p_leakcanary, false)) {
|
|
|
|
if (preferences.getBoolean(R.string.p_leakcanary, false)) {
|
|
|
|
AppWatcher.manualInstall(context)
|
|
|
|
AppWatcher.manualInstall(context)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -38,21 +38,29 @@ class BuildSetup @Inject constructor(
|
|
|
|
client.start()
|
|
|
|
client.start()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (preferences.getBoolean(R.string.p_strict_mode_thread, false)) {
|
|
|
|
if (preferences.getBoolean(R.string.p_strict_mode_thread, false)) {
|
|
|
|
StrictMode.setThreadPolicy(
|
|
|
|
val builder = StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog()
|
|
|
|
StrictMode.ThreadPolicy.Builder()
|
|
|
|
if (preferences.getBoolean(R.string.p_crash_main_queries, false)) {
|
|
|
|
.detectDiskReads()
|
|
|
|
builder.penaltyDeath()
|
|
|
|
.detectDiskWrites()
|
|
|
|
}
|
|
|
|
.detectNetwork()
|
|
|
|
StrictMode.setThreadPolicy(builder.build())
|
|
|
|
.penaltyLog()
|
|
|
|
|
|
|
|
.build())
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (preferences.getBoolean(R.string.p_strict_mode_vm, false)) {
|
|
|
|
if (preferences.getBoolean(R.string.p_strict_mode_vm, false)) {
|
|
|
|
StrictMode.setVmPolicy(
|
|
|
|
val builder = VmPolicy.Builder()
|
|
|
|
VmPolicy.Builder()
|
|
|
|
.detectActivityLeaks()
|
|
|
|
.detectLeakedSqlLiteObjects()
|
|
|
|
.detectLeakedSqlLiteObjects()
|
|
|
|
|
|
|
|
.detectLeakedRegistrationObjects()
|
|
|
|
.detectLeakedClosableObjects()
|
|
|
|
.detectLeakedClosableObjects()
|
|
|
|
|
|
|
|
.detectFileUriExposure()
|
|
|
|
.penaltyLog()
|
|
|
|
.penaltyLog()
|
|
|
|
.build())
|
|
|
|
if (atLeastOreo()) {
|
|
|
|
|
|
|
|
builder.detectContentUriWithoutPermission()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (atLeastQ()) {
|
|
|
|
|
|
|
|
builder
|
|
|
|
|
|
|
|
.detectCredentialProtectedWhileLocked()
|
|
|
|
|
|
|
|
.detectImplicitDirectBoot()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
StrictMode.setVmPolicy(builder.build())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|