android 10 不支持白名单插件

Posted

技术标签:

【中文标题】android 10 不支持白名单插件【英文标题】:android 10 doesn't support whitelist plugin 【发布时间】:2021-10-24 00:19:23 【问题描述】:

android 10 不支持“白名单插件”,当我添加 android 平台时,它会跳过白名单插件,这会在构建或运行应用程序时导致“文件传输插件”问题

ionic cordova platform add android@latest

Installing "cordova-plugin-whitelist" for android
Plugin doesn't support this project's cordova-android version. cordova-    android: 10.1.0, failed version requirement: >=4.0.0 <10.0.0
Skipping 'cordova-plugin-whitelist' for android

创建应用时会出现这些错误:

ionic cordova build android

任务:app:compileDebugJavaWithJavac D:\workspace\SCL\platforms\android\app\src\main\java\org\apache\cordova\filetransfer\FileTransfer.java:48:错误:找不到符号 导入 org.apache.cordova.Whitelist; ^ 符号:类白名单 位置:包 org.apache.cordova D:\workspace\SCL\platforms\android\app\src\main\java\org\apache\cordova\filetransfer\FileTransfer.java:691:错误:找不到符号 白名单 whitelist = (Whitelist)gwl.invoke(webView); ^ 符号:类白名单 位置:类 org.apache.cordova.filetransfer.FileTransfer D:\workspace\SCL\platforms\android\app\src\main\java\org\apache\cordova\filetransfer\FileTransfer.java:691:错误:找不到符号 白名单 whitelist = (Whitelist)gwl.invoke(webView); ^ 符号:类白名单 位置:类 org.apache.cordova.filetransfer.FileTransfer 注意:某些输入文件使用或覆盖已弃用的 API。 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。 注意:某些输入文件使用未经检查或不安全的操作。 注意:使用 -Xlint:unchecked 重新编译以获取详细信息。 3 个错误

似乎“文件传输”需要“白名单插件”,但添加 android > 10 时会跳过“白名单插件”

这在 android 9 中不会发生

有人可以帮忙吗?

【问题讨论】:

cordova-android 10 中内置了白名单插件,但需要更新文件传输以使用新的 cordova-android 类而不是旧的白名单插件类 但是为什么在添加android平台时会跳过白名单插件? 因为现在是内置的,如果安装会导致冲突 与android@10.0.0不同,我认为android@10.1.0不再自动安装白名单插件了。 【参考方案1】:

Sanjay 和 Francisco 的回复帮助我找到了正确的解决方案。除了从项目中修复 package.json 和其他存在的“白名单插件”之外,您还需要运行以下命令从 android/ios 平台卸载它。

ionic cordova plugin rm cordova-plugin-whitelist

更新 - 无论出于何种原因,这再次开始引发错误。见拉贾斯的回答。 (谢谢你,拉贾斯!) 简而言之,请从 github repo 中再次添加插件

cordova plugin add https://github.com/apache/cordova-plugin-file-transfer.git

【讨论】:

感谢您的回答。但是 iOS 构建呢?是否需要将 iOS 中的 url 列入白名单? 是的,关于 iOS 和 WIndows 的问题相同,但看起来这可能只适用于 Android? (见cordova.apache.org/docs/en/9.x/reference/…只支持Andorid) 我不知道,还没到iOS。如果您解决了它,将不胜感激这里的解决方案。 :)【参考方案2】:

Cordova 10+ 包含 Whitelist 类,不需要外部插件。除了删除它,您还需要更新文件传输插件。

所以,你需要做两件事:

    更新文件传输插件。尽管不再推荐使用此插件,但幸运的是,开发人员已更新插件以支持新的 Whitelist 类,该类现在默认包含在 Cordova 中。您必须通过直接从 github 存储库安装来做到这一点:

    cordova 插件添加https://github.com/apache/cordova-plugin-file-transfer.git

    移除白名单插件

    cordova 插件 rm cordova-plugin-whitelist

对 thread 中的原始回复的 H/T

【讨论】:

救命稻草,工作了?【参考方案3】:

cordova 版本 10.0.0 或更高版本不需要 cordova-plugin-whitelist 插件,您只需将其删除即可。 cordova 10.0.0 或 android 10.0.0 (API 30) 具有内置核心白名单,因此您可以删除并重新构建

【讨论】:

【参考方案4】:

我想你有同样的问题我必须解决。

转到您的 Cordova 文件夹路径并编辑 package.json 文件,删除引用 cordova-plugin-whitelist 的两行。

之后一切都会完美。

【讨论】:

以上是关于android 10 不支持白名单插件的主要内容,如果未能解决你的问题,请参考以下文章

uniapp 监听通知栏消息插件(支持白名单黑名单过滤) Ba-NotifyListener

passwall设置白名单

Nginx解决跨域配置(Cors),支持白名单

Cordova Android 不允许向 fb-messenger 打开列入白名单的意图

如何设置防火墙白名单

哪款路由器可以支持白名单设置?即只能访问指定的URL! 谢谢!