Cordova不会创建AndroidManifest.xml

Kam*_*ran 29 android admob cordova phonegap

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

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

无法安装'cordova-plugin-admobpro':错误:ENOENT:没有这样的文件或目录,在Object.fs.openSync上打开'D:\ Projects\testApp1\platforms\android\AndroidManifest.xml'(fs.js:646 :18)在Object.parseElementtreeSync(D:\ Projects\testApp1\platforms\android\cordova \node_modules\cordova-common\src\util\xml-helpers)的Object.fs.readFileSync(fs.js:551:33)处. js:180:27)在AndroidProject.getPackageName(D:\ Projects\testApp1\platforms\android\cordova)的新AndroidManifest(D:\ Projects\testApp1\platforms\android\cordova\lib\AndroidManifest.js:29:20)\lib\AndroidProject.js:99:12)在handleInstall(C:\ Users\Rao\AppData\Roaming)的Api.addPlugin(D:\ Projects\testApp1\platforms\android\cordova\Api.js:223:57)位于C:\ Users\Rao\AppData\Roaming \npm \node_modules\cordova \node_modules\cordova-lib\plugman\install.js:357:28 at _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)

有人可以帮忙吗?

Ray*_*Xie 39

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,即将推出.

  • 救了我的一天!为我工作. (2认同)
  • 刚刚破坏了一切...:S (2认同)

jce*_*ile 32

最终编辑:

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

编辑:

随着人们不断提高答案,我将提供有关问题的更多细节.

问题不在于插件写在AndroidManifest.xml或上config.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发布博客文章

  • 如果在项目的根目录中有一个'res'文件夹,即使在更新plugin.xml中的路径后仍会出现此错误(由于Eclipse项目检测) (3认同)

Suk*_*gha 17

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

<resource-file src="platforms/android/app/src/main/AndroidManifest.xml" target="AndroidManifest.xml" />
Run Code Online (Sandbox Code Playgroud)