我正在尝试使用API 16运行我的React Native应用程序(版本0.59.1)并且没有Google Play服务。我的问题是,当我在发布模式下构建我的应用程序时,通过HTTPS调用我的API会给我一个“网络错误”而没有进一步的细节。这些调用是使用FETCH进行的。
在调试模式下运行时,通过HTTPS调用API工作正常。我还确认只有HTTP在发布模式下运行时才有效。
我看过几篇帖子建议创建我自己的TLS / SSL连接工厂,但似乎React Native应该已经使用他们的OkHttpProvider处理这个:https://github.com/facebook/react-native/blob/master/ReactAndroid/src/main/java/com/facebook/react/modules/network/OkHttpClientProvider.java
我还包括了这里显示的保护规则:https://stackoverflow.com/a/38484643/3178433
我也尝试过关闭亲卫,这似乎没有什么区别。
我错过了什么吗?是否有缺少的proguard规则?反应提供的OkHttpClientProvider是不是像我想的那样使用?
找到了解决方案。我添加了这个proguard规则并解决了问题:
-keepclassmembers class * implements javax.net.ssl.SSLSocketFactory {
private final javax.net.ssl.SSLSocketFactory delegate;
}