关于编辑cordova-plugin-mauron85-background-geolocation插件的技术疑问
关于Cordova插件修改的疑问解答
咱们把这几个Cordova插件开发里的常见困惑一个个理清楚:
1. 应该编辑哪个文件?
直接给结论:优先修改Mobile-App\plugins\cordova-plugin-mauron85-background-geolocation\android\plugin\src\main\java\com\marianhello\bgloc\LocationService.java,另外两个目录的文件别碰,原因如下:
node_modules里的文件是npm下载的原始插件包,下次执行npm install或者cordova prepare时,大概率会被重新下载的包覆盖,而且它不会自动同步到平台项目里。platforms/android里的文件是已经同步到Android原生项目的代码,直接改这里的话,下次cordova prepare或者构建时,会被plugins目录的内容覆盖,等于白忙活。
修改plugins目录的文件后,执行cordova prepare android(或者ionic cordova prepare android),就能把改动同步到platforms目录的对应文件里了。
2. 为什么会出现多个内容相同的文件?
这是Cordova的工作机制决定的,三个目录的作用完全不同:
node_modules/cordova-plugin-mauron85-background-geolocation:npm管理的依赖包存储目录,是插件的原始代码源,供npm安装、更新操作使用。plugins/cordova-plugin-mauron85-background-geolocation:Cordova本地维护的插件副本目录,Cordova在构建应用时,会从这里读取插件代码,同步到对应平台的项目中。platforms/android/src/...:针对Android平台生成的原生项目目录,这里的插件代码是从plugins目录同步过来的,和你的应用代码一起编译成最终的APK。
这三个目录的文件是同步关系,所以内容会保持一致。
3. 修改后改动何时生效?能否不重装插件直接编译应用?
- 改动不会立即生效,因为
platforms目录的代码还是旧的。你需要先执行cordova prepare android(或ionic cordova prepare android),把plugins目录的修改同步到platforms目录,然后重新编译应用(cordova build android或ionic cordova build android),改动就会生效。 - 完全可以不用创建插件新版本、不用卸载重装插件!只要按上面的步骤修改
plugins目录的文件,同步后编译应用就行。不过要注意:如果以后你执行cordova plugin remove再重新安装这个插件,或者npm install覆盖了node_modules的插件包后再执行cordova prepare,你的自定义改动会丢失,所以最好把修改后的文件备份一份,或者把插件复制到本地目录,用cordova plugin add ./本地插件路径的方式安装,这样改动就不会被覆盖了。
内容的提问来源于stack exchange,提问作者Slappy
相关产品推荐
相关产品推荐

