Cordova不会创建AndroidManifest.xml

时间:2017-12-21 14:14:09

标签: android cordova admob phonegap

我在Cordova和AndroidStudio工作,以创建Android / iOS应用程序。一切都工作正常,直到我昨天将我的Cordova更新为8。我还将Node更新到最新版本。当我创建Cordova项目并添加Android平台时。它产生一个完全不同的目录结构。我在项目的平台目录assets中看不到ressrcD:\testApp1\platforms\android个文件夹。更重要的是,上面的目录缺少AndroidManifest.xml,这导致admob插件无法添加。

以下是添加插件时出现的错误:

  

无法安装'cordova-plugin-admobpro':错误:ENOENT:没有这样的文件或目录,打开'D:\ Projects \ testApp1 \ platforms \ android \ AndroidManifest.xml'           在Object.fs.openSync(fs.js:646:18)           at Object.fs.readFileSync(fs.js:551:33)           at Object.parseElementtreeSync(D:\ Projects \ testApp1 \ platforms \ android \ cordova \ node_modules \ cordova-common \ src \ util \ xml-helpers.js:180:27)           在新的AndroidManifest(D:\ Projects \ testApp1 \ platforms \ android \ cordova \ lib \ AndroidManifest.js:29:20)           在AndroidProject.getPackageName(D:\ Projects \ testApp1 \ platforms \ android \ cordova \ lib \ AndroidProject.js:99:12)           在Api.addPlugin(D:\ Projects \ testApp1 \ platforms \ android \ cordova \ Api.js:223:57)           at handleInstall(C:\ Users \ Rao \ AppData \ Roaming \ npm \ node_modules \ cordova \ node_modules \ cordova-lib \ src \ plugman \ install.js:594:10)           在C:\ Users \ Rao \ AppData \ Roaming \ npm \ node_modules \ cordova \ node_modules \ cordova-lib \ src \ plugman \ install.js:357:28           在_fulfilled(C:\ Users \ Rao \ AppData \ Roaming \ npm \ node_modules \ cordova \ node_modules \ cordova-lib \ node_modules \ q \ q.js:787:54)           at self.promiseDispatch.done(C:\ Users \ Rao \ AppData \ Roaming \ npm \ node_modules \ cordova \ node_modules \ cordova-lib \ node_modules \ q \ q.js:816:30)

有人可以帮忙吗?

9 个答案:

答案 0 :(得分:36)

Cordova CLI v8.0默认使用cordova-android@7.0.0

由于大多数cordova插件尚不支持cordova-android@7.0.0,您还可以通过指定版本来尝试使用较旧的插件:

cordova platform add android@6.4.0

或者,如果您对使用cordova-android@7.0.0感到满意,也可以等待cordova-plugi-admobpro上的更新以支持cordova-android@7.0.0,即将推出。{/ p >

答案 1 :(得分:29)

最终编辑:

cordova-android 7.1.4已经出来了,应该解决大部分此类问题。

编辑:

随着人们不断提出答案,我将提供有关此问题的更多详细信息。

问题不在于AndroidManifest.xmlconfig.xml上的插件。确实,位置发生了变化,插件应该更新路径,但它不是强制性的,而Cordova负责新路径。

问题是使用source-file标记的一些插件用于非源代码的内容。 (即,使用它来复制图像而不是使用resource-file标签) 这会创建一个让Cordova感到困惑的res文件夹(或lib),让它相信它是一个古老的Eclipse项目,而它真的是一个Android工作室项目,并且在旧的位置上搜索文件而不是查找进入新的地点。

这已在cordova-android中修补,将在下一版本中修复。 解决方法是使用source-file标记查找插件并将其更新为使用resource-file标记

老答案:

现在位于app/src/main/AndroidManifest.xml

如果插件正在写入,则应将其更新为在正确的位置写入。

阅读cordova-android 7.0.0发布blog post

答案 2 :(得分:9)

在cordova项目的config.xml文件中,在xml标记<platform name="android">部分下,添加以下标记:

<resource-file src="platforms/android/app/src/main/AndroidManifest.xml" target="AndroidManifest.xml" />

答案 3 :(得分:3)

我只是通过复制AndroidManifest.xml来修复错误 在

  

platforms \ android \ app \ src \ main \

  

平台\机器人\

答案 4 :(得分:2)

从7.0降级到6.4对我来说是成功的秘诀

// template
<div ref="carousel">

// script
new Flickity(this.$refs.carousel)

答案 5 :(得分:0)

  1. 首先确保插件支持cordova android 7.0.0 +
  2. 删除所有这些文件夹或文件:platform / android根目录中的['AndroidManifest.xml','libs','res']。

Cordova使用这些文件来确定您的项目是否是Eclipse项目。如果存在,则您的项目将被视为具有旧路径结构的Eclipse项目。某些插件可能会在您的android文件夹中创建这些文件/文件夹。

答案 6 :(得分:0)

问题似乎出在您尝试在本地运行App的同时构建发行版时。我在本地主机上停止该应用程序,然后进行发布。问题解决了。

答案 7 :(得分:0)

我的问题是在Platforms \ android中创建libs文件夹的自定义插件。这使科尔多瓦相信我的项目是一个蚀项目,因此它正在寻找旧版本的AndroidManifest。

如果您升级到Cordova Android +7.0.0,请确保platform \ android不包含以下项目:

  • AndroidManifest.xml
  • res

这个link帮助了

答案 8 :(得分:0)

这对我有用。

package.json 中添加 cordova-android 版本

 "cordova-android": "~6.3.0"

然后添加平台

cordova platform add android