React native: проект Android не найден. Может быть, сначала запустить реагирующий Android?


89

У меня была проблема в моем проекте React-Native, который раньше работал нормально, но внезапно перестал работать. Всякий раз, когда я использовал команду:

react-native run-android

Я получал ошибку :

Проект Android не найден. Может быть, сначала запустить реагировать на родной андроид?

Я пробовал запустить:

react-native android

Но он сказал:

Unrecognized command 'android' Run react-native --help to see list of all available commands

После попытки:

D:\ProjectRoot\ReactNativeProjects\AwesomeProject>react-native eject

Возвращенная ошибка была:

Сканирование папок на наличие символических ссылок в D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (48ms). Приложение nameдолжно быть определено в app.jsonфайле конфигурации для определения имени проекта. Он не должен содержать пробелов и тире.

Это файл app.json:

{
  "expo": {
    "name": "AwesomeProject",
    "description": "A very interesting project.",
    "slug": "AwesomeProject",
    "privacy": "public",
    "sdkVersion": "30.0.0",
    "platforms": ["ios", "android"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "package": "com.project.first"
    },
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/icon.png",
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ]
  }
}

1
если в корневой директиве отсутствует папка android, запустите команду response-native eject.
Хуршид Ансари

1
@Khurshid Ansari, ваше решение не сработало, так как появляется ошибка: «Имя приложения должно быть определено в конфигурационном файле app.json, чтобы определить имя проекта», даже если имя определено. См. Обновленный вопрос.
Абхинав Саксена

Ответы:


155

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

Чтобы решить эту проблему, обновите пакет react-native.

  1. Зайдите в корень проекта .

  2. Обновите собственный пакет React в командной строке , набрав:

    react-native upgrade.

  3. Затем нажмите «Принять», чтобы обновить все файлы, набрав y (Yes)в командной строке .

Ссылка: https://github.com/facebook/react-native/issues/9312


9
Спасенный день :)
Мухаммад

где найти собственный пакет React? пожалуйста, сделайте четкие шаги
Лутая Хузайфа Идрис

@LutaayaHuzaifahIdris Как упоминалось в ответе, собственный пакет реакции можно обновить в корне проекта. Итак, откройте командную строку и перейдите в корень проекта. Затем обновите собственный пакет реакции.
удаи

это обновленная реакция-native, чего я не хотел.
Хуршид Ансари

Мое рабочее решение приведено ниже, ни одно из вышеперечисленных не помогло мне: 1. Откройте диспетчер AVD в Android Studio и запустите виртуальное устройство (после этого вы можете закрыть AS) 2. CMD в папку проекта и введите «expo start» 3. Как только Expo начнется, выберите вариант 2, который называется «Нажмите a для эмулятора Android». Он установит expo на виртуальное устройство, и вы сможете тестировать оттуда
Пол Гваманда

23

Я знаю, что это старый вопрос, но ни одно из этих решений не помогло мне, и, возможно, есть другие, подобные мне. Я решил свою проблему, запустив эту команду раньшеrun-android

react-native eject

1
по какой-то причине это тоже помогло мне, я попробовал более новую версию реакции на собственное обновление, используя "response-native-git-upgrade", как предлагалось, когда вы запускаете "response-native upgrade", это не сработало для меня.
Зайд Куреши

2
эта команда повторно создаст папку android и ios в вашем проекте
Хуршид Ансари

1
Думаю, это правильный ответ. Не только потому, что это сработало для меня, но и потому, что, как я понял из документации, это предполагаемый способ сделать это и, следовательно, без других побочных эффектов.
Daan

8
ejectКоманда была удалена из react-native.
Phantom Watson

17

Откройте корневой каталог проекта React Native и найдите android -> app -> build -> intermediate -> signed_config -> debug -> out -> signed-config.json. удалить signature-config.json этот файл попробуйте еще раз

Или

1) Иногда, если у нас есть более старая версия react native и некоторые из недавно установленных пакетов не поддерживают старую версию. Затем вам нужно обновить собственный проект с помощью команды response-native upgrade.

  1. После обновления текущего проекта до новой версии эта ошибка должна быть устранена.

