2017-01-03 2 views
2

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

// 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-сеть-ПКЛ» в андроида проекта SQLite доступ дб Это дает исключение указанному ниже: -

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

этой ошибка возникает только тогда, когда я добавить «SQLite-нетто-ПКЛ» библиотека в андроиде Xamarin проекта.

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

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

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

ответ

1

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

+0

Удивительный! ваш трюк решил проблему, спасибо @Niraj Adhikari. – codemilan

Смежные вопросы