【问题标题】:React Native Android Build Error MainActivity.java:29: error: cannot find symbolReact Native Android Build Error MainActivity.java:29:错误:找不到符号
【发布时间】:2016-01-25 14:32:31
【问题描述】:

我在尝试编译我的 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";
}

【问题讨论】:

    标签: react-native


    【解决方案1】:

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

    import com.facebook.react.BuildConfig;
    

    【讨论】:

    • 有效。谢谢。我的错误是:错误:找不到符号返回 BuildConfig.DEBUG; // ------这是在没有导入的代码中引用的。 ^ 符号:变量 BuildConfig
    • 工作就像一个魅力! :)
    • 这行得通,但为什么我必须手动添加它是一个谜。 :耸肩:
    • 你有我的时间。非常感谢!!
    • 警告,在 react-native 中执行此操作可能会导致应用程序崩溃。 github.com/wix/react-native-navigation/issues/…
    【解决方案2】:

    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

    【讨论】:

    • 包名“com.mycompany.myapp”区分大小写。您还必须更改 /android/app/build.gradle 中的 applicationId
    • 这正是我的问题,谢谢。我曾尝试重命名该应用程序,但最终在某些地方使用了不同的名称。我必须确保应用程序名称在文件系统文件夹、app/build.gradle applicationId、AndroidManifex.xml“package”属性以及 MainActivity.java 和 MainApplication.java 的包导入中的应用程序名称相似且全部小写- 之后构建通过。
    • 这是正确的答案,而不是@Manoj 的答案。我们不需要手动导入 BuildConfig。
    【解决方案3】:

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

    【讨论】:

    • 非常感谢!花了几天时间试图弄清楚这一点。
    • 我需要删除的旧 AppName 目录可以在 ./android/app/src/main/java/com ..and ./ios 中找到
    • 工作就像一个魅力
    【解决方案4】:

    在你的MainActivity.java,你可以检查第一行是package com.YOU_APP_NAME;

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

    【讨论】:

    • 我试图更改我的包名,这是我忘记的最后一件事!谢谢!
    • 仅供参考:我还需要更改 MainApplication.java 中的包名。
    【解决方案5】:

    就我而言,我在 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", )
    

    【讨论】:

    • 通过这样做解决了我的问题 + 在我的项目中的所有和每个 Java 文件中重命名包
    【解决方案6】:

    一些答案​​的组合帮助了我,总结:

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

    【讨论】:

    • 第一点“确保你的 javascript 包名是正确的”——我们说的是package.json,你说的“连接”是什么意思?
    • 这已经是很久以前的事了...但是对于包名,我的意思是 java 文件中的第一行类似于 'package com.yourname.yourproject'
    【解决方案7】:

    如果您重命名了 bundle identifier,您可能需要更改:

    你的android/app/src/main/....../MainApplication.java packageimports

    虽然我使用了react-native-renamenpm package,但它并没有处理一些文件MainApplication.javaMainActivity.java

    【讨论】:

      【解决方案8】:

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

      react-native upgrade
      

      现在重新构建 -

      react-native run-android
      

      【讨论】:

      • 很好的建议,尽管它确实会破坏对某些文件的一些修改。在重新链接本机依赖项后,我不得不再次运行 react-native link
      【解决方案9】:

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

      【讨论】:

        【解决方案10】:

        我的情况是我在一个地方重命名了包(AndroidManifest.xml) 前任: 原文:com.example 将其更改为:com.example.app

        再次重命名解决了问题

        【讨论】:

          【解决方案11】:

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

          用纱线

          yarn add react-native-gesture-handler

          或使用 npm

          npm install --save react-native-gesture-handler

          那么

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

          【讨论】:

            【解决方案12】:

            我在关注https://dev.to/karanpratapsingh/quick-guide-for-updating-package-name-in-react-native-3ei3 时遇到了这种情况。我正在将我的应用程序从 com.company_app 重命名为 com.mycompany.myapp,显然,有些文件我仍然需要更新,但未包含在我遵循的指南中,我认为该指南仅适用于一般情况,就像一个新的反应-native 应用程序,我通过对 com.company_app 进行全局搜索来解决这个问题,并在有意义的时候将每个替换为 com.mycompany.myapp

            【讨论】:

              【解决方案13】:

              我按照以下步骤修复了它: 安卓版本: 从终端转到 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

              【讨论】:

                猜你喜欢
                • 2018-03-16
                • 1970-01-01
                • 1970-01-01
                • 2022-08-04
                • 1970-01-01
                • 1970-01-01
                • 2023-02-13
                • 1970-01-01
                • 2018-09-07
                相关资源
                最近更新 更多