it-roy-ru.com

Кордова не создает AndroidManifest.xml

Я работаю в 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\platform\Android\AndroidManifest.xml' на Object.fs.openSync (fs.js: 646: 18) на Object.fs.readFileSync (fs.js: 551: 33) at Object.parseElementtreeSync (D:\Projects\testApp1\platform\Android\cordova\node_modules\cordova-common\src\util\xml-helpers.js: 180: 27) на новом AndroidManifest (D:\Projects\testApp1\platform\Android\cordova\lib\AndroidManifest.js: 29: 20) в AndroidProject.getPackageName (D:\Projects\testApp1\platform\Android\cordova\lib\AndroidProject.js: 99: 12) на Api.addPlugin (D:\Projects\testApp1\platform\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)

Может кто-нибудь, пожалуйста, помогите?

23
Kamran

Окончательное редактирование:

cordova-Android 7.1.4 вышел, он должен решить большинство подобных проблем.

Правка:

По мере того, как люди продолжают голосовать, я дам более подробную информацию о проблеме.

Проблема на самом деле не в том, что плагин пишет на AndroidManifest.xml или config.xml. Это правда, что местоположение изменилось, и плагины должны обновить путь, но это не обязательно, и Cordova позаботится о новых путях.

Проблема в том, что некоторые плагины используют тег source-file для вещей, которые не являются исходным кодом. (т. е. используя его для копирования изображений вместо использования тегов resource-file) Это создает папку res (или lib), которая вводит в заблуждение Cordova, заставляя его верить, что это старый проект Eclipse, хотя на самом деле это проект студии Android, и ищет файлы на старых местах вместо того, чтобы смотреть на новые места.

Это было исправлено в cordova-Android и будет исправлено в следующем выпуске . Обходной путь - поиск плагина с помощью тега source-file и обновление его для использования тега resource-file

СТАРЫЙ ОТВЕТ:

Сейчас в app/src/main/AndroidManifest.xml.

Если плагин пишет на нем, он должен быть обновлен, чтобы писать в нужном месте.

Прочитайте релиз cordova-Android 7.0.0 запись в блоге

27
jcesarmobile

Cordova CLI v8.0 будет использовать [email protected] по умолчанию.

Поскольку большинство плагинов cordova еще не поддерживают [email protected], вы также можете попробовать использовать более старый, указав версию:

cordova platform add [email protected]

Или, если вам удобно использовать [email protected], вы также можете подождать, пока обновление cordova-plugi-admobpro будет поддерживать [email protected], оно скоро появится.

34
Raymond Xie

В файле config.xml проекта cordova в разделе xml tag <platform name="Android"> добавьте следующий тег:

<resource-file src="platforms/Android/app/src/main/AndroidManifest.xml" target="AndroidManifest.xml" />
8
Sukalyan Debsingha

Я просто исправил ошибку, скопировав AndroidManifest.xml In

платформы\Android\приложение\SRC\главная \ 

в 

платформы\Android \

2
JeffNhan

Понижение с 7.0 до 6.4 помогло мне

cordova platform rm Android
cordova platform add [email protected]
cordova build
1
Solvik

Проблема, как представляется, заключается в том, что вы пытаетесь выполнить сборку для выпуска одновременно с локальным запуском приложения. Я останавливаю приложение на localhost, а затем собираю его для релиза. Задача решена.

0
Ezequias Aramburu

У меня была проблема с пользовательским плагином, создающим папку libs в платформы\Android. Это заставило Кордову поверить, что мой проект был проектом Eclipse, и поэтому он искал AndroidManifest в старом месте.

Если вы обновляетесь до Cordova Android +7.0.0, убедитесь, что платформы\Android не содержат следующие элементы:

  • AndroidManifest.xml 
  • лИЭС
  • рез

это ссылка помогло

0
Alessandro Lallo
  1. Во-первых, убедитесь, что плагин поддерживает Cordova Android 7.0.0+.
  2. Удалите все эти папки или файлы: ['AndroidManifest.xml', 'libs', 'res'] в корневом каталоге платформы/Android. 

Cordova использует эти файлы, чтобы определить, является ли ваш проект проектом Eclipse. Если они существуют, ваш проект будет рассматриваться как проект Eclipse со старой структурой пути. Некоторые плагины могут создавать эти файлы/папки в вашей папке Android.

0
johnny