React Native应用程序在Android模拟器上保持关闭

时间:2016-09-05 02:23:42

标签: android android-emulator react-native react-native-android

我正在尝试在Android模拟器(react-native run-android)上运行一个react本机应用程序,但它一直崩溃并显示错误消息“MYAPP已停止”。我想弄清楚我可以在哪里进一步调试(错误消息,日志等)。我没有在终端上或模拟器本身上看到任何错误消息。所以除了试图解决为什么应用程序不会部署...在Android模拟器上进一步调试应用程序部署问题的人在哪里?

enter image description here

旁注:我从版本0.31.0升级到0.32.0并运行react-native upgrade命令,这也要求覆盖一些文件(我选择了覆盖所有文件)。我是否应该担心从升级到0.32.0的最新变化不起作用或不完整?我可以采取哪些步骤来验证最新的更改?

更新:我创建了一个新的示例反应本机项目,以查看RN的最新版本是否有问题。它工作正常。然后在index.android.js中获取示例代码并在我的项目的index.android.js中覆盖它并重新运行。尝试将其部署到Android模拟器时仍然遇到同样的问题。删除了node_modules目录,reran,仍然是同样的问题。我现在认为这与升级过程有关......这非常令人沮丧。

更新v2:感谢@GabeSechan的提示和方向,这是我找到的堆栈跟踪:

09-04 03:24:41.297  5008  5008 E AndroidRuntime: FATAL EXCEPTION: main
09-04 03:24:41.297  5008  5008 E AndroidRuntime: Process: com.helpr, PID: 5008
09-04 03:24:41.297  5008  5008 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.helpr/com.helpr.MainActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to com.facebook.react.ReactApplication
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.app.ActivityThread.-wrap12(ActivityThread.java)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:102)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:154)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:6077)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
09-04 03:24:41.297  5008  5008 E AndroidRuntime: Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.facebook.react.ReactApplication
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at com.facebook.react.ReactActivity.getUseDeveloperSupport(ReactActivity.java:89)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at com.facebook.react.ReactActivity.onCreate(ReactActivity.java:96)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.app.Activity.performCreate(Activity.java:6664)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
09-04 03:24:41.297  5008  5008 E AndroidRuntime:    ... 9 more

快速谷歌搜索后,在升级React Native时似乎存在这个问题。我会发一个答案,回答我自己的问题。

5 个答案:

答案 0 :(得分:6)

如果您最近更改了gradle配置或androidmanifest.xml中的任何内容(例如包名称等),那么您必须清除gradle文件:

要解决此问题:

cd android
./gradlew clean

这应该删除旧的构建目录并生成一个新的

答案 1 :(得分:2)

事实证明,如果您要升级React Native,请注意升级过程不一定会更新所有必需的文件(在撰写本文时,升级到RN 0.32.0)。事实证明这是一个已知问题(https://github.com/facebook/react-native/issues/8215)。在解决之前,您需要手动更新位于./android/app/src/main/AndroidManifest.xml的AndroidManifest.xml文件。我建议创建一个示例react本机项目,并使用新创建的AndroidManifest.xml来手动更新现有项目中的那个。此外,无论何时升级,都要在新创建的RN项目和您自己的项目之间进行差异验证,以确认不需要更新其他文件。

答案 2 :(得分:1)

要解决您的问题,请在android\app\build.gradle文件中的依赖项下添加这两行:

implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'

答案 3 :(得分:0)

我遇到了同样的问题,尝试了很多事情之后,这为我解决了这个问题:

1:将googlePlayServicesVersion=12.0.1添加到gradle.properties中(我认为这是不必要的)

2:在android / build.gradle中添加了以下内容:

 allprojects {
    repositories {
    //start here
    configurations.all {
 resolutionStrategy.eachDependency { DependencyResolveDetails details ->
   def requested = details.requested
       if (requested.group == 'com.google.android.gms') {
          details.useVersion '12.0.1'
       }
       if (requested.group == 'com.google.firebase') {
          details.useVersion '12.0.1'
         }
       }
     }
    //end
     jcenter()
       maven {
         url "https://maven.google.com"
       }
     }
 }

我在https://github.com/idehub/react-native-google-analytics-bridge/wiki/Solution-for-Android-build-failure-issues

中找到了这个

答案 4 :(得分:0)

我遇到了同样的问题,

TLDR:metro 不会显示您必须使用本机工具(例如 XCode 和 Android Studio)来查看该错误的所有错误。

修复方法:尝试在 android studio 上运行 react-native 应用程序,步骤如下,

  1. yarn start 或 npx start
  2. 在 Android Studio 上打开 /android 文件夹,然后点击运行图标(绿色播放图标)

希望一旦它运行你就会发现你的错误,单独反应原生 Metro 不会显示这些错误。