React Native Android Build Error MainActivity.java:29:错误:找不到符号

时间:2016-01-25 14:32:32

标签: react-native

我在尝试编译我的React Native Android应用程序时遇到此错误。 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";
}

12 个答案:

答案 0 :(得分:62)

android知道在哪里找到某些文件,以及如何连接某些文件,方法是使用AndroidManifest.xml中设置的字段。从React Native项目的默认设置开始,使用。(资源名称)引用所有内容,这意味着将根据<manifest>标记中设置的包名解析所有内容。因此,对于开箱即用的所有内容以及按预期生成的所有内容,MainActivity.java的路径应与程序包名称相同。

示例:

您的应用包名称: com.mycompanyname.myappname

MainActivity.java的位置:android/app/src/main/java/com/mycompanyname/myappname/MainActivity.java

答案 1 :(得分:50)

我遇到了同样的问题,只需在MainApplication.java中添加以下导入语句即可解决:

import com.facebook.react.BuildConfig;

答案 2 :(得分:39)

我用react-native upgrade重建了项目。 我的问题是我有旧文件引用旧包名(因为我在package.json中更改了应用程序的名称)。删除后,我解决了这个问题。

答案 3 :(得分:31)

MainActivity.java中,您可以检查第一行是package com.YOU_APP_NAME;

如果此行不存在,则应添加此行。

答案 4 :(得分:8)

在我的情况下,我在BUCK文件和Manifest文件中都更改了包名。

在BUCK文件中更改如下。

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

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

答案 5 :(得分:6)

如果您重命名了catch,则可能需要更改:

您的try { const value = doSomethingSync(); // ...use `value`, then doSomethingElseSync(); // ... doYetAnotherSyncThing(); } catch (error) { // Handle/report error here } 包装进口

即使我使用了bundle identifier npm package,它也无法处理某些文件android/app/src/main/....../MainApplication.javareact-native-rename

答案 6 :(得分:5)

升级react-native解决了这个错误 -

react-native upgrade

现在再次建造 -

react-native run-android

答案 7 :(得分:4)

一些答案​​的组合帮助了我,摘要:

  • 确保您的java包名称正确
  • 更新gradle构建文件中的包名称
  • 更新清单文件中的包名称
  • 确保javascript源的路径是与您的包名称匹配的文件夹结构

答案 8 :(得分:3)

删除 android / app / src / main / java / com 中可能存在的旧文件 只需使用应用程序的新名称保留文件即可。然后执行react-native upgrade

答案 9 :(得分:0)

检查是否错过了安装react-native-gesture-handler。

含纱

添加纱线react-native-gesture-handler

或使用npm

npm install-保存react-native-gesture-handler

然后

react-native链接react-native-gesture-handler

答案 10 :(得分: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来解决了这个问题。

答案 11 :(得分:0)

我按照以下步骤修复了它: 安卓版本: 从终端转到 android 文件夹并运行以下命令: 渐变干净

从主项目文件夹中删除此文件夹: 节点模块

从菜单文件: 使缓存无效并重新启动 IDE

找到您的 MainActivity.java 文件并添加以下导入行: 导入 com.facebook.react.BuildConfig;

在终端中,转到 android 文件夹并运行以下命令: 渐变

在终端中,转到主根目录并运行以下命令: 纱线安装

现在您可以启动 Metro 并运行应用程序。

P.S.:确保在 MainActivity.java 文件中的 bundleID 名称是正确的。您会在第一行找到它。然后,确保 MainActivity.java 文件位于正确的路径中,如下所示: project_name/Android/App/src/main/java/1/2/3/MainActivity.java 其中 1/2/3 必须是您的 bundleID 的名称,例如,com/bundle/id