使用 Android network-security-config 在 Xamarin 应用程序中启动时出现空引用异常
Null reference exception on startup in Xamarin app with Android network-security-config
我正在尝试将网络安全配置文件添加到使用 Xamarin 工具构建的 Android 应用程序。 (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\s\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:315
at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x00000] in D:\agent_work\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\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 版本依赖性......?有什么想法吗?
你的应用中xamarin.forms的版本好像还是2.5.x,最新版本是4.2.x。所以首先我建议你可以更新它。否则,由于兼容性可能会出现一些未知问题。
我正在尝试将网络安全配置文件添加到使用 Xamarin 工具构建的 Android 应用程序。 (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\s\Xamarin.Forms.Platform.Android\AppCompat\FormsAppCompatActivity.cs:315
at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x00000] in D:\agent_work\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\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 版本依赖性......?有什么想法吗?
你的应用中xamarin.forms的版本好像还是2.5.x,最新版本是4.2.x。所以首先我建议你可以更新它。否则,由于兼容性可能会出现一些未知问题。