cordova Android 10不支持白名单插件

vs3odd8k  于 2022-11-15  发布在  Android
关注(0)|答案(5)|浏览(378)

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

任务:应用程序:编译调试JavaWithJavac D:\工作区\SCL\平台\安卓\应用程序\源代码\主目录\java\组织\apache\cordova\文件传输\文件传输。java:48:错误:无法找到符号导入org.apache.cordova.Whitelist;^符号:类白名单位置:软件包的名称为:apache. cordova。错误:找不到符号白名单白名单=(白名单)gwl.invoke(webView);^符号:类白名单位置:文件传输的方法是:在文件传输的过程中,将一个文件传输到另一个文件。错误:找不到符号白名单白名单=(白名单)gwl.invoke(webView);^符号:类白名单位置:注意:某些输入文件使用或覆盖已弃用的API。使用-Xlint:deprecation重新编译以了解详细信息。注意:某些输入文件使用未检查或不安全的操作。注意:使用-Xlint重新编译:取消选中以了解详细信息。3个错误
似乎“文件传输”需要“白名单插件”,但添加Android〉10时跳过“白名单插件”
这在android 9中不会发生
有谁能帮忙吗?

ttcibm8c

ttcibm8c1#

Cordova 10+包含白名单类,不需要外部插件。除了删除它,您还需要更新文件传输插件。
因此,您需要做两件事:
1.更新文件传输插件。虽然这个插件不再被推荐,但开发者已经更新了插件以支持新的白名单类,它现在默认包含在Cordova中。你必须直接从github repo安装来完成这一操作:
cordova插件add https://github.com/apache/cordova-plugin-file-transfer.git
1.删除白名单插件
cordova插件rm cordova插件白名单
在此thread中对原始响应的H/T

rks48beu

rks48beu2#

Sanjay和弗朗西斯科的回复帮助我找到了正确的解决方案。沿着修复package.json和项目中其他存在的“白名单插件”,您还需要运行以下命令从Android/iOS平台卸载它。
ionic cordova plugin rm cordova-plugin-whitelist
更新-不管什么原因,这又开始抛出错误了。看Rajath的回答。(谢谢你,Rajath!)简而言之,从github repo重新添加插件
cordova plugin add https://github.com/apache/cordova-plugin-file-transfer.git

jv4diomz

jv4diomz3#

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

ou6hu8tu

ou6hu8tu4#

我想你和我有同样的问题。
转到您的Cordova文件夹路径并编辑package.json文件,删除引用cordova-plugin-whitelist的两行。
之后一切都会很完美。

lp0sw83n

lp0sw83n5#

同样的事情发生在我身上。在替换白名单类后。它对我有效,所以你可能想试试。

在中将Whitelist类替换为AllowList
cordova-plugin-file-transfer > src > android > FileTransfer.java

// replace
 import org.apache.cordova.Whitelist;

 import org.apache.cordova.AllowList;

// Replace
Whitelist whitelist = (Whitelist)gwl.invoke(webView);
shouldAllowRequest = whitelist.isUrlWhiteListed(source); 

AllowList whitelist = (AllowList)gwl.invoke(webView);
shouldAllowRequest = whitelist.isUrlAllowListed(source);

相关问题