我使用HTML5 & Javascript开发了cordova跨平台应用程序。但是最近我在android上遇到了一些问题。
以前我使用Cordova 7,其中android版本为6.3,它支持android 16到26。但根据谷歌的新规定,从2019年8月起,所有应用程序都必须针对Android 28,即Android 8和Android 9。
Cordova的最新版本是Cordova 9,它支持Android 8,而Cordova没有发布任何支持Android 9的版本。
因此,要开发针对API 28的应用程序,我必须使用Android 8,但我在这个应用程序上面临一些问题。在此之前,我的应用程序运行良好。当我用Cordova 9用Android 8开发应用程序时,它可以很好地处理所有Android 8及以下的手机,但在Android 9中显示错误,特别是在AJAX请求中。
我用http (而不是https)向服务器发送AJAX请求。在一些博客中,我看到它可能会导致错误。但是我看不到任何修复方法,而且目前我没有使用https的选项。
另一种方法是设置<preference name="android-targetSdkVersion" value="26" />,它在所有安卓版本(6~9)中运行良好,但是当我在Google商店中使用这个配置上传时,它会显示警告,要更新到目标API到28。
所以现在我该怎么办?
提前谢谢。
注:我找到了一种使用http的方法,但一点也不明白。如果有人能解释的话我会很高兴的。提供以下链接:https://developer.android.com/training/articles/security-config
发布于 2019-08-04 15:41:18
经过长时间的搜索,我发现"By Default",Android9不允许向http发送请求。它只允许向https urls发送请求。所以我所要做的就是把我的服务器从http升级到https。不用担心,没那么难。如果您使用plesk作为您的服务器管理,它就像2次点击安装“让加密”SSL证书永远免费与自动更新。它还在Mozilla中显示了Greenbar。但是,如果您使用的不是Plesk,那么请转到让我们加密网站并生成一个并将其安装到您的服务器上。仅此而已。
您仍然可以向Android 9中的http urls发出请求,但对我来说还是太复杂了,所以我说pass。另外,从http升级到https也为我提供了更多的安全性:)
发布于 2019-10-29 18:57:16
您所要做的就是在AndroidManifest.xml上在应用程序标记上包含以下键对值:
Android:usesCleartextTraffic=“真”
在API 28上,这个属性被设置为false (出于安全原因),在以前的Android中是正确的。
发布于 2020-03-05 04:37:10
拉津·阿比德和斯特凡诺·博里提供的响应都是非常好的答案,但是对于那些正在研究如何在Android9中启用不安全的http共谋的人,请检查这个答案:如何允许Android (9) Pie中的所有网络连接类型HTTP和HTTPS?。
请注意,如果您正在使用Cordova,那么直接修改AndroidManifest.xml (Android )文件不是一个好主意,而是编辑config.xml (项目配置文件)。
您将有两个工具来实现它:config-file和edit-config,详细描述在Cordova文档中。
https://stackoverflow.com/questions/57165745
复制相似问题