stripe / stripe-android

Stripe Android SDK
https://stripe.com/docs/mobile/android
MIT License
1.25k stars 635 forks source link

[BUG] The application crashes when I launch the PaymentSheet #7433

Closed mahdisadeghi74 closed 2 months ago

mahdisadeghi74 commented 10 months ago

Summary

Stripe crashes when I call paymentSheet.presentWithPaymentIntent(paymentIntentClientSecret). My libraries are updated according to Stripe's libraries. The error I receive is: java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/compose/ui/platform/LocalSoftwareKeyboardController;.

Code to reproduce

Just launch rememberPaymentSheet({}).presentWithPaymentIntent(paymentIntentClientSecret)

Android version

Android 13

Impacted devices

Poco F3

Installation method

implementation "com.stripe:stripe-android:20.32.1"

Dependency Versions

kotlin: 1.8.22 composeUi:1.5.1 composeMaterial:1.5.1 stripe-android: 20.32.1 Android Gradle Plugin: 8.1.1 Gradle: 8.3

SDK classes

PaymentSheetActivity

Other information

Here is error stacktrace:

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/compose/ui/platform/LocalSoftwareKeyboardController;
    at com.stripe.android.common.ui.BottomSheetKeyboardHandlerKt.rememberBottomSheetKeyboardHandler(BottomSheetKeyboardHandler.kt:38)
    at com.stripe.android.common.ui.BottomSheetKt.rememberBottomSheetState(BottomSheet.kt:99)
    at com.stripe.android.paymentsheet.PaymentSheetActivity$onCreate$2$1.invoke(PaymentSheetActivity.kt:65)
    at com.stripe.android.paymentsheet.PaymentSheetActivity$onCreate$2$1.invoke(PaymentSheetActivity.kt:62)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.material.MaterialTheme_androidKt.PlatformMaterialTheme(MaterialTheme.android.kt:23)
    at androidx.compose.material.MaterialThemeKt$MaterialTheme$1$1.invoke(MaterialTheme.kt:82)
    at androidx.compose.material.MaterialThemeKt$MaterialTheme$1$1.invoke(MaterialTheme.kt:81)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
    at androidx.compose.material.TextKt.ProvideTextStyle(Text.kt:396)
    at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:81)
    at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:80)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
    at androidx.compose.material.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:72)
    at com.stripe.android.uicore.StripeThemeKt$StripeTheme$1.invoke(StripeTheme.kt:331)
    at com.stripe.android.uicore.StripeThemeKt$StripeTheme$1.invoke(StripeTheme.kt:330)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
    at com.stripe.android.uicore.StripeThemeKt.StripeTheme(StripeTheme.kt:325)
    at com.stripe.android.paymentsheet.PaymentSheetActivity$onCreate$2.invoke(PaymentSheetActivity.kt:62)
    at com.stripe.android.paymentsheet.PaymentSheetActivity$onCreate$2.invoke(PaymentSheetActivity.kt:61)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:428)
    at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252)
    at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
    at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:186)
    at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:119)
    at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:118)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:210)
    at android.os.Looper.loop(Looper.java:299)
    at android.app.ActivityThread.main(ActivityThread.java:8261)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.compose.ui.platform.LocalSoftwareKeyboardController" on path: DexPathList[[dex file "/data/data/com.joinglasy.app.stage/code_cache/.overlay/base.apk/classes16.dex", zip file "/data/app/~~mjmXy9LW7tQZZ9OaHb42mg==/com.joinglasy.app.stage-FHclmB9vJUBSnd9-EXQDNQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~mjmXy9LW7tQZZ9OaHb42mg==/com.joinglasy.app.stage-FHclmB9vJUBSnd9-EXQDNQ==/lib/arm64, /system/lib64, /system_ext/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    ... 92 more
