【发布时间】:2019-11-07 21:30:41
【问题描述】:
免责声明:这看起来与 Ionic Native HTTP does not work for Anroid 9 (Pie) and up? 非常相似,但事实并非如此!
今天更新我们的应用程序后,我们面临着一个非常奇怪和困难的问题。
我们正在维护适用于 Android 的 Ionic v1 应用。它使用 Cordova-Android 7。今天,当我们向 Play 商店上传新更新时,我们发现了一个限制,迫使我们从 28 开始以 SDK 为目标。我们将 <preference name="android-targetSdkVersion" value="28" /> 添加到 config.xml 文件中,重新构建了应用程序,在一些智能手机上测试并上传。分发后,我们发现 Android 9 设备上的所有网络通信都失败了。我们确信这将是流行的cleartext error,因此我们将所有 URL 更改为 HTTPS。但问题依然存在。然后我们再次构建应用程序,但在清单上使用 debuggable 属性,因此我们可以检查应用程序并查看错误,我们发现如果我们打开可调试功能,错误不会发生 - 我们只是将其添加到清单,我们仍在使用--release 标志进行构建。
所以,最终的场景是:
- http 请求仅在以 SDK 28 为目标后失败,仅在 Android 9 设备上,并且仅当应用使用
--release flag构建且我们未将 debuggable 属性放在清单中时才会失败 - 如果我们更改上述任何一点,错误就会消失,因此无法调试
- 应用对所有请求都使用 https
- 当应用程序失败时,请求不会到达服务器,我们已经看过了
那么这到底是什么失败了呢?
【问题讨论】:
标签: ionic-framework https android-9.0-pie