Embeddinator-4000: метод игнорируется при создании .aar в Visual Studio - PullRequest
0 голосов
/ 29 января 2020

Я использую Visual Studio 17 (Windows) и пытаюсь построить файл .aar из библиотеки Xamarin C# Android, используя инструмент embeddinator-4000, но метод использует определенный пользователем класс в параметре или возвращаемом типе. инструмент игнорируется и не входит в состав .aar. Ниже приведены 2 используемых класса:

  1. Пользовательский класс, расширяющий ArrayList.
using Android.Runtime;
using Java.Interop;
using Java.Util;


namespace CalculationAndroid
{
    [Register("mono.embeddinator.android.ViewSubclass")]
    public class ViewSubclass : ArrayList
    {
        [Export("ViewSubclass")]
        public ViewSubclass() : base() { }
    }
}
Класс, в котором метод использует ViewSubclass в параметре.
using Android.Runtime;
using Java.Interop;

namespace CalculationAndroid
{
    [Register("mono.embeddinator.android.UseViewSubclass")]
    public class UseViewSubclass
    {
        [Export("store")]
        public void Store(ViewSubclass arrayList)
        {
            arrayList.Add("aaa");
            System.Console.WriteLine(arrayList.Get(0));
        }
    }
}
Класс, показанный в файле .aar (декомпилированный).
package calculationandroid.calculationandroid;

import mono.embeddinator.*;
import com.sun.jna.*;

public class UseViewSubclass {
    public com.sun.jna.Pointer __object;

    public UseViewSubclass(com.sun.jna.Pointer object) { this.__object = object; }

    public UseViewSubclass() {
        __object = calculationandroid.Native_CalculationAndroid.INSTANCE.CalculationAndroid_UseViewSubclass_new();
        mono.embeddinator.Runtime.checkExceptions();
    }
}

Пожалуйста, помогите выяснить, почему метод Store не воспринимается как часть файла .aar. Заранее спасибо.

1 Ответ

0 голосов
/ 21 марта 2020

Я боролся с этим уже несколько дней.

Проблема в типах. Попробуйте использовать массив basi c вместо arraylist, и, скорее всего, ваш метод Store () не будет проигнорирован и будет отображен в сгенерированной библиотеке.

Существует ряд подобных ограничений. Однако полного списка ограничений там нет. Embeddinator 4000 - отличная концепция, но в журнале генерации должно быть больше документации о том, как создавать, использовать и интерпретировать / исправлять ошибки.

Надеюсь, это поможет.

...