Есть ли проблема с последней версией Kentico Delivery Client и Release для Android? - PullRequest
0 голосов
/ 19 апреля 2019

У меня проблема с последним DeliveryClient в Xamarin.Android. Следующий фрагмент кода отлично работает в сборке Debug.

Тем не менее, я получаю ошибку времени выполнения, сняв отметку с двух элементов свойств «Упаковка»: Использовать общее время выполнения и Использовать быстрое развертывание в свойствах проекта Android. И вы должны снять их, когда вы архивируете APK для установки на устройство. Как только я это сделаю, я получу трассировку стека ниже, что не очень полезно, но кажется, что http-запрос просто куда-то уходит и не выполняется.

Это заставляет меня задуматься, успешно ли кто-нибудь использовал эту последнюю версию DeliveryClient в сборке Android Release. Это не происходило в более ранних версиях до DeliveryClientBuilder .

    DeliveryClient client = DeliveryClientBuilder
                    .WithOptions(builder => builder
                        .WithProjectId("myProjectId")
                        .UseProductionApi
                        .WithMaxRetryAttempts(5)
                    .Build())
                    .Build();

     Task<string> content = Task.Run(async () =>
                {
                    var res = client.GetItemAsync("hello").Result;
                    var helloFromKC = res.Item.GetString("message_from_kc");
                    return helloFromKC;
                });

04-18 18: 24: 16.408 I / mono-stdout (17908): произошла одна или несколько ошибок. Произошла одна или несколько ошибок.
в System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00011] в / Users / builder / jenkins / workspace / xamarin-android-d15-8 / xamarin-android / external / mono / mcs / class / referenceourceource /mscorlib/system/threading/Tasks/Task.cs:2164 04-18 18: 24: 16.578 I / mono-stdout (17908): в System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00011] в /Users/builder/jenkins/workspace/xamarin-android-d15-8/xamarin-android/external/mono/mcs/class/referencesource/mscorlib/system/threading/Tasks/Task.cs:2164 в System.Threading.Tasks.Task`1 [TResult] .GetResultCore (System.Boolean waitCompletionNotification) [0x0002b] в / Users / builder / jenkins / workspace / xamarin-android-d15-8 / xamarin-android / external / mono / MCS / класс / referencesource / mscorlib / система / пронизывающие / Задачи / Future.cs: 562 в System.Threading.Tasks.Task1 [TResult] .get_Result () [0x00000] в / Users / builder / jenkins / workspace / xamarin-android-d15-8 / xamarin-android / external / mono / mcs / class / referenceource / mscorlib / система / пронизывающие / Задачи / Future.cs: 532 в App1.MainActivity + <> c__DisplayClass3_0 + d.MoveNext () [0x00014] в C: \ TestApps \ AndroidKenticoTest \ App1 \ MainActivity.cs: 68 04-18 18: 24: 16.579 I / mono-stdout (17908 ): at System.Threading.Tasks.Task1 [TResult] .GetResultCore (System.Boolean waitCompletionNotification) [0x0002b] в / Users / builder / jenkins / workspace / xamarin-android-d15-8 / xamarin-android / external / mono / MCS / класс / referencesource / mscorlib / система / пронизывающие / Задачи / Future.cs: 562

1 Ответ

3 голосов
/ 23 апреля 2019

Я наконец-то отладил источник этого поведения.В Xamarin некоторые методы отражения недоступны (или, по крайней мере, не полностью поддерживаются) в Portable Class Library (PCL), и GetExecutingAssembly() является одним из этих методов.

В результате KenticoЧастные методы SDK Cloud Delivery GetSdkVersion() и GetSdkPackageId() выдают исключение, так как они использовали этот метод.

В качестве быстрого обходного пути вы можете напрямую ссылаться на SDK как проект и комментировать тело GetSdkPackageId () и GetSdkVersion () методы (просто возвращают несколько фиктивных строк.) Я собираюсь создать проблему и попытаться исправить ее в SDK (и в Nuget Package)).

Обновление 1: в дополнение к (не полностью) поддержке GetExecutingAssembly() в Xamarin, невозможно получить правильный путь к сборке при использовании не общей среды выполнения(рабочий режим).

Обновление 2: создано выпуск на GitHub.

Обновление 3: проблема исправлена ​​ в SDK и новомисправлена ​​ версия 10.0.1 выпущенаСЕПГ.Дайте мне знать, если это работает для вас.

...