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