Skip to content

Commit f7ab26b

Browse files
authored
Merge pull request #732 from code-payments/chore/r8-rules-cleanup
build: clean up R8 keep rules and fix onramp error reporting
2 parents 93d8876 + 603fcc2 commit f7ab26b

11 files changed

Lines changed: 42 additions & 70 deletions

File tree

apps/flipcash/app/build.gradle.kts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ val appNamespace = "${Gradle.flipcashNamespace}.app.android"
3030
android {
3131
// static namespace
3232
namespace = appNamespace
33-
compileSdk = Android.compileSdkVersion
33+
compileSdk = libs.versions.android.compileSdk.get().toInt()
3434

3535
defaultConfig {
3636
versionCode = Packaging.Flipcash.versionCode ?: gitVersionCode()
3737
versionName = Packaging.Flipcash.versionName
3838
applicationId = appNamespace
39-
minSdk = Android.minSdkVersion
40-
targetSdk = Android.targetSdkVersion
41-
testInstrumentationRunner = Android.testInstrumentationRunner
39+
minSdk = libs.versions.android.minSdk.get().toInt()
40+
targetSdk = libs.versions.android.targetSdk.get().toInt()
41+
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
4242

4343
buildConfigField("String", "VERSION_NAME", "\"${Packaging.Flipcash.versionName}\"")
4444
buildConfigField("String", "MIXPANEL_API_KEY", "\"${tryReadProperty(rootProject.rootDir, "MIXPANEL_API_KEY")}\"")
@@ -65,6 +65,7 @@ android {
6565
buildTypes {
6666
getByName("release") {
6767
resValue("string", "applicationId", appNamespace)
68+
signingConfig = signingConfigs.getByName("contributors")
6869
isMinifyEnabled = true
6970
isShrinkResources = true
7071
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
@@ -87,8 +88,8 @@ android {
8788
}
8889

8990
compileOptions {
90-
sourceCompatibility(Android.javaVersion)
91-
targetCompatibility(Android.javaVersion)
91+
sourceCompatibility(libs.versions.android.java.get())
92+
targetCompatibility(libs.versions.android.java.get())
9293
isCoreLibraryDesugaringEnabled = true
9394
}
9495

@@ -120,11 +121,11 @@ bugsnag {
120121

121122
kotlin {
122123
jvmToolchain {
123-
languageVersion.set(JavaLanguageVersion.of(Android.javaVersion))
124+
languageVersion.set(JavaLanguageVersion.of(libs.versions.android.java.get()))
124125
}
125126

126127
compilerOptions {
127-
jvmTarget.set(JvmTarget.fromTarget(Android.javaVersion))
128+
jvmTarget.set(JvmTarget.fromTarget(libs.versions.android.java.get()))
128129
optIn.addAll(
129130
"kotlin.time.ExperimentalTime",
130131
"kotlin.ExperimentalUnsignedTypes",

apps/flipcash/app/proguard-rules.pro

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,8 @@
11
-optimizationpasses 5
22
-dontusemixedcaseclassnames
3-
-verbose
4-
#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable
53
-obfuscationdictionary shuffled-dictionary.txt
64
-classobfuscationdictionary shuffled-dictionary.txt
75

8-
-keepclasseswithmembernames class * {
9-
native <methods>;
10-
}
11-
12-
-keepclassmembers class **.R$* {
13-
public static <fields>;
14-
}
15-
166
# Keep screen names
177
-keepnames class * implements cafe.adriel.voyager.core.screen.Screen
188

@@ -23,19 +13,13 @@
2313
# Protobuf — keep all generated message classes and their builders.
2414
# Using type-hierarchy rules so new packages / updated gRPC stubs are
2515
# caught automatically instead of listing every gen package.
26-
-keep class com.google.protobuf.** { *; }
2716
-keep class * extends com.google.protobuf.GeneratedMessageLite { *; }
2817
-keep class * extends com.google.protobuf.GeneratedMessageLite$Builder { *; }
2918

3019
# gRPC — keep generated service stubs (abstract + concrete)
3120
-keep class * extends io.grpc.stub.AbstractStub { *; }
3221
-keep class * implements io.grpc.BindableService { *; }
3322

34-
# Flipcash services
35-
-keep class com.flipcash.services.** { *; }
36-
# Opencode services
37-
-keep class com.getcode.opencode.** { *; }
38-
3923
# Keep our scan classes that interact with native
4024
-keep class com.kik.scan.** { *; }
4125

@@ -47,12 +31,7 @@
4731
public static int e(...);
4832
}
4933

50-
-keepattributes SourceFile,LineNumberTable # Keep file names and line numbers.
51-
-keep public class * extends java.lang.Exception
52-
53-
# https://github.com/firebase/firebase-android-sdk/issues/3688
54-
-keep class org.json.** { *; }
55-
-keepclassmembers class org.json.** { *; }
34+
-keep public class * extends java.lang.Throwable
5635

5736
# Keep generic signature of Call, Response (R8 full mode strips signatures from non-kept items).
5837
-keep,allowobfuscation,allowshrinking interface retrofit2.Call

apps/flipcash/shared/onramp/coinbase/src/main/kotlin/com/flipcash/app/onramp/CoinbaseOnRampHandler.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,13 @@ private fun showOnRampFailure(resources: Resources, error: CoinbaseOnRampWebErro
8484
)
8585
}
8686

87+
is CoinbaseOnRampWebError.AssetNotTradableInRegion -> {
88+
BottomBarManager.showAlert(
89+
title = resources.getString(R.string.error_title_onrampRegionMismatch),
90+
message = resources.getString(R.string.error_description_onrampRegionMismatch),
91+
)
92+
}
93+
8794
is CoinbaseOnRampWebError.GuestGooglePayError -> {
8895
BottomBarManager.showError(
8996
title = resources.getString(R.string.error_title_onrampTransactionFailed),

apps/flipcash/shared/onramp/coinbase/src/main/kotlin/com/flipcash/app/onramp/internal/CoinbaseOnRampEventHandler.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ internal class CoinbaseOnRampEventHandler(
265265
}
266266
}
267267

268-
sealed class CoinbaseOnRampWebError(val data: String? = null): Throwable() {
268+
sealed class CoinbaseOnRampWebError(val data: String? = null): Throwable(data) {
269269
class Unknown(data: String? = null) : CoinbaseOnRampWebError(data), NotifiableError
270270
class MissingTransactionUuid(data: String? = null) : CoinbaseOnRampWebError(data), NotifiableError
271271
class GuestCardNotDebit(data: String? = null) : CoinbaseOnRampWebError(data)
@@ -275,6 +275,7 @@ sealed class CoinbaseOnRampWebError(val data: String? = null): Throwable() {
275275
class GuestTransactionAvsValidationFailed(data: String? = null) : CoinbaseOnRampWebError(data)
276276
class GuestTransactionTransactionFailed(data: String? = null) : CoinbaseOnRampWebError(data), NotifiableError
277277
class GuestRegionMismatch(data: String? = null) : CoinbaseOnRampWebError(data)
278+
class AssetNotTradableInRegion(data: String? = null): CoinbaseOnRampWebError(data)
278279
class GuestGooglePayNotReady(data: String? = null) : CoinbaseOnRampWebError(data)
279280
class Internal(data: String? = null) : CoinbaseOnRampWebError(data), NotifiableError
280281
class GooglePayButtonNotFound(data: String? = null) : CoinbaseOnRampWebError(data), NotifiableError
@@ -285,6 +286,7 @@ sealed class CoinbaseOnRampWebError(val data: String? = null): Throwable() {
285286
fun fromErrorCode(errorCode: String, data: String? = null): CoinbaseOnRampWebError {
286287
return when (errorCode) {
287288
"ERROR_CODE_MISSING_TRANSACTION_UUID" -> MissingTransactionUuid(data)
289+
"ERROR_CODE_ASSET_NOT_TRADABLE" -> AssetNotTradableInRegion(data)
288290
"ERROR_CODE_GUEST_CARD_NOT_DEBIT" -> GuestCardNotDebit(data)
289291
"ERROR_CODE_GUEST_GOOGLE_PAY_ERROR" -> GuestGooglePayError(data)
290292
"ERROR_CODE_GUEST_TRANSACTION_BUY_FAILED" -> GuestTransactionBuyFailed(data)

build-logic/convention/src/main/kotlin/AndroidLibraryConventionPlugin.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,16 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
2121
}
2222
}
2323

24+
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
25+
val compileSdkVersion = libs.findVersion("android-compileSdk").get().requiredVersion.toInt()
26+
val minSdkVersion = libs.findVersion("android-minSdk").get().requiredVersion.toInt()
27+
val javaVersion = libs.findVersion("android-java").get().requiredVersion
28+
2429
extensions.configure<LibraryExtension> {
25-
compileSdk = 36
30+
compileSdk = compileSdkVersion
2631

2732
defaultConfig {
28-
minSdk = 29
33+
minSdk = minSdkVersion
2934
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
3035
}
3136

@@ -34,18 +39,18 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
3439
}
3540

3641
compileOptions {
37-
sourceCompatibility = JavaVersion.VERSION_21
38-
targetCompatibility = JavaVersion.VERSION_21
42+
sourceCompatibility = JavaVersion.toVersion(javaVersion)
43+
targetCompatibility = JavaVersion.toVersion(javaVersion)
3944
}
4045
}
4146

4247
extensions.configure<KotlinAndroidProjectExtension> {
4348
jvmToolchain {
44-
languageVersion.set(JavaLanguageVersion.of(21))
49+
languageVersion.set(JavaLanguageVersion.of(javaVersion))
4550
}
4651

4752
compilerOptions {
48-
jvmTarget.set(JvmTarget.JVM_21)
53+
jvmTarget.set(JvmTarget.fromTarget(javaVersion))
4954
optIn.addAll(
5055
"kotlin.time.ExperimentalTime",
5156
"kotlin.ExperimentalUnsignedTypes",
@@ -54,8 +59,6 @@ class AndroidLibraryConventionPlugin : Plugin<Project> {
5459
}
5560
}
5661

57-
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
58-
5962
dependencies {
6063
"implementation"(libs.findLibrary("timber").get())
6164
"implementation"(libs.findLibrary("kotlinx-coroutines-core").get())

buildSrc/src/main/java/Android.kt

Lines changed: 0 additions & 7 deletions
This file was deleted.

gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,3 @@ android.experimental.enableTestFixturesKotlinSupport=true
3939
android.suppressUnsupportedOptionWarnings=android.suppressUnsupportedOptionWarnings,android.experimental.enableTestFixturesKotlinSupport
4040
android.uniquePackageNames=false
4141
android.dependency.useConstraints=true
42-
android.r8.strictFullModeForKeepRules=false

gradle/libs.versions.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
[versions]
2+
android-compileSdk = "37"
3+
android-minSdk = "29"
4+
android-targetSdk = "37"
5+
android-java = "21"
6+
27
kotlin = "2.3.21"
38
ksp = "2.3.7"
49
kotlinx-coroutines = "1.11.0"

libs/encryption/ed25519/proguard-rules.pro

Lines changed: 0 additions & 17 deletions
This file was deleted.

services/flipcash/consumer-rules.pro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
# libsodium
66
-keep class com.ionspin.kotlin.crypto.** { *; }
7-
-keep class com.sun.jna.** { *; }
7+
-keep,allowoptimization class com.sun.jna.** { *; }
88
-dontwarn java.awt.Component
99
-dontwarn java.awt.GraphicsEnvironment
1010
-dontwarn java.awt.HeadlessException

0 commit comments

Comments
 (0)