From 652487e5634120c93317d3946ed9c54f9d9884b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Honza=20Rychnovsk=C3=BD?= Date: Wed, 17 Apr 2024 09:26:39 +0200 Subject: [PATCH] [#1435] Eliminate logging with Proguard - Closes #1435 - Changelog update --- CHANGELOG.md | 1 + sdk-lib/proguard-consumer.txt | 9 +++++++++ .../src/main/java/cash/z/ecc/android/sdk/Synchronizer.kt | 9 +++++++++ 3 files changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 278ec888..18c1780f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this library adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed +- The SDK components no longer contain logging statements in the release build - Gradle 8.7 - Android Gradle Plugin 8.3.0 - Kotlin 1.9.23 diff --git a/sdk-lib/proguard-consumer.txt b/sdk-lib/proguard-consumer.txt index e69de29b..3625bbd5 100644 --- a/sdk-lib/proguard-consumer.txt +++ b/sdk-lib/proguard-consumer.txt @@ -0,0 +1,9 @@ +# Strip out log messages +-assumenosideeffects public class cash.z.ecc.android.sdk.internal.Twig { + public static *** verbose(...); + public static *** debug(...); + public static *** info(...); + public static *** warn(...); + public static *** error(...); + public static *** assertLoggingStripped(); +} \ No newline at end of file diff --git a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/Synchronizer.kt b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/Synchronizer.kt index 4bc740f7..c04a8fe8 100644 --- a/sdk-lib/src/main/java/cash/z/ecc/android/sdk/Synchronizer.kt +++ b/sdk-lib/src/main/java/cash/z/ecc/android/sdk/Synchronizer.kt @@ -571,6 +571,8 @@ interface Synchronizer { validateAlias(alias) + validateLogging() + val saplingParamTool = SaplingParamTool.new(applicationContext) val loadedCheckpoint = @@ -739,3 +741,10 @@ private fun validateAlias(alias: String) { "characters and only contain letters, digits, hyphens, and underscores." } } + +private fun validateLogging() { + if (!BuildConfig.DEBUG) { + // In release builds, logs should be stripped by R8 rules + Twig.assertLoggingStripped() + } +}