9

Обязательно запустите проект с помощью команды (не expo):

react-native init <your-project-name>

Если папка существует, выполните:

реагировать-родной выброс


В последней версии response-native это предложение появляется, когда вы пытаетесь выполнить команду:

react-native eject

Сканирование папок на наличие символических ссылок в D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (48ms). Приложение nameдолжно быть определено в app.jsonфайле конфигурации для определения имени проекта. Он не должен содержать пробелов и тире.

Теперь, когда вы вводите следующую команду:

D:\ProjectRoot\ReactNativeProjects\AwesomeProject>react-native upgrade

Появляется следующее:

Сканирование папок на предмет символических ссылок в D: \ ProjectRoot \ ReactNativeProjects \ AwesomeProject \ node_modules (56 мс) Вам следует рассмотреть возможность использования нового инструмента обновления на основе Git. Это упрощает обновление за счет автоматического разрешения большинства конфликтов. Чтобы использовать его: - Вернитесь к старой версии React Native - Запустите «npm install -g response-native-git-upgrade» - Запустите «response-native-git-upgrade» См. Https://facebook.github.io /react-native/docs/upgrading.html версия для реакции в "package.json" не соответствует установленной версии в "node_modules". Попробуйте запустить "npm install", чтобы исправить это. Прерывание.

В предложениях команд Facebook, связанных с реагированием, есть четкое решение.

Эти команды проверяют текущую версию и необходимость обновления.

Еще одно решение:

react-native: команда не run-androidраспознана. Может быть вызвано установкой npm

См. Также:

Решение «Экспо: не удается найти модуль LogReporter»


Принял ответ за меня, +10 респ. кому: @Abhinav
Саид

8

Мне это понравилось ... Сработало !!

  1. В корне проекта CMD запустите обновление с поддержкой реакции .
  2. если у вас все еще возникают проблемы, убедитесь, что у вас есть react-native в json-зависимостях в package.json , добавьте его, если нет
  3. если у вас все еще возникают проблемы, получите версию react native в cmd с помощью response-native -v и проверьте, совпадают ли значения, возвращаемые в cmd и package.json. обновите package.json значением, возвращенным в cmd

Здесь моя проблема решена.


5

Откройте командную строку от имени администратора и перейдите в папку проекта, запустите android (npx react-native run-android)


3

У нас возникла эта проблема, потому что файлы из папки android gradlew и gradlew.bat (сценарий запуска Gradle для UN * X и Windows соответственно) каким-то образом попали в глобальный файл .gitignore и поэтому не были представлены в локальных средах.

Фактически запуск команды response-native upgrade восстанавливает эти файлы, тем самым решая проблему.


3

В качестве дополнения, в случае, если команда response-native не найдена, вам следует установить собственный CLI для реакции:

npm install -g react-native-cli

Затем вы можете выполнить шаги, указанные выше.

Подробнее: response-native: команда не найдена


2

Если вы начали свой проект, подписавшись на

npm install -g create-react-native-app
create-react-native-app MyReactNative
npm install -g react-native-cli
npm start

после этого вы можете столкнуться с проблемой, упомянутой выше в вопросе Итак, решение:

npm run eject

2

Удалите файл: React Native Project Root Directory и найдите android -> app -> build -> intermediate -> signed_config -> debug -> out -> signed-config.json.


2

Я столкнулся с этой проблемой сегодня, и ни одно из решений у меня не сработало, поэтому я нашел другое.

Плохо отформатированный файл AndroidManifest.xml вызовет эту проблему , возможно, вы установили заставку, как я, сегодня, и неправильно отформатировали AndroidManifest


1

Здесь app.json не имеет имени, но имеет конфигурацию, связанную с экспо. Так что просто добавьте поля name и display name в app.json.

app.json (первые две строки):

{
"name": "AwesomeProject",
"displayName": "Awesome Project",
"expo": {
    "name": "AwesomeProject",
    "description": "A very interesting project.",
    "slug": "AwesomeProject",
    "privacy": "public",
    "sdkVersion": "30.0.0",
    "platforms": ["ios", "android"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "package": "com.project.first"
    },
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/icon.png",
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ]
  }
}

