React Native Android Build Error MainActivity.java:29: error: không thể tìm thấy biểu tượng


82

Tôi gặp lỗi này khi cố gắng biên dịch ứng dụng Android React Native của mình. Ứng dụng Android không thể giải quyết 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

Tôi có thể tạm thời giải quyết nó bằng cách chỉ cần đặt nó thành true. Điều này có thể đã xảy ra sau khi tôi thay đổi tên ứng dụng (vì đó là điều tôi cũng đang cố gắng làm).

Tôi có lẽ phải thay đổi thứ gì đó với Gradle để nó tạo lại đúng loại tệp.

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

Câu trả lời:


113

Tôi đã gặp vấn đề tương tự và nó đã được giải quyết bằng cách chỉ cần thêm câu lệnh nhập sau vào MainApplication.java:

import com.facebook.react.BuildConfig;

Làm. Cám ơn. Lỗi của tôi là: error: không thể tìm thấy biểu tượng return BuildConfig.DEBUG; // ------ Điều này được tham chiếu trong mã mà không cần nhập. ^ ký hiệu: biến BuildConfig
MPV

1
Làm việc như người ở! :)
AndrewHenderson

Điều này đã hoạt động, nhưng tại sao tôi phải thêm nó theo cách thủ công là một bí ẩn. : shrug:
Mike S.

Bạn có thời gian của tôi. Cám ơn rất nhiều!!
Anilkumar iOS - ReactNative

2
Một cảnh báo, làm điều này trong react-native có thể khiến ứng dụng gặp sự cố. github.com/wix/react-native-navigation/issues/…
người mù chữ

81

Cách android biết nơi tìm các tệp nhất định và cách kết nối các tệp nhất định bằng cách sử dụng các trường được đặt trong AndroidManifest.xml. Vì thiết lập mặc định của một dự án React Native, tham chiếu mọi thứ với. (Name-of-resource), điều này có nghĩa là mọi thứ sẽ được giải quyết liên quan đến tên gói được đặt trong <manifest>thẻ. Vì vậy, để mọi thứ hoạt động hiệu quả và mọi thứ được tạo ra như mong đợi, đường dẫn đến MainActivity.java, phải giống với tên gói.

thí dụ:

tên gói ứng dụng của bạn: com.mycompanyname.myappname

vị trí của MainActivity.java: android/app/src/main/java/com/mycompanyname/myappname/MainActivity.java


5
Tên gói "com.mycompany.myapp" phân biệt chữ hoa chữ thường. Bạn cũng phải thay đổi applicationId trong /android/app/build.gradle của mình
Ed of the Mountain,

1
Đó chính xác là vấn đề của tôi, cảm ơn. Tôi đã cố gắng đổi tên ứng dụng và kết thúc bằng các tên khác nhau ở một số nơi. Tôi phải đảm bảo rằng tên ứng dụng giống nhau và tất cả đều là chữ thường trong thư mục hệ thống tệp, trong app / build.gradle applicationId, trong thuộc tính "gói" AndroidManifex.xml và trong nhập gói tại MainActivity.java và MainApplication.java - việc xây dựng được thông qua sau đó.
Alexey Grinko

40

Tôi đã xây dựng lại dự án với react-native upgrade. Vấn đề của tôi sau đó là tôi có các tệp cũ tham chiếu đến tên gói cũ (vì tôi đã thay đổi tên của ứng dụng trong package.json). Sau khi xóa chúng, tôi đã giải quyết được vấn đề.


Cảm ơn bạn rất nhiều! Đã dành nhiều ngày để cố gắng tìm ra điều này.
David B.

Thư mục với cũ AppName tôi cần phải xóa có thể được tìm thấy trong ./android/app/src/main/java/com ..và ./ios
Remo

Làm việc như một nét duyên dáng
Jaseem Abbas

34

Trong của bạn MainActivity.java, bạn có thể kiểm tra dòng đầu tiên làpackage com.YOU_APP_NAME;

Nếu dòng này không tồn tại, bạn nên thêm dòng này.


Tôi đã cố gắng thay đổi tên gói của mình và đây là điều cuối cùng tôi quên! Thnx!
Mats de Swart,

3
Chỉ để tham khảo: Tôi cũng cần thay đổi tên gói trong MainApplication.java.
bardu

15

Trong trường hợp của tôi, tôi đã thay đổi tên gói trong cả tệp BUCK và tệp kê khai.

Trong tệp BUCK, hãy thay đổi như sau.

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

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

1
Đã giải quyết trường hợp của tôi bằng cách thực hiện việc này + đổi tên các gói trong tất cả và mọi tệp Java trong dự án của tôi
Antoine Auffray

13

Tổng hợp một số câu trả lời đã giúp tôi, tóm tắt:

  • Đảm bảo rằng tên gói java của bạn là chính xác ( MainApplication.javav.v.)
  • cập nhật tên gói trong tệp bản dựng gradle
  • cập nhật tên gói trong tệp kê khai
  • cập nhật tên gói trong BUCKtệp
  • đảm bảo đường dẫn đến nguồn javascript của bạn là cấu trúc thư mục khớp với tên gói của bạn

Điểm đầu tiên "Đảm bảo rằng tên gói javascript của bạn là chính xác" - chúng ta đang nói đến package.jsonvà ý của bạn là 'kết nối'?
Norfeldt

Đây đã là một thời gian trước đây ... nhưng với tên gói, ý tôi là các dòng đầu tiên trong tệp java giống như 'package com.yourname.yourproject'
WiRa 19/03/18

6

Nâng cấp react-native đã giải quyết được lỗi này -

react-native upgrade

Bây giờ xây dựng lại -

react-native run-android

Đề xuất tuyệt vời mặc dù nó không làm một số sửa đổi đối với các tệp nhất định. Tôi đã phải chạy react-native linklại sau khi liên kết lại các phụ thuộc gốc.
Eliot

5

Nếu bạn đổi tên, bundle identifierbạn có thể sẽ cần thay đổi:

android/app/src/main/....../MainApplication.java Gói của bạn và nhập khẩu .

Mặc dù tôi đã sử dụng react-native-rename gói npm , nó không xử lý một số tệp MainApplication.javaMainActivity.java.


1
cảm ơn người anh em, bạn đã tiết kiệm ny ngày
Arslan Bajwa

3

Xóa các tệp cũ có thể có trong android / app / src / main / java / com Chỉ cần giữ lại tệp với tên mới của ứng dụng. Sau đó làm react-native upgrade.


0

Kiểm tra xem bạn có lỡ cài đặt trình xử lý phản ứng-gốc-cử chỉ hay không.

với sợi

sợi thêm phản ứng-gốc-cử chỉ-xử lý

hoặc với npm

npm install - lưu phản ứng-gốc-cử chỉ-xử lý

Sau đó

phản ứng-gốc liên kết phản ứng-gốc-cử chỉ-xử lý


0

Tôi đã gặp phải vấn đề này khi theo dõi https://dev.to/karanpratapsingh/quick-guide-for-updating-package-name-in-react-native-3ei3 . Tôi đã đổi tên ứng dụng của mình từ com.company_appthành com.mycompany.myapp, dường như có một số tệp mà tôi vẫn cần cập nhật nhưng không có trong hướng dẫn mà tôi đang làm theo, tôi nghĩ hướng dẫn này chỉ dành cho thông thường, giống như một ứng dụng gốc phản ứng mới, tôi đã giải quyết được. điều này bằng cách thực hiện tìm kiếm toàn cầu com.company_appvà chỉ thay thế từng thứ thành com.mycompany.myappbất cứ khi nào nó có ý nghĩa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.