plaid / plaid-link-android

Plaid Link Android SDK
https://plaid.com/docs/link/android
MIT License
114 stars 48 forks source link

Failed resolution of: Lcom/plaid/link/OpenPlaidLink #252

Closed Juan2662 closed 1 year ago

Juan2662 commented 1 year ago

The problem

I'm trying to create a library that needs to run plaid inside it. I'm adding the plaid dependency to the library and running it as soon as the activity is instantiated.

Environment

Library:

compileSdk 33
minSdk 24
targetSdk 33
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
plaid sdk core: 3.13.2

Steps to Reproduce

  1. Create an android library and add plaid sdk as dependency
  2. Create an activity and launch plaid into onCreate method
  3. Import the library in your android application and call the library activity

Expected Result

Plaid should be launched, and you'll see plaid flow

Actual Result

App crash Adding plaid sdk dependency in the android application that is importing this library, plaid works, but I need the library to be in charge of installing this dependency

Screenshots

When you eject this, you'll see this error image

build.gradle library image

Logs

FATAL EXCEPTION: main Process: com.example.androidapplication, PID: 31320 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/plaid/link/OpenPlaidLink; at com.example.mylibrary.MySdkActivity.<init>(MySdk.kt:26) at java.lang.Class.newInstance(Native Method) at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45) at android.app.Instrumentation.newActivity(Instrumentation.java:1328) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3569) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3813) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2308) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7898) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.plaid.link.OpenPlaidLink" on path: DexPathList[[dex file "/data/data/com.example.androidapplication/code_cache/.overlay/base.apk/classes.dex", zip file "/data/app/~~h9bgL3eXcWKz5qanw4_azA==/com.example.androidapplication-5ya3q5O7mRVUm1Bhu31ENQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~h9bgL3eXcWKz5qanw4_azA==/com.example.androidapplication-5ya3q5O7mRVUm1Bhu31ENQ==/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) at com.example.mylibrary.MySdkActivity.<init>(MySdk.kt:26)  at java.lang.Class.newInstance(Native Method)  at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)  at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)  at android.app.Instrumentation.newActivity(Instrumentation.java:1328)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3569)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3813)  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2308)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loopOnce(Looper.java:201)  at android.os.Looper.loop(Looper.java:288)  at android.app.ActivityThread.main(ActivityThread.java:7898)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 

dtroupe-plaid commented 1 year ago

Hi @Juan2662

This doesn't appear to be an issue with the Link SDK that we would actively support. Wrapping our SDK into another SDK is out of scope. I recommend taking a look at: