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.
Create an android library and add plaid sdk as dependency
Create an activity and launch plaid into onCreate method
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
build.gradle library
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)
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:
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:
Steps to Reproduce
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
build.gradle library
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)