OiO.lk Blog Android Execution failed for task ':app:minifyReleaseWithR8' – Stripe missing classes?
Android

Execution failed for task ':app:minifyReleaseWithR8' – Stripe missing classes?


Here’s an improved version of your text with some clarity adjustments:

Hello,

I have a Flutter app that was working perfectly until I upgraded my OS to Windows 11 and updated Android Studio to the Ladybug version. After fixing some initial errors and updating Gradle to 8.9, I managed to get everything running again. iOS updates published smoothly, but Android has been a bit challenging.

Running the app works, but compiling the the app crashes during minification, and it seems related to Stripe’s pushProvisioning. My app uses Stripe only for direct payments, where a user clicks a pay icon and I create a payment intent for them. I’m unsure which specific error details might help, but here’s an excerpt:

    > Task :app:minifyReleaseWithR8 FAILED
ERROR: Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in C:\Users\nilsm\AndroidStudioProcjects\Prosjekt\parkering\build\app\outputs\mapping\release\missing_rules.txt.
ERROR: R8: Missing class com.stripe.android.pushProvisioning.PushProvisioningActivity$g (referenced from: void com.reactnativestripesdk.pushprovisioning.PushProvisioningProxy$createActivityEventListener$listener$1.onActivityResult(android.app.Activity, int, int, android.content.Intent))

To address this, I added the following to android/app/build.gradle:

dependencies {
    implementation 'com.stripe:stripe-android:20.48.6'
    // Add other dependencies here if needed
}

I also tried adding:

implementation 'com.stripe:stripe-push-provisioning:1.1.0'

However, this caused more errors, so I removed it. I then tried using ProGuard as the error suggested, adding everything listed in missing_rules.txt. My proguard-rules.pro currently looks like this:

# General Flutter rules
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugins.** { *; }
-keep class com.myappname.MainActivity { *; }

# Android core and Kotlin rules
-keepattributes *Annotation*
-keep class kotlin.Metadata { *; }
-keep class kotlin.reflect.** { *; }
-dontwarn kotlin.**
-dontwarn kotlinx.coroutines.**

# Required for core Android libraries
-keepclassmembers class * {
    @androidx.annotation.Keep *;
}

# Handle known warnings for AndroidX
-dontwarn androidx.**

# General Proguard rules to support reflection
-keepclassmembers class * {
    void *(android.content.Context, android.util.AttributeSet);
    void *(android.view.View, android.util.AttributeSet);
}

# Stripe SDK rules
-keep class com.stripe.android.** { *; }
-dontwarn com.stripe.android.**

# Rules for Stripe push provisioning (ignore warnings for missing classes)
-dontwarn com.stripe.android.pushProvisioning.**
-dontwarn com.reactnativestripesdk.pushprovisioning.**

# Optionally keep push provisioning classes if they're used
-keep class com.stripe.android.pushProvisioning.** { *; }
-keep class com.reactnativestripesdk.pushprovisioning.** { *; }

# Disable side effects for unused Stripe push provisioning methods
-assumenosideeffects class com.reactnativestripesdk.pushprovisioning.PushProvisioningProxy { *; }
-assumenosideeffects class com.reactnativestripesdk.pushprovisioning.DefaultPushProvisioningProxy { *; }

# Additional recommended optimizations and rules
-optimizationpasses 5
-allowaccessmodification
-dontoptimize
-dontpreverify
-verbose
-ignorewarnings

Despite trying all these changes, I’m still stuck. Could the error be due to missing Stripe classes, or is there another underlying issue? Any suggestions for the next steps would be greatly appreciated.



You need to sign in to view this answers

Exit mobile version