Исключение нулевой ссылки при запуске в приложении 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 при добавлении файла конфигурации сетевой безопасности ..? Любые идеи?


person KristoferA    schedule 15.10.2019    source источник
comment
Я предлагаю вам сначала обновить версию Xamarin.Forms до 4.2.x. У такой старой версии может быть какая-то неизвестная проблема.   -  person Lucas Zhang    schedule 15.10.2019
comment
Спасибо @ LucasZhang-MSFT - вы правы. После обновления до XF 4.2.x работает. Если вы добавите это как ответ на этот вопрос, а не как комментарий, я отмечу его как правильный ответ на эту проблему.   -  person KristoferA    schedule 15.10.2019
comment
Я его выложил :)   -  person Lucas Zhang    schedule 15.10.2019


Ответы (1)


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

person Lucas Zhang    schedule 15.10.2019