React Native Android - 图像组件(网络) - 不会通过 https 加载

doo*_*tin 7 android react-native

我在通过 https 加载任何图像时遇到问题。我正在使用 React Native 0.18,并且实现非常简单,例如在 Amazon 上使用图像:

将工作:

<Image style={styles.avatar} source={{uri: "http://ecx.images-amazon.com/images/I/71JxCVQ5ozL.jpg"}} />
Run Code Online (Sandbox Code Playgroud)

不会工作:

<Image style={styles.avatar} source={{uri: "https://images-na.ssl-images-amazon.com/images/I/41KoE8etwlL.jpg"}} />
Run Code Online (Sandbox Code Playgroud)

还有其他人看过这个吗?

感谢您的帮助。

小智 1

有类似的问题。我的问题是因为某些网站使用的 SSL/TSL 版本以及旧版 Android 操作系统 (TLS v1.2) 的问题。来自特定网站的图像会显示在模拟器上,但不会显示在实际的 Android 设备上。

  1. 我使用 Image 的 onError 方法来记录实际的错误。请注意,如果您使用 Web 调试器,您将不会看到此错误。

          onError={e => {
            console.log(e);
          }}
    
    Run Code Online (Sandbox Code Playgroud)
  2. 查看Android调试桥(ADB)上记录的实际错误,错误是:

    “错误:javax.net.ssl.SSLProtocolException:SSL 握手中止:”

显然这是旧版 Android 操作系统的问题。

我按照此处的链接解决了 ssl 问题。现在完美运行

请注意,对于某些版本的 React Native,Image 组件 onError 方法不会在 Android 设备上触发。您可以从这里使用polyfill“react-native-android-image-polyfill”