如何在Xamarin.Android绑定项目(.aar)中修复“ Java.Lang.NoClassDefFoundError”

时间:2019-06-03 10:35:13

标签: java c# android xamarin.forms zendesk

我目前正在Xamarin.Forms项目中编写插件来使用Zendesk支持SDK(https://developer.zendesk.com/embeddables/docs/android_support_sdk/nutshell)。我用一个小的Activity / UI编写并测试了Android Studio中的插件。现在,我创建了一个绑定项目,以在Xamarin中使用.aar文件。如果我启动该应用程序并访问第一个功能,则会收到错误代码。

我已经尝试将gradle下载的.jar文件添加到〜/ .gradle / caches / modules-2 / files-2.1的绑定项目中,以及删除传递给插件的所有参数。我所做的最后一个测试是更改绑定项目的生成操作,当前,根据Xamarin文档的建议,.aar的生成操作设置为“ LibraryProjectZip”。

Java

import android.app.Activity;
import android.util.Log;

import java.util.List;
import java.util.Locale;

import zendesk.commonui.UiConfig;
import zendesk.core.AnonymousIdentity;
import zendesk.core.Identity;
import zendesk.core.Zendesk;
import zendesk.support.Support;
import zendesk.support.guide.HelpCenterActivity;
import zendesk.support.guide.ViewArticleActivity;
import zendesk.support.request.RequestActivity;

    public void Init () {
        try {
            // Return if Zendesk is already initialized
            if (IsInitialized()) return;

            Zendesk.INSTANCE.init (MainActivity, zendeskCredentials.zendeskUrl,zendeskCredentials.applicationId,zendeskCredentials.oauthClientId);
            Support.INSTANCE.init(Zendesk.INSTANCE);

            Identity identity = new AnonymousIdentity.Builder().withNameIdentifier(zendeskCredentials.userName).withEmailIdentifier(zendeskCredentials.userEmail).build();
            Zendesk.INSTANCE.setIdentity(identity);

            Support.INSTANCE.setHelpCenterLocaleOverride(locale);
        }
        catch (Exception e) {
            Log.d("EXCEPTION: ", e.getMessage());
        }
    }

____________
Xamarin

public void Init() {
    ZendeskPlugin.Instance.Init();
}

这就是我得到的:

Java.Lang.NoClassDefFoundError:无法解决以下问题:Lzendesk / core / Zendesk; ---> Java.Lang.ClassNotFoundException:在路径:DexPathList [[zip file“ /system/framework/org.apache.http.legacy.boot.jar”,zip]中找不到类“ zendesk.core.Zendesk”文件“ /data/app/de.foo.foo-25GgMgJo-hI1Hnw8TCqT-A==/base.apk"],nativeLibraryDirectories=[/data/app/de.foo.foo-25GgMgJo-hI1Hnw8TCqT-A==/lib /arm64、/data/app/de.foo.foo-25GgMgJo-hI1Hnw8TCqT-A==/base.apk!/lib/arm64-v8a、/system/lib64、/system/vendor/lib64]]]    ---内部异常堆栈跟踪的结尾---   在<09821b4f44794452b7d6c054ac9447f5>:0中的Java.Interop.JniEnvironment + InstanceMethods.CallVoidMethod(Java.Interop.JniObjectReference实例,Java.Interop.JniMethodInfo方法,Java.Interop.JniArgumentValue * args)中[0x00069]   在<09821b4f44794452b7d6c054ac9447f5>:0

中的Java.Interop.JniPeerMembers + JniInstanceMethods.InvokeVirtualVoidMethod(System.String编码的成员,Java.Interop.IJavaPeerable自我,Java.Interop.JniArgumentValue *参数)[0x0002a]处

...

1 个答案:

答案 0 :(得分:0)

我知道回答这个问题为时已晚,但是我希望这将有助于其他人解决他们的问题。 请尝试在您的Xamarin Android项目中安装Xamarin.Kotlin.StdLib。安装Kotlin软件包对我有用,因为我正在使用包含Kotlin代码的.aar文件。

Install-Package Xamarin.Kotlin.StdLib -Version 1.3.50.1