React Yerel Android Derleme Hatası MainActivity.java:29: hata: sembol bulunamıyor


84

React Native android uygulamamı derlemeye çalışırken bu hatayı alıyorum. Android uygulaması BuildConfig.DEBUG'ı çözemiyor.

: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

Bunu sadece true olarak ayarlayarak geçici olarak çözebilirim. Bu, bir uygulama adını değiştirdikten sonra olmuş olabilir (çünkü bu benim de yapmaya çalıştığım bir şeydir).

Muhtemelen Gradle ile bir şeyi değiştirmem gerekiyor, böylece doğru türde dosyaları yeniden oluşturacak.

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

Yanıtlar:


115

Aynı sorunu yaşadım ve aşağıdaki import ifadesini ekleyerek çözüldü MainApplication.java:

import com.facebook.react.BuildConfig;

İşler. Teşekkür. Benim hatam şuydu: hata: sembol bulunamıyor BuildConfig.DEBUG; // ------ Buna kodda içe aktarılmadan başvurulur. ^ sembolü: değişken BuildConfig
MPV

1
Büyü gibi çalıştı! :)
AndrewHenderson

Bu işe yaradı, ancak neden manuel olarak eklemek zorunda kaldığım bir muamma. : omuz silkme:
Mike S.

Zamanım var. Çok teşekkürler!!
Anilkumar iOS - ReactNative

2
Bir uyarı, bunu react-native içinde yapmak uygulamanın çökmesine neden olabilir. github.com/wix/react-native-navigation/issues/…
illiteratewriter

83

Android'in belirli dosyaları nerede bulacağını ve belirli dosyaları nasıl bağlayacağını bilmesinin yolu, AndroidManifest.xml'de ayarlanan alanları kullanmaktır. Bir React Native projesinin varsayılan kurulumu, her şeye. (Kaynak adı) ile başvurduğundan, bu, her şeyin <manifest>etikette ayarlanan paket adı ile ilgili olarak çözüleceği anlamına gelir . Bu nedenle, her şeyin kutudan çıktığı gibi çalışması ve her şeyin beklendiği gibi üretilmesi için MainActivity.java yolunun paket adıyla aynı olması gerekir.

misal:

uygulamalarınızın paket adı: com.mycompanyname.myappname

MainActivity.java dosyasının konumu: android/app/src/main/java/com/mycompanyname/myappname/MainActivity.java


5
"Com.mycompany.myapp" paket adı büyük / küçük harfe duyarlıdır. Ayrıca /android/app/build.gradle
Ed of the Mountain'daki

1
Benim sorunum buydu, teşekkürler. Uygulamayı yeniden adlandırmaya çalıştım ve bazı yerlerde farklı isimler aldım. Uygulama adının dosya sistemi klasöründe, app / build.gradle applicationId'de, AndroidManifex.xml "package" özniteliğinde ve MainActivity.java ve MainApplication.java'daki paket içe aktarmalarında benzer ve tümünün küçük harf olduğundan emin olmalıydım - yapı bundan sonra geçti.
Alexey Grinko

41

İle projeyi yeniden inşa ettim react-native upgrade. O zaman sorunum, eski paket adlarına referans veren eski dosyalarım olmasıydı (çünkü uygulamada uygulamanın adını değiştirdim package.json). Bunları sildikten sonra sorunu çözdüm.


Çok teşekkür ederim! Bunu anlamaya çalışırken günler geçirdim.
David B.

Silmem gereken eski AppName'e sahip dizinler ./android/app/src/main/java/com .. ve ./ios
remo

Cazibe gibi çalıştı
Jaseem Abbas

35

Senin içinde MainActivity.java, ilk satırı kontrol edebilirsinpackage com.YOU_APP_NAME;

Bu satır yoksa, bunu eklemelisiniz.


1
Paket adımı değiştirmeye çalıştım ve bu unuttuğum son şeydi! Thnx!
Mats de Swart

3
Sadece referans için: MainApplication.java'daki paket adını da değiştirmem gerekiyordu.
bardu

15

Benim durumumda, hem BUCK dosyasında hem de Manifest dosyasında paket adını değiştirdim.

BUCK dosyasında aşağıdaki gibi değiştirin.

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

android_resource(
    name = "res",
    package = "NEW_PACKAGE_NAME",
    res = "src/main/res", )

1
Bunu yaparak +
projemdeki

13

Bazı cevapların bir kombinasyonu bana yardımcı oldu, özet:

  • Java paketi adlarınızın doğru olduğundan emin olun ( MainApplication.javavb.)
  • gradle derleme dosyasında paket adını güncelleyin
  • manifest dosyasındaki paket adını güncelleyin
  • paket adını güncelleyin BUCKdosyadaki
  • javascript kaynaklarınızın yolunun paket adınızla eşleşen bir klasör yapısı olduğundan emin olun

İlk nokta "Javascript paket adlarınızın doğru olduğundan emin olun" - bundan bahsediyor muyuz package.jsonve 'bağlanmak' ile ne demek istiyorsunuz?
Norfeldt

Bu zaten bir süre önceydi ... ama paket isimleriyle java dosyalarındaki 'paket com.yourname.projeniz' gibi bir şey olan ilk satırları kastediyorum
WiRa

7

Adını değiştirdiyseniz bundle identifier , muhtemelen değiştirmeniz gerekecektir:

Kişisel android/app/src/main/....../MainApplication.java paketi ve ithalat .

Kullandığım olsa react-native-rename npm paketi , bazı dosyaların dikkat etmedi MainApplication.javave MainActivity.java.


6

React-native yükseltme bu hatayı çözdü -

react-native upgrade

Şimdi tekrar inşa edin -

react-native run-android

Bazı dosyalarda yapılan bazı değişiklikleri çöpe atmasına rağmen harika bir öneri. react-native linkYerel bağımlılıkları yeniden bağladıktan sonra tekrar çalıştırmak zorunda kaldım .
Eliot

3

Android / app / src / main / java / com'da bulunabilecek eski dosyaları silin Dosyayı uygulamanın yeni adıyla saklayın. O zaman yap react-native upgrade.


0

React-native-hareket-işleyicisini yüklemeyi kaçırıp kaçırmadığınızı kontrol edin.

iplik ile

iplik tepki-yerel-hareket-işleyicisi ekleyin

veya npm ile

npm install --save react-native-motion-handler

Sonra

react-native link react-native-hareket-işleyicisi


0

Bunu https://dev.to/karanpratapsingh/quick-guide-for-updating-package-name-in-react-native-3ei3'ü takip ederken yaşadım . Ben benim uygulamayı yeniden adlandırma edildi com.company_appiçin com.mycompany.myapphala güncelleme için gerekli ama ben taze bir app-yerli tepki gibi rehber, sadece genel için olduğunu düşünüyorum takip ediyordu kılavuzda yer almadığı bazı dosyalar vardı, görünüşe göre, ben çözüldü bunu küresel bir arama yaparak com.company_appve her birini com.mycompany.myappmantıklı olduğu zamanla değiştirerek .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.