期望Android清单的插件位于/platforms/android/AndroidManifest.xml

时间:2018-05-23 13:07:16

标签: cordova cordova-plugins

由于旧Cordova项目设置存在很多问题。我试图从头开始重新创建一个新项目。但是,在添加插件cordova-plugin-background-geolocation时,似乎期望AndroidManifest.xml位于我想要的旧位置(platforms/android/AndroidManifest.xml),而不是现在的清单(platforms/android/app/src/main/AndroidManifest.xml )。如何让插件识别新位置?

修改 我意识到我提到了错误的插件。我的意思是phonegap-backgroundjs 。但问题应该类似。

3 个答案:

答案 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以便他们可以解决问题)。 : - )