getRecentTasks: mainTaskId=49057   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
getRecentTasks: mainTaskId=49057   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
getRecentTasks: mainTaskId=49057   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
getRecentTasks: mainTaskId=49057   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
getRecentTasks: mainTaskId=49057   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
getRecentTasks: mainTaskId=49057   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
initBroadcastReceivercom.joinglasy.app.stage
uninstall:package:com.joinglasy.app.stage
initBroadcastReceivercom.joinglasy.app.stage
install:package:com.joinglasy.app.stage
initBroadcastReceivercom.joinglasy.app.stage
Try to add a invalid package: com.joinglasy.app.stage | 10542 | 0
Failed to measure fs-verity, errno 1: /data/app/~~GXSLnUvGuhfmJSR2Sxbd6w==/com.joinglasy.app.stage-OVv9doayX4yrBhgUOzryGw==/base.apk
Failed to measure fs-verity, errno 1: /data/app/~~GXSLnUvGuhfmJSR2Sxbd6w==/com.joinglasy.app.stage-OVv9doayX4yrBhgUOzryGw==/base.apk
getRecentTasks: mainTaskId=49059   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
getRecentTasks: mainTaskId=49059   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
getRecentTasks: mainTaskId=49059   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
getRecentTasks: mainTaskId=49059   userId=0   baseIntent=Intent { act=android.intent.action.MAIN flag=268435456 cmp=ComponentInfo{com.joinglasy.app.stage/com.joinglasy.app.MainActivity} }
FATAL EXCEPTION: main
Process: com.joinglasy.app.stage, PID: 9756
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/compose/ui/platform/LocalSoftwareKeyboardController;
    at com.stripe.android.common.ui.BottomSheetKeyboardHandlerKt.rememberBottomSheetKeyboardHandler(BottomSheetKeyboardHandler.kt:38)
    at com.stripe.android.common.ui.BottomSheetKt.rememberBottomSheetState(BottomSheet.kt:99)
    at com.stripe.android.paymentsheet.PaymentSheetActivity$onCreate$2$1.invoke(PaymentSheetActivity.kt:65)
    at com.stripe.android.paymentsheet.PaymentSheetActivity$onCreate$2$1.invoke(PaymentSheetActivity.kt:62)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.material.MaterialTheme_androidKt.PlatformMaterialTheme(MaterialTheme.android.kt:23)
    at androidx.compose.material.MaterialThemeKt$MaterialTheme$1$1.invoke(MaterialTheme.kt:82)
    at androidx.compose.material.MaterialThemeKt$MaterialTheme$1$1.invoke(MaterialTheme.kt:81)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:248)
    at androidx.compose.material.TextKt.ProvideTextStyle(Text.kt:396)
    at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:81)
    at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:80)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
    at androidx.compose.material.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:72)
    at com.stripe.android.uicore.StripeThemeKt$StripeTheme$1.invoke(StripeTheme.kt:331)
    at com.stripe.android.uicore.StripeThemeKt$StripeTheme$1.invoke(StripeTheme.kt:330)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
    at com.stripe.android.uicore.StripeThemeKt.StripeTheme(StripeTheme.kt:325)
    at com.stripe.android.paymentsheet.PaymentSheetActivity$onCreate$2.invoke(PaymentSheetActivity.kt:62)
    at com.stripe.android.paymentsheet.PaymentSheetActivity$onCreate$2.invoke(PaymentSheetActivity.kt:61)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.ui.platform.ComposeView.Content(ComposeView.android.kt:428)
    at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:252)
    at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(ComposeView.android.kt:251)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:108)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:35)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
    at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:186)
    at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:119)
    at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(AndroidCompositionLocals.android.kt:118)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:210)
    at android.os.Looper.loop(Looper.java:299)
    at android.app.ActivityThread.main(ActivityThread.java:8261)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.compose.ui.platform.LocalSoftwareKeyboardController" on path: DexPathList[[zip file "/data/app/~~GXSLnUvGuhfmJSR2Sxbd6w==/com.joinglasy.app.stage-OVv9doayX4yrBhgUOzryGw==/base.apk"],nativeLibraryDirectories=[/data/app/~~GXSLnUvGuhfmJSR2Sxbd6w==/com.joinglasy.app.stage-OVv9doayX4yrBhgUOzryGw==/lib/arm64, /system/lib64, /system_ext/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    ... 92 more
porter-stripe commented 10 months ago

See https://github.com/stripe/stripe-android/issues/7184 for the same issue.

mahdisadeghi74 commented 10 months ago

See #7184 for the same issue.

ComposeUi of my project equal to 1.5.1 without alpha

yogurtearl commented 10 months ago

See workaround here: https://github.com/stripe/stripe-android/issues/7184#issuecomment-1776245431

jaynewstrom-stripe commented 2 months ago

This has been fixed for a while, sorry for the issue. Please reopen if this is still happening.