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";
}

Відповіді:


115

У мене була та сама проблема, і вона була вирішена простим додаванням наступної заяви про імпорт у MainApplication.java:

import com.facebook.react.BuildConfig;

Працює. Дякую. Моєю помилкою було: помилка: не вдається знайти символ return BuildConfig.DEBUG; // ------ Це вказано в коді без імпорту. ^ символ: змінна BuildConfig
MPV

1
Працював як оберіг! :)
AndrewHenderson

Це спрацювало, але чому мені довелося додавати його вручну - загадка. : shrug:
Майк С.

У вас є мій час. Дуже дякую!!
Anilkumar iOS - ReactNative

2
Попередження, виконуючи це в реакції-native, може спричинити збій програми. github.com/wix/react-native-navigation/issues/…
неписьменний

83

Android знає, де знайти певні файли та як підключити певні файли, за допомогою полів, встановлених у AndroidManifest.xml. Оскільки налаштування проекту React Native за замовчуванням посилаються на все з. (Name-of-resource), це означає, що все буде вирішено щодо імені пакета, встановленого в <manifest>тезі. Отже, щоб все працювало нестандартно і все генерувалось, як очікувалося, шлях до MainActivity.java повинен бути таким самим, як і назва пакета.

приклад:

назва вашого пакету програм: com.mycompanyname.myappname

розташування MainActivity.java: android/app/src/main/java/com/mycompanyname/myappname/MainActivity.java


5
Ім'я пакета "com.mycompany.myapp" чутливе до регістру. Ви також повинні змінити ідентифікатор програми у вашому /android/app/build.gradle
Ed of the Mountain

1
Це було саме моє питання, дякую. Я намагався перейменувати програму, і в деяких місцях опинився з різними іменами. Мені довелося переконатися, що назва програми схожа, і всі малі регістри в папці файлової системи, в app / build.gradle applicationId, в атрибуті "пакет" AndroidManifex.xml та в імпорті пакетів на MainActivity.java та MainApplication.java - збірка пройшла після цього.
Олексій Гринько

41

Я відновив проект за допомогою react-native upgrade. Тоді моєю проблемою було те, що у мене були старі файли, які посилалися на старі імена пакетів (тому що я змінив назву програми в package.json). Видаливши їх, я вирішив проблему.


Дуже дякую! Цілими днями намагався це зрозуміти.
Девід Б.

Каталоги зі старим AppName, який мені потрібно було видалити, можна знайти в ./android/app/src/main/java/com ..and ./ios
remo

Працював як
оберіг

35

У вашому MainActivity.java, ви можете перевірити перший рядок єpackage com.YOU_APP_NAME;

Якщо цього рядка не існує, додайте його.


1
Я спробував змінити назву пакета, і це було останнє, про що я забув! Thnx!
Mats de Swart

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", )

1
Вирішив мій випадок, зробивши це + перейменувавши пакети у всіх Java-файлах у моєму проекті
Антуан Оффрей

13

Мені допомогло поєднання деяких відповідей, резюме:

  • Переконайтесь, що імена ваших пакунків Java правильні ( MainApplication.javaтощо)
  • оновіть ім'я пакета у файлі збірки gradle
  • оновіть ім'я пакета у файлі маніфесту
  • оновіть ім'я пакету у BUCKфайлі
  • переконайтесь, що шлях до джерел javascript є структурою папок, яка відповідає імені вашого пакета

Перший пункт "Переконайтеся, що імена ваших пакунків javascript правильні" - ми говоримо про package.jsonте і що ви маєте на увазі під словом "підключитися"?
Норфельдт

Це вже деякий час тому ... але під іменами пакунків я маю на увазі перші рядки у файлах 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-handler

або з 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коли це має сенс.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.