React native React本机Android构建错误MainActivity.java:29:Error:找不到符号

React native React本机Android构建错误MainActivity.java:29:Error:找不到符号,react-native,React Native,我在尝试编译我的React原生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

我在尝试编译我的React原生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-upgrade
重新构建了项目。
我的问题是我有引用旧包名称的旧文件(因为我在
package.json
中更改了应用程序的名称)。一旦删除这些,我就解决了这个问题

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

例如:

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


MainActivity.java的位置:
android/app/src/main/java/com/mycompanyname/myappname/MainActivity.java
在您的
MainActivity.java
中,您可以检查第一行是
package com.you\u app\u NAME


如果这一行不存在,您应该添加它。

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

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

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

在我的情况下,我更改了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", )

升级react native解决了此错误-

react-native upgrade
现在重新建造-

react-native run-android

我也有同样的问题,只需在
MainApplication.java
中添加以下import语句即可解决:

import com.facebook.react.BuildConfig;

检查是否未安装react本机手势处理程序

用纱线 纱线添加反应本机手势处理程序

或与npm npm安装--保存反应本机手势处理程序

然后
react-native链接react-native手势处理程序

如果重命名您的
包标识符
,您可能需要更改:

您的
android/app/src/main/…../MainApplication.java
软件包和导入


尽管我使用了
react native rename
,但它并没有处理一些文件
MainApplication.java
MainActivity.java

,我在跟踪过程中遇到了这种情况。我正在将我的应用程序从
com.company\u app
重命名为
com.mycompany.myapp
,显然,有些文件我仍然需要更新,但没有包含在我遵循的指南中,我认为该指南仅适用于一般应用程序,就像一个全新的react原生应用程序一样,我通过全局搜索
com.company\u app
解决了这个问题,只要有意义,就将每个应用程序替换为
com.mycompany.myapp

我通过以下步骤修复了它: 安卓版本: 从终端转到android文件夹并运行以下命令: 格雷德卢清洁酒店

从主项目文件夹中删除此文件夹: 节点单元

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

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

在终端中,转到android文件夹并运行以下操作: 格拉德卢

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

现在,您可以启动metro并运行应用程序

注意:确保MainActivity.java文件中的bundleID名称正确无误。你会发现它在第一排。然后,确保MainActivity.java文件位于如下所示的正确路径中:
project_name/Android/App/src/main/java/1/2/3/MainActivity.java,其中1/2/3必须是bundleID的名称,例如com/bundle/id

包名“com.mycompany.myapp”区分大小写。您还必须更改/android/app/build.gradleIt中的applicationId,这正是我的问题,谢谢。我曾试图重新命名这个应用程序,结果在某些地方出现了不同的名称。我必须确保在文件系统文件夹中,在app/build.gradle applicationId中,在AndroidManifex.xml“package”属性中,以及在MainActivity.java和MainApplication.java的包导入中,应用程序名称是相似的,并且所有的大小写都是小写的。非常感谢!我花了好几天的时间试图解决这个问题。我需要删除的带有旧AppName的目录可以在./android/app/src/main/java/com..和./ios中找到。iosmi像个charmI一样试图更改我的包名,这是我最后忘记的一件事!Thnx!仅供参考:我还需要更改MainApplication.java中的包名。第一点“确保您的javascript包名正确”-我们讨论的是
package.json
,您所说的“连接”是什么意思?这已经是很久以前的事了。。。但是对于包名,我指的是java文件中的第一行,类似于“package com.yourname.yourproject”的内容,通过这样做+重命名projectWorks中所有java文件中的包,解决了我的问题。谢谢。我的错误是:错误:找不到返回BuildConfig.DEBUG的符号;//------这是r