pachli-android/core/activity/build.gradle.kts
Nik Clayton 54d7888316
feat: Include extra logs in error reports from orange release builds (#414)
Release builds normally strip out all logging to reduce the number of
disk writes and reduce UI jank.

These logs would still be useful in user error reports from orange
builds. To preseve them:

- Implement a simple `RingBuffer`.

- Create `TreeRing`, a `Timber` `Tree` logger that logs to a
`RingBuffer` instance in orange release builds.

- Create `TreeRingCollector`, called when ACRA reports are generated,
which includes the contents of the ring buffer in the report.

- Enable desugaring to allow the use of java.time libraries on older
Android versions.

- Disable ProGuard obfuscation of class names as the obfuscation adds
additional de-obfuscation steps when handling error reports from users.
2024-02-04 15:17:46 +01:00

64 lines
1.9 KiB
Plaintext

/*
* Copyright 2023 Pachli Association
*
* This file is a part of Pachli.
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
* License, or (at your option) any later version.
*
* Pachli is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Pachli; if not,
* see <http://www.gnu.org/licenses>.
*/
plugins {
alias(libs.plugins.pachli.android.library)
alias(libs.plugins.pachli.android.hilt)
}
android {
namespace = "app.pachli.core.activity"
defaultConfig {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArguments["disableAnalytics"] = "true"
}
compileOptions {
isCoreLibraryDesugaringEnabled = true
}
}
dependencies {
// BaseActivity exposes AccountManager as an injected property
api(projects.core.accounts)
implementation(projects.core.common)
implementation(projects.core.designsystem)
implementation(projects.core.navigation)
// BottomSheetActivity needs MastodonApi for searching
implementation(projects.core.network)
implementation(projects.core.preferences)
implementation(libs.bundles.androidx)
// Loading avatars
implementation(libs.bundles.glide)
// Crash reporting in orange (Pachli Current) builds only
orangeImplementation(libs.bundles.acra)
coreLibraryDesugaring(libs.desugar.jdk.libs)
orangeCompileOnly(libs.auto.service.annotations)
kspOrange(libs.auto.service.ksp)
// BottomSheetActivityTest uses mockito
testImplementation(libs.bundles.mockito)
}