У меня есть решение Xamarin.Forms, которое содержит в каждом проекте (Android, iOS и Windows 8.1) lib под названием Plugin.SecureStorage отсюда: https://github.com/sameerkapps/SecureStorage Я установил его через NuGET в каждом проекте.
Все отлично работает в iOS и Windows 8.1, проблема в Android. Проект в Android строит правильно, однако при запуске я получаю следующее:
[...]
Loaded assembly: MonoDroidConstructors [External]
09-27 18:14:49.880 D/Mono (30329): Assembly Ref addref AppConsume.Droid[0xb8cb0608] -> mscorlib[0xb8c64bc0]: 23
09-27 18:14:49.890 D/Mono (30329): Assembly Ref addref Xamarin.Forms.Core[0xb8cbca58] -> System.Collections[0xb8cc5980]: 3
09-27 18:14:49.900 D/Mono (30329): Assembly Ref addref Xamarin.Forms.Core[0xb8cbca58] -> System.Threading[0xb8cd4948]: 3
09-27 18:14:49.930 D/Mono (30329): Assembly Ref addref AppConsume.Droid[0xb8cb0608] -> Plugin.SecureStorage[0xb8cb43f8]: 2
Unhandled Exception:
System.TypeLoadException: Could not resolve type with token 01000019
Что это значит? для меня немного загадочно. Как я могу решить эту проблему?
Конечно, в качестве требования я добавил эту строку...
SecureStorageImplementation.StoragePassword = "mypass";
в MainActivity.cs проекта Android...
using System;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Plugin.SecureStorage;
namespace MyApp.Droid
{
[Activity(Label = "MyApp", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SecureStorageImplementation.StoragePassword = "mypass";
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}
}
}
Я также обнаружил, что изменение позиции линии вызывает разные "типы токенов" в исключении.
UPDATE: Я только что нашел, что приложение успешно работает при компиляции в режиме выпуска. Однако, не работая в режиме отладки, проблема, которую я хотел бы исправить, я не думаю, что это выходит за рамки этого вопроса.