После этого просто запустите:

$ react-native eject

info Создание папки iOS.

info Создание папки Android.

Нет необходимости выполнять обновление с поддержкой реакции.


на самом деле "expo eject" тоже работает лучше. Он дал мне варианты, обновил app.json и создал каталоги android / ios.
hp2017

1

Запуск Терминала от имени администратора в Windows помог мне ... Другие решения не работали.


Это всего лишь благодарность Картику Мано, не так ли? Если нет, пожалуйста, поясните, какую дополнительную информацию дает этот ответ.
Юннощ


1

Вы должны запустить свой cmd с правами администратора. Это решило ту же проблему для меня. Не делал "выброса" или чего-нибудь еще.


На один и тот же вопрос можно найти множество похожих ответов. Вместо того, чтобы добавлять свой ответ, вы можете просто проголосовать за существующий ответ, если он вам поможет.
Deepak Terse

1

Откройте корневой каталог проекта React Native и найдите android -> app -> build -> intermediate -> signed_config -> debug -> out -> signed-config.json.

Удалите файл и попробуйте еще раз.



0

Мое рабочее решение ниже, у меня ничего из вышеперечисленного не сработало:

CD в ​​папку вашего проекта и введите expo start --android.

Или долгий путь:

  1. Откройте диспетчер AVD в Android Studio и запустите виртуальное устройство (после этого можно закрыть AS)
  2. CMD в папку вашего проекта и введите 'expo start'
  3. После того, как Expo начнется, выберите вариант 2: «Нажмите a для эмулятора Android».

Он установит expo на виртуальное устройство, и вы сможете протестировать оттуда.


0

Когда я побежал react-native eject, то получил такую ​​ошибку:

Both the iOS and Android folders already exist! Please delete `ios` and/or `android` before ejecting.
  • Удалите MyProject/androidпапку.
  • Запустить react-native ejectЭто сгенерировало androidпапку

  • Затем запускаем react-native run-androidсборку android


0

Вам следует подумать об использовании нового инструмента обновления на основе Git. Это упрощает обновление за счет автоматического разрешения большинства конфликтов. Чтобы использовать его: - Вернитесь к старой версии React Native - Запустите «npm install -g response-native-git-upgrade» - Запустите «response-native-git-upgrade» См. Https://facebook.github.io /react-native/docs/upgrading.html


0

Если вы создали свой проект с помощью expoкоманды вроде expo init projectname, то после этого вы должны извлечь свой проект:

expo eject

Если вы создали свой проект к тому react-native init projectNameвремени, вы должны использовать

react-native eject

Команда извлечения удалена из встроенного в реакцию github.com/react-native-community/cli/pull/275
Michimcchicken

0

Может уже поздно, заменил Androidпапку из файла резервной копии. У меня это сработало.



0

У меня была такая же ошибка в проекте (созданном с помощью React Native CLI):

введите описание изображения здесь

оказывается, у меня была синтаксическая ошибка в моем файле манифеста Android (android / app / src / main / AndroidManifest.xml).


0

В моем случае я забыл добавить Sudo. Исправлено следующим образом,

sudo npx react-native run-android

0

Удалите подписывание-config.json, затем попробуйте снова реагировать-native run-android

Signing-config.json Путь к файлу: android -> app -> build -> intermediate -> signed_config -> debug -> out -> signed-config.json


0

Я думаю, что вы могли бы проверить еще одну простую вещь: если ранее вы запускали проект как другую роль пользователя, например, в Windows, если вы ранее запускали реагирующий run-android с ролью администратора.


0

Удалите React native android, build folderа затем повторите командуnpx react-native run-android


0

В моем случае у меня не было необходимых разрешений для моей папки проекта.

Если это ваш случай, просто щелкните правой кнопкой мыши папку> Свойства> Безопасность> Дополнительно, а затем передайте право собственности на папку вашему пользователю, включая подпапки. Это должно сделать это

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.