2
votes

I have convert android project as library like aar then add it as jar in Xamarin Binding library (Android). Build that solution and get dll file and add in same location Android App (Xamarin) as reference and build it. While I run it show's below error,

 Process: com.companyname.TestApp1, PID: 17644
06-25 08:30:38.946 E/AndroidRuntime(17644): java.lang.NoClassDefFoundError: Failed resolution of: Lkotlin/jvm/internal/Lambda;
06-25 08:30:38.946 E/AndroidRuntime(17644):     at java.lang.Class.classForName(Native Method)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at java.lang.Class.forName(Class.java:453)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:30)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.view.View.performClick(View.java:7339)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.widget.TextView.performClick(TextView.java:14222)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.view.View.performClickInternal(View.java:7305)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.view.View.access$3200(View.java:846)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.view.View$PerformClick.run(View.java:27787)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.os.Handler.handleCallback(Handler.java:873)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.os.Looper.loop(Looper.java:214)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at android.app.ActivityThread.main(ActivityThread.java:7073)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at java.lang.reflect.Method.invoke(Native Method)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
06-25 08:30:38.946 E/AndroidRuntime(17644): Caused by: java.lang.ClassNotFoundException: Didn't find class "kotlin.jvm.internal.Lambda" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.companyname.TestApp1-5PPAd0T1XIo7m0pRoutt5w==/base.apk"],nativeLibraryDirectories=[/data/app/com.companyname.TestApp1-5PPAd0T1XIo7m0pRoutt5w==/lib/arm, /data/app/com.companyname.TestApp1-5PPAd0T1XIo7m0pRoutt5w==/base.apk!/lib/armeabi-v7a, /system/lib]]
06-25 08:30:38.946 E/AndroidRuntime(17644):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
06-25 08:30:38.946 E/AndroidRuntime(17644):     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
06-25 08:30:38.946 E/AndroidRuntime(17644):     ... 16 more
Unhandled Exception:

NOTE: That android studio project run successfully but same code aar file didn't work in visual studio xamarin app. Please help me to resolve this issue.

1
have you found the solution? - Jamal

1 Answers

-1
votes

Learn R8 (proguard), pleae. It cannot hurt.

Add proguard file to your project (and BuildAction=ProguardConfiguration) if you work with Xamarin.Android:

## Kotlin wrapper
-keep class kotlin.jvm.internal.** {  }
-keep class kotlin.jvm.internal.FunctionReference {  }
-keep class kotlin.jvm.internal.Lambda {  }

-keep class kotlin.jvm.functions.Function0 {  }
-keep class kotlin.jvm.functions.Function1 {  }
-keep class kotlin.jvm.functions.Function2 {  }
-keep class kotlin.jvm.functions.* {  }

## don't waring Kotlin
-dontwarn kotlin.jvm.internal.**
-dontwarn kotlin.jvm.functions.**

Especially with newer tools (D8, R8, aapt2, etc)

See recent sample for library I was binding in last few days:

https://github.com/xamarin/XamarinComponents/blob/master_based_OfficeUIFabric/XPlat/OfficeUIFabric/Android/samples/OfficeUIFabricSampleDroid/proguard-kotlin.cfg