Как я могу исправить Java Bindings: UnsatisfiedLinkError?

Я использую Binding Project в xamarin для java jar "kernal/io/serailport". Процесс сборки предоставляет "serial_port.so" в качестве общей библиотеки объектов. Строка кода C#, вызывающая функции, представленные в serial_port.so, выглядит так:

// This line calls java serialport class present in serial_port.so library refrenced in android project.
serialPort = new Kernal.io.SerialPort(device, Baudrate, 0);  

Теперь самое интересное, что приложение работает хорошо, но когда я включаю «sqlite-net-pcl» в проект Android для доступа к базе данных sqlite, это дает исключение, упомянутое ниже: -

Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lkernal/io/serialport Unhandled Exception  

Эта ошибка возникает только тогда, когда я добавляю библиотеку sqlite-net-pcl в проект Android xamarin.

Я предполагаю, что проблема связана с потоками. Если «sqlite-net-pcl» не включен в проект Android, тогда метод вызова кода С# в проекте привязки обычно выполняется в основном потоке, из-за чего исключение не возникает, и приложение работает нормально, но когда «sqlite-net-pcl " добавлен в проект Android, я думаю, что какая-то вещь в библиотеке sqlite pcl вызывает вызов метода связывания проекта в другом потоке, из-за которого возникает вышеупомянутое исключение.

Теперь мой вопрос заключается в том, как я могу заставить код С#, вызывающий метод связывания проекта, запускаться в основном потоке, или я могу заставить библиотеку slqite-net-pcl работать в основном потоке, что не рекомендуется.

Если моя догадка неверна, то что может быть причиной возбуждения исключения и как с этим справиться.
Спасибо.


person codemilan    schedule 03.01.2017    source источник


Ответы (1)


Попробуйте использовать зависимость SQLite.NET, создав ее самостоятельно. т.е. Добавьте решение проекта SQLite.NET в качестве зависимости приложения вместо использования версии nuget.

person Niraj Adhikari    schedule 17.01.2017
comment
Потрясающий ! ваш трюк решил проблему, спасибо @Niraj Adhikari. - person codemilan; 18.01.2017