diff --git a/.idea/dictionaries/admin.xml b/.idea/dictionaries/admin.xml index c84c310d4..07b4b61db 100644 --- a/.idea/dictionaries/admin.xml +++ b/.idea/dictionaries/admin.xml @@ -1,6 +1,7 @@ + chucker desu koin kotatsu diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index a5f05cd8c..237047402 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -21,5 +21,10 @@ \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index ce22781e2..d38008c97 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -90,7 +90,9 @@ dependencies { implementation 'com.tomclaw.cache:cache:1.0' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.2' + debugImplementation 'com.github.ChuckerTeam.Chucker:library:3.1.2' + releaseImplementation 'com.github.ChuckerTeam.Chucker:library-no-op:3.1.2' testImplementation 'junit:junit:4.13' - testImplementation 'org.json:json:20180813' + testImplementation 'org.json:json:20190722' } \ No newline at end of file diff --git a/app/libs/.gitkeep b/app/libs/.gitkeep new file mode 100644 index 000000000..8d1c8b69c --- /dev/null +++ b/app/libs/.gitkeep @@ -0,0 +1 @@ + diff --git a/app/libs/okhttpprofiler-1.0.7.aar b/app/libs/okhttpprofiler-1.0.7.aar deleted file mode 100644 index 53c8c5cc4..000000000 Binary files a/app/libs/okhttpprofiler-1.0.7.aar and /dev/null differ diff --git a/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt b/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt index 53327f67b..2a1390478 100644 --- a/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt +++ b/app/src/main/java/org/koitharu/kotatsu/KotatsuApp.kt @@ -6,9 +6,9 @@ import androidx.room.Room import coil.Coil import coil.ImageLoader import coil.util.CoilUtils -import com.itkacher.okhttpprofiler.OkHttpProfilerInterceptor +import com.chuckerteam.chucker.api.ChuckerCollector +import com.chuckerteam.chucker.api.ChuckerInterceptor import okhttp3.OkHttpClient -import okhttp3.internal.userAgent import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidLogger import org.koin.core.context.startKoin @@ -31,10 +31,17 @@ class KotatsuApp : Application() { PersistentCookieJar(SetCookieCache(), SharedPrefsCookiePersistor(applicationContext)) } + private val chuckerCollector by lazy(LazyThreadSafetyMode.NONE) { + ChuckerCollector(applicationContext) + } + override fun onCreate() { super.onCreate() initKoin() initCoil() + if (BuildConfig.DEBUG) { + initErrorHandler() + } AppCompatDelegate.setDefaultNightMode(AppSettings(this).theme) } @@ -79,6 +86,14 @@ class KotatsuApp : Application() { }) } + private fun initErrorHandler() { + val exceptionHandler = Thread.getDefaultUncaughtExceptionHandler() + Thread.setDefaultUncaughtExceptionHandler { t, e -> + chuckerCollector.onError("CRASH", e) + exceptionHandler?.uncaughtException(t, e) + } + } + private fun okHttp() = OkHttpClient.Builder().apply { connectTimeout(20, TimeUnit.SECONDS) readTimeout(60, TimeUnit.SECONDS) @@ -86,7 +101,7 @@ class KotatsuApp : Application() { cookieJar(cookieJar) addInterceptor(UserAgentInterceptor) if (BuildConfig.DEBUG) { - addInterceptor(OkHttpProfilerInterceptor()) + addInterceptor(ChuckerInterceptor(applicationContext, collector = chuckerCollector)) } } diff --git a/build.gradle b/build.gradle index aaa2d2e8f..cbdeef496 100644 --- a/build.gradle +++ b/build.gradle @@ -18,6 +18,9 @@ allprojects { repositories { google() jcenter() + maven { + url 'https://jitpack.io' + } } }