【问题标题】:Android Emulator: No Network Security Config specified, using platform defaultAndroid 模拟器:未指定网络安全配置,使用平台默认值
【发布时间】:2020-03-28 20:52:26
【问题描述】:

我希望你做得很好。 我正在研究 Xamarin 表单。我收到此错误“未指定网络安全配置,使用平台默认设置”,虽然我在我的 Android 模拟器中发送 HttpClient 请求,尽管在 App.Android/Resource/xml 下有 network_security_config.xml,但它在 android 设备上运行良好。 以下是network_security_config.xml文件包含的代码:

<network-security-config>
  <base-config cleartextTrafficPermitted="true"/>
    <trust-anchors>
      <certificates src="system"/>
      <certificates src="user"/>
    </trust-anchors>
</network-security-config>

在我的清单文件中,我有以下代码。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:targetSandboxVersion="1" android:versionCode="1" android:versionName="1.0" package="com.companyname.app71" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
    <application android:label="Meha" android:icon="@drawable/logo_pink"></application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <application android:networkSecurityConfig="@xml/network_security_config" />
    <application android:hardwareAccelerated="true" />
    <application android:largeHeap="true" />
</manifest>

我错过了什么?

【问题讨论】:

  • 您正在测试的模拟器的 API 级别是多少?
  • 模拟器使用 API 级别 28

标签: android xamarin


【解决方案1】:

尝试更改您的network_security_config.xml,如下所示:

<network-security-config>
  <base-config cleartextTrafficPermitted="false">
    <trust-anchors>
      <certificates src="system" />
    </trust-anchors>
  </base-config>
</network-security-config>

还有manifest 之类的:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:targetSandboxVersion="1" android:versionCode="1" android:versionName="1.0" package="com.companyname.app71" android:installLocation="auto">
  <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="28" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
  <application android:label="Meha" android:icon="@drawable/logo_pink" android:networkSecurityConfig="@xml/network_security_config" android:hardwareAccelerated="true" android:largeHeap="true"></application>
</manifest>

正如Network security configuration所说,

面向 Android 9(API 级别 28)及更高版本的应用的默认配置如下:

<base-config cleartextTrafficPermitted="false">
  <trust-anchors>
    <certificates src="system" />
  </trust-anchors>
</base-config>

针对Android 7.0(API 级别 24)到 Android 8.1(API 级别 27) 的应用的默认配置如下:

<base-config cleartextTrafficPermitted="true">
   <trust-anchors>
      <certificates src="system" />
   </trust-anchors>
</base-config>

面向 Android 6.0(API 级别 23)及更低版本的应用的默认配置如下:

<base-config cleartextTrafficPermitted="true">
  <trust-anchors>
     <certificates src="system" />
     <certificates src="user" />
  </trust-anchors>
</base-config>

【讨论】:

  • 我使用的是 Android 9 API 28,我得到了同样的错误。
  • @ShaurBinTalibs 尝试将应用程序标签的属性移动到同一个标签中,就像我上面的更新一样。
  • 错误消失但http请求仍然没有响应。它在安卓设备上有响应,但在模拟器上没有。
  • @ShaurBinTalib 我认为这是另一个问题,也许你可以打开一个新问题并显示一些代码你在做什么。
猜你喜欢
  • 2017-09-15
  • 2017-02-17
  • 2019-01-19
  • 2019-05-27
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
相关资源
最近更新 更多