Кордова не создает 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) в 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\ платформы \android\cordova\lib\AndroidProject.js:99:12) в Api.addPlugin (D:\Projects\testApp1\platform \android\cordova\Api.js:223:57) в 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 at _fulfilled (C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_modules\q\q.js:787:54) в self.promiseDispatch.done (C:\Users\Rao\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\node_modules\q\q.js:816:30)

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

7 ответов

Решение

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

Cordova-Android 7.1.2 вышел, это должно решить большинство проблем такого рода.

редактировать:

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

Проблема не в том, что плагин пишет на 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

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Скоро.

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

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

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

cordova platform rm android
cordova platform add android@6.4
cordova build

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

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

в

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

Это сработало для меня.

В package.json добавить Cordova-андроида версию

 "cordova-android": "~6.3.0"

Затем добавьте платформу

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

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

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

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

  • AndroidManifest.xml
  • ЛИЭС
  • Рез

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

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

Другие вопросы по тегам