Исключение нулевой ссылки при запуске в приложении Xamarin с конфигурацией сетевой безопасности Android

Я пытаюсь добавить файл конфигурации сетевой безопасности в приложение Android, созданное с помощью инструментов Xamarin. (Xamarin формирует версию 2.5.1.527436).

Я выполнил шаги, описанные в этой статье:https://devblogs.microsoft.com/xamarin/cleartext-http-android-network-security/

Мой файл network_security.config.xml содержит только два переопределения TLS для сайтов, к которым обращается браузер в приложении, и где https/tls не может быть включен на стороне сервера в этот момент:

<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">xxx.somedomain.com</domain>
    <domain includeSubdomains="true">yyy.somedomain.com</domain>
  </domain-config>
</network-security-config>

В файле AndroidManifest.xml я только что добавил android:networkSecurityConfig="@xml/network_security_config":

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.somecompany.someapp" android:versionName="1.2.3 (October 2019)" android:versionCode="3" android:installLocation="auto">
  <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28" />
...
  <application android:largeHeap="true"
    android:label="Some App Name"
    android:icon="@drawable/icon"
    android:theme="@style/AppTheme"
    android:networkSecurityConfig="@xml/network_security_config">
...
  </application>
</manifest>

Однако при запуске вызов Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication вызывает исключение нулевой ссылки без каких-либо дополнительных сведений.

[0:] System.NullReferenceException: Object reference not set to an instance of an object.
at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage (Xamarin.Forms.Page page) [0x0005e] in D:\agent_work\1\s\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:315
at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x00000] in D:\agent_work\1\s\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:343
at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication (Xamarin.Forms.Application application) [0x0025c] in D:\agent_work\1\s\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:139
at SomeApp.MainActivity.OnCreate (Android.OS.Bundle savedInstanceState) [0x001db] in D:\work\xxx\MainActivity.cs:173

Я не уверен, что мне что-то не хватает или есть какая-то зависимость от версии Xamarin при добавлении файла конфигурации сетевой безопасности..? Есть идеи?

1 ответ

Решение

Похоже, что версия xamarin.forms в вашем приложении по-прежнему 2.5.x, а самая новая версия - 4.2.x . Итак, во-первых, я предлагаю вам обновить его. В противном случае может возникнуть какая-то неизвестная проблема из-за совместимости.

Другие вопросы по тегам