由于旧Cordova项目设置存在很多问题。我试图从头开始重新创建一个新项目。但是,在添加插件cordova-plugin-background-geolocation时,似乎期望AndroidManifest.xml
位于我想要的旧位置(platforms/android/AndroidManifest.xml
),而不是现在的清单(platforms/android/app/src/main/AndroidManifest.xml
)。如何让插件识别新位置?
修改 我意识到我提到了错误的插件。我的意思是phonegap-backgroundjs 。但问题应该类似。
答案 0 :(得分:1)
如果我创建一个新项目,添加cordova-plugin-background-geolocation插件,然后添加android平台(版本7.1.0),它会成功更新清单。它安装了插件的1.0.6版本。
您可以使用
检查您拥有的插件版本cordova plugin list
如果您有旧版本,可以尝试删除然后重新添加插件吗?
cordova plugin remove cordova-plugin-background-geolocation
cordova plugin add cordova-plugin-background-geolocation
或者您可以尝试使用Android平台的6.2.3版本而不是最新的版本:
cordova platform remove android
cordova platform add android@6.2.3
答案 1 :(得分:1)
这是一个cordova-android bug(有点像)。
它有一些代码来检查项目是否是Android Studio项目或Eclipse项目,它是通过检查platforms/android/
中的某些文件夹来完成的。
其中一个文件夹是res
文件夹。
现在,如果您检查该插件,它会使用source-file
标记添加图片(https://github.com/colibri-software/cordova-plugin-background-geolocation/blob/master/plugin.xml#L32)。这会在platforms/android/
的根目录中创建res文件夹并混淆cordova检查,因此它认为它是一个Eclipse项目并在旧位置查找AndroidManifest.xml。
因此,您的选项会降级至cordova-android 6.4.0或更早版本,或修复该插件以使用resource-file
标记而非source-file
标记来复制图像。
答案 2 :(得分:1)
Cordova Android 7.x导致了这个问题(请参阅此处的博文:https://cordova.apache.org/announcements/2017/12/04/cordova-android-7.0.0.html)。每个支持Android的插件都需要更新AndroidManifest.xml
的路径,如下所示:
<!-- If an existing plugin.xml references AndroidManifest.xml like this -->
<edit-config file="AndroidManifest.xml" target="/manifest/application" mode="merge">
<!-- it needs to change to the new path -->
<edit-config file="app/src/main/AndroidManifest.xml" target="/manifest/application" mode="merge">
但是在每个开发人员使用新路径更新他/她的插件之前,您需要降级到Cordova&lt; 7.0或者对有问题的插件进行分叉并自己进行更改(并且可以向插件开发者提交PR以便他们可以解决问题)。 : - )