【问题标题】:How to force cordova to recompile added plugins?如何强制cordova重新编译添加的插件?
【发布时间】:2018-02-08 17:11:58
【问题描述】:

似乎cordova 缓存已编译的插件,当我更改插件的源代码(Windows 上的.java 文件)时,强制cordova 重新编译插件的唯一方法是删除然后再次添加该插件,这是一种痛苦。 有什么办法可以清理cordova缓存或强制它重新编译添加的插件?

【问题讨论】:

  • 我花了一个小时试图弄清楚为什么 java 不会重新编译。我猜 Cordova 认为重新编译源文件并不重要。可惜他们缺少这些基本功能。
  • 出于好奇,您能告诉我您在哪里找到cordova 缓存已编译的插件吗?我一直在寻找插件重新编译几天但找不到答案,关于cordova编译过程如何工作的文档非常差(没有)?好痛啊!!

标签: cordova cordova-plugins


【解决方案1】:

Afaik 无法重新编译原始文件。

最快最脏的方法(仍然是快速检查的最佳方法)是更改下的文件

例如(安卓)

平台/android/src/YOUR_PACKAGE/FILE_TO_CHANGE

这样它会自动重新编译。

很明显,这个文件很容易被删除或覆盖,所以它只是一种快速测试小改动的方法。

【讨论】:

  • 我正在对platforms/android/src/path/to/package/path/to/file 中的插件进行(小)更改,但cordova build android 实际上不会输出新的APK。知道为什么吗?
【解决方案2】:

从cordova>=6.0,您可以安装本地插件路径并将其链接到项目,而不是复制它,这样每次构建时它都会重新编译。

cordova plugin add /local/path/to-plugin/ --link    

https://cordova.apache.org/docs/en/6.x/reference/cordova-cli/index.html#cordova-plugin-command

【讨论】:

  • 我希望我在 5 小时前找到这条评论!
  • 另外,在windows上你可能需要以管理员身份运行这个命令,否则你可能会得到“EPERM: operation not allowed, symlink..”错误
  • 这适用于我在 Linux 上。 * 我首先备份插件文件夹 * cordova plugin rm my-plugin * cordova plugin add /some/path/outside/plgin/folder --link * 我把它保存在插件文件夹之外,这为我节省了一些问题..
【解决方案3】:

不是 afaik,我发现的唯一解决方法是在每次准备应用程序时使用 before_prepare 脚本来删除和添加插件:

/
|--hooks/
   |--before_prepare/
      |--000_RefreshPluginXXX.sh

000_RefreshPluginXXX.sh:

!#/user/bin/env bash
cordova plugin rm yourPlugin
cordova plugin add yourPlugin

See here for details。希望sh文件可以在windows环境下运行,否则可以用.bat文件来实现。

请注意,每次准备应用程序时,这将删除、下载和重新安装每个平台的指定插件(在构建/模拟/编译时进行准备)

【讨论】:

  • 它将重新下载插件,这意味着我的所有更改都将丢失:|
  • 事实上,你可以用这种脚本做任何你想做的事情,例如,一个想法是将你的插件本地保存在另一个文件夹中,从那里编辑和更改并替换最后的顺序带有cordova plugin add path/to/your/local/folder的脚本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
  • 2011-05-11
  • 2011-03-19
相关资源
最近更新 更多