Как исправить «Java.Lang.NoClassDefFoundError» в проекте привязки Xamarin.Android (.aar) - PullRequest
0 голосов
/ 03 июня 2019

В настоящее время я пишу плагин для использования SDK поддержки Zendesk (https://developer.zendesk.com/embeddables/docs/android_support_sdk/nutshell) в моем проекте Xamarin.Forms. Я написал и протестировал плагин в Android Studio с небольшим Activity / UI. Теперь я создалПривязка проекта для использования файла .aar внутри Xamarin. Если я запускаю приложение и получаю доступ к первой функции, я получаю код ошибки.

Я уже пытался добавить файлы .jar, которые загружаются при загрузке в ~ /.gradle / caches / modules-2 / files-2.1 для проекта привязки, а также удаляю все параметры, которые я передаю плагину. Последний тест, который я сделал, - это изменение действия сборки проекта привязки, в настоящее время это действие сборки моего .aar.устанавливается в «LibraryProjectZip» в соответствии с рекомендациями документации Xamarin.

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: не найден класс "zendesk.core.Zendesk" по пути: DexPathList [[файл zip "/system/framework/org.apache.http.legacy.boot.jar ", zip-файл" /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]] --- конец трассировки стека внутренних исключений --- в Java.Interop.JniEnvironment + InstanceMethods.CallVoidMethod (экземпляр Java.Interop.JniObjectReference, метод Java.Interop.JniMethodInfo, Java.Interop.JniArgumentValue *арг) [0x00069] в <09821b4f44794452b7d6c054ac9447f5>: 0 в Java.Interop.JniPeerMembers + JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable самостоятельно, Java.Interop.JniArgumentValue * параметры) [0x0002a] в <09821b4f44794452b7d6c054ac9447f5>:0

...

...