React Native Android Build Error MainActivity.java:29: ошибка: не удается найти символ

84

Я получаю эту ошибку при попытке скомпилировать приложение для Android React Native. Приложение Android не может разрешить BuildConfig.DEBUG.

:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac
/Users/amirsharif/mobile-rappad/android/app/src/main/java/com/rappadmobile/MainActivity.java:29: error: cannot find symbol
                .setUseDeveloperSupport(BuildConfig.DEBUG)
                                        ^
  symbol:   variable BuildConfig
  location: class MainActivity
>1 error
:app:compileDebugJavaWithJavac FAILED

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

Мне, вероятно, придется что-то изменить в Gradle, чтобы он снова генерировал нужные файлы.

/**
 * Automatically generated file. DO NOT MODIFY
 */
package com.app;

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.rappadmobile";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "1.0";
}
Перегрузка119
источник

Ответы:

115

У меня была такая же проблема, и она была решена путем простого добавления следующего оператора импорта в MainApplication.java:

import com.facebook.react.BuildConfig;
Манодж Гоэль
источник
Работает. Спасибо. Моя ошибка была: ошибка: не удается найти символ return BuildConfig.DEBUG; // ------ Это упоминается в коде без импорта. ^ символ: переменная BuildConfig
MPV
1
Работал как шарм! :)
AndrewHenderson
Это сработало, но почему мне пришлось добавить его вручную, остается загадкой. : shrug:
Майк С.
У тебя есть мое время. Спасибо!!
Anilkumar iOS - ReactNative
2
Предупреждение: выполнение этого в react-native может привести к сбою приложения. github.com/wix/react-native-navigation/issues/…
неграмотный
83

Способ, которым Android знает, где найти определенные файлы и как подключить определенные файлы, заключается в использовании полей, установленных в AndroidManifest.xml. Поскольку стандартная настройка проекта React Native ссылается на все с помощью. (Имя-ресурса), это означает, что все будет разрешено с учетом имени пакета, установленного в<manifest> теге. Итак, чтобы все работало из коробки и все создавалось должным образом, путь к MainActivity.java должен совпадать с именем пакета.

пример:

имя пакета ваших приложений: com.mycompanyname.myappname

расположение MainActivity.java: android/app/src/main/java/com/mycompanyname/myappname/MainActivity.java

Горджанц
источник
5
Имя пакета com.mycompany.myapp чувствительно к регистру. Вы также должны изменить applicationId в вашем /android/app/build.gradle
Ed of the Mountain
1
Это была моя проблема, спасибо. Я пытался переименовать приложение, но в некоторых местах получил разные имена. Я должен был убедиться, что имя приложения похоже и все строчные буквы в папке файловой системы, в app / build.gradle applicationId, в атрибуте «package» AndroidManifex.xml и в импорте пакетов в MainActivity.java и MainApplication.java. - после этого сборка прошла.
Алексей Гринько
41

Я перестроил проект с помощью react-native upgrade. Моя проблема заключалась в том, что у меня были старые файлы, которые ссылались на старые имена пакетов (потому что я изменил имя приложения в package.json). Удалив их, я решил проблему.

Перегрузка119
источник
Спасибо огромное! Потратил дни, пытаясь понять это.
Дэвид Б.
Каталоги со старым именем приложения, которое мне нужно было удалить, можно найти в ./android/app/src/main/java/com ..and ./ios
remo
Сработал
35

В вашем MainActivity.javaвы можете проверить, что первая строкаpackage com.YOU_APP_NAME;

Если эта строка не существует, вы должны добавить это.

Rom1
источник
1
Я попытался изменить имя своего пакета, и это было последнее, что я забыл! Спасибо!
Матс де Сварт
3
Для справки: мне также нужно было изменить имя пакета в MainApplication.java.
bardu
15

В моем случае я изменил имя пакета как в файле BUCK, так и в файле манифеста.

В файле BUCK измените следующее.

android_build_config(
    name = "build_config",
    package = "NEW_PACKAGE_NAME",
)

android_resource(
    name = "res",
    package = "NEW_PACKAGE_NAME",
    res = "src/main/res", )
rakeshNS
источник
1
Решил мой случай, выполнив это + переименование пакетов во всех и всех файлах Java в моем проекте
Антуан Оффре
13

Комбинация некоторых ответов мне помогла, резюме:

  • Убедитесь, что имена ваших пакетов Java правильные ( MainApplication.javaи т. Д.)
  • обновить имя пакета в файле сборки gradle
  • обновить имя пакета в файле манифеста
  • обновить имя пакета в BUCKфайле
  • убедитесь, что путь к вашим источникам javascript - это структура папок, которая соответствует имени вашего пакета
WiRa
источник
Первый пункт: «Убедитесь, что имена ваших пакетов javascript верны» - мы говорим о том package.jsonи что вы подразумеваете под словом «подключиться»?
Norfeldt
Это уже давно ... но под именами пакетов я имею в виду первые строки в java-файлах, которые выглядят примерно так: «package com.yourname.yourproject»
WiRa
7

Если вы переименовали свой, bundle identifierвам, вероятно, придется изменить:

Ваш android/app/src/main/....../MainApplication.java пакет и импорт .

Несмотря на то, что я использовал react-native-rename пакет npm , он не позаботился о некоторых файлах MainApplication.javaи MainActivity.java.

неопределенный
источник
6

Обновление response-native решило эту ошибку -

react-native upgrade

Теперь строим снова -

react-native run-android
Тамандип Сингх
источник
Отличное предложение, хотя оно и удаляет некоторые изменения в определенные файлы. Мне пришлось запустить react-native linkснова, чтобы повторно связать собственные зависимости.
Элиот
3

Удалите старые файлы, которые могут быть в android / app / src / main / java / com. Просто сохраните файл с новым именем приложения. Тогда сделай react-native upgrade.

Анкур Кедиа
источник
0

Проверьте, не пропустили ли вы установку обработчика response-native-gesture.

пряжей

пряжа добавить реагировать-родной-жест-обработчик

или с npm

npm install --save response-native-gesture-handler

потом

реагировать на родную ссылку реагировать на родной жест-обработчик

Надишан Герат
источник
0

Я испытал это, следуя https://dev.to/karanpratapsingh/quick-guide-for-updating-package-name-in-react-native-3ei3 . Я переименовал свое приложение из com.company_appв com.mycompany.myapp, по-видимому, были некоторые файлы, которые мне все еще нужно было обновить, но они не были включены в руководство, которому я следовал, я думаю, что руководство предназначено только для общего характера, например, новое приложение для реакции, я решил это путем выполнения глобального поиска com.company_appи простой замены каждого из них, com.mycompany.myappкогда это имеет смысл.

апрельминтапинеда
источник