我在Cordova和AndroidStudio工作,以创建Android / iOS应用程序。一切都工作正常,直到我昨天将我的Cordova更新为8。我还将Node更新到最新版本。当我创建Cordova项目并添加Android平台时。它产生一个完全不同的目录结构。我在项目的平台目录assets
中看不到res
,src
和D:\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)
有人可以帮忙吗?
答案 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.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发布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)
Cordova使用这些文件来确定您的项目是否是Eclipse项目。如果存在,则您的项目将被视为具有旧路径结构的Eclipse项目。某些插件可能会在您的android文件夹中创建这些文件/文件夹。
答案 6 :(得分:0)
问题似乎出在您尝试在本地运行App的同时构建发行版时。我在本地主机上停止该应用程序,然后进行发布。问题解决了。
答案 7 :(得分:0)
我的问题是在Platforms \ android中创建libs文件夹的自定义插件。这使科尔多瓦相信我的项目是一个蚀项目,因此它正在寻找旧版本的AndroidManifest。
如果您升级到Cordova Android +7.0.0,请确保platform \ android不包含以下项目:
这个link帮助了
答案 8 :(得分:0)
这对我有用。
在 package.json 中添加 cordova-android 版本
"cordova-android": "~6.3.0"
然后添加平台
cordova platform add android