错误类型3.活动类{com.awesome_project/com.awesome_project.MainActivity}在react native(Android设备)中不存在

use*_*316 45 javascript android react-native

我使用以下命令创建了项目.

react-native init Awesome_Project
Run Code Online (Sandbox Code Playgroud)

我使用以下命令启动了打包器.

react-native start
Run Code Online (Sandbox Code Playgroud)

我用USB驱动器连接了我的Android手机.

我打开了另一个命令提示符并运行以下adb命令以确保只连接了一个设备.

adb devices
Run Code Online (Sandbox Code Playgroud)

我使用以下命令启动了应用程序.

react-native run-android
Run Code Online (Sandbox Code Playgroud)

我遇到了以下错误.

open: Permission denied
open: Permission denied
Starting: Intent { com.awesome_project/.MainActivity }
Error type 3
Error: Activity class {com.awesome_project/ com.awesome_project.MainActivity} does not exist.
Run Code Online (Sandbox Code Playgroud)

提前致谢.

par*_*ker 72

确保 android>app>build.gradle

defaultConfig {
        applicationId "WHATEVER_THIS_IS" 
}
Run Code Online (Sandbox Code Playgroud)

需要匹配第一android>app>src>main>java>com>app_name>MainActivity.java行:

package WHATEVER_THIS_IS;
Run Code Online (Sandbox Code Playgroud)

需要匹配第一android>app>src>main>java>com>app_name>MainApplication.java行:

package WHATEVER_THIS_IS;
Run Code Online (Sandbox Code Playgroud)

需要匹配第一android>app>src>main>AndroidManifest.xml行:

package="WHATEVER_THIS_IS">
Run Code Online (Sandbox Code Playgroud)

  • 我已经检查了所有这些,并没有解决任何问题 (19认同)
  • 这也没有解决我的问题,但是 @Fran 的 `adb uninstall WHATEVER_THIS_IS` 解决方案确实解决了它! (8认同)

小智 35

我从我的设备上卸载了该应用,但根本无法在我的设置>应用中看到它.通过执行以下操作完全卸载应用程序后,错误终于消失了:

adb uninstall com.appname
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我在我的 Android 上有一个工作配置文件(除了个人配置文件),并且已经从一个而不是另一个卸载了它。 (2认同)

小智 15

adb uninstall packageName 为我工作。例如:adb uninstall com.abc


小智 12

如果您有appIdSuffix,则应将其添加到react native命令的命令中.

eg.   react-native run-android --appIdSuffix beta
Run Code Online (Sandbox Code Playgroud)

应该添加package.json的快捷方式并通过npm运行.

...
"scripts": {
 ...
  "android-beta": "react-native run-android --appIdSuffix beta",
},
Run Code Online (Sandbox Code Playgroud)

然后运行:

npm run android-beta
Run Code Online (Sandbox Code Playgroud)

  • 你让我免于轻微的头痛 (2认同)

小智 9

尝试运行adb命令在您的项目中安装android dir的apk(应该提供更多输出): adb install app/build/outputs/apk/app-debug.apk

在我的情况下,存储空间不足

facebook/react-native issue #2885


And*_*dru 8

就我而言,该应用程序不会自动打开,没有其他问题。

只需在您的 android 设备中搜索应用程序图标(查看所有应用程序的位置)并点击它以手动打开应用程序。打包程序将开始像往常一样加载应用程序。

所以这似乎是这里的一个错误。不幸的是,我真的不知道是什么导致了它。

  • 我有同样的经历,apk已安装,但模拟器只是不自动启动应用程序 (3认同)

Dan*_*ing 8

我已将我的应用程序ID更改com.appNamecom.companyName.appName,并且我已将此更新更新为android>app>build.gradle:

defaultConfig {
  applicationId "com.companyName.appName" // was previously "com.appName"
}
Run Code Online (Sandbox Code Playgroud)

我还将文件结构从更改android>app>src>main>java>com>appNameandroid>app>src>main>java>com>companyName>appName.这是我收到错误的时候.

为了解决这个错误,我只是进行了一个项目范围的搜索(CMD-SHIFT-F在Atom中)com.appName,并将它们全部替换为com.companyName.appName.问题解决了!


wiz*_*loc 5

我在手机上安装了成功的版本后遇到了这个问题,但长话短说我不得不卸载它才能进行全新安装.卸载应用程序并尝试执行操作后react-native run-android,我收到此错误.

似乎在某些设备上"卸载"应用程序只会禁用它,以防您希望在特定时间范围内撤消卸载.为了解决这个问题,我进入了设置下的应用程序并选择了我的应用程序并完全卸载了它.之后我又能够成功构建我的应用程序.希望这有助于某人.


Adi*_*tya 5

您可能已经删除/卸载了您的应用程序,但是当您检查您的设置/应用程序时,您可以看到它并没有完全卸载。

  • 前往设置。
  • 转到应用程序。
  • 选择您的应用。(在这里,您可以验证您的应用程序是否未正确卸载)。
  • 打开右上角的溢出菜单,然后选择为所有用户卸载。完毕。尝试安装然后再次启动您的应用程序。

来源


Fra*_*igh 5

在使用react-native-config时,我在使用applicationIdSuffixwith时遇到了这个问题productFlavors

添加--appIdSuffix=[YOUR_FLAVOR]到我的react-native run-android命令中就完成了这项工作。例如

...
    flavorDimensions "env"
    productFlavors {
        dev {
            resValue "string", "app_name", "[DEV] My App"
            applicationIdSuffix ".dev"
        }
        staging {
            resValue "string", "app_name", "[STG] My App"
            applicationIdSuffix ".staging"
        }
        prod {
            resValue "string", "app_name", "My App"
        }
    }
...
Run Code Online (Sandbox Code Playgroud)
...
"scripts": {
    "android": "react-native run-android --variant=devDebug --appIdSuffix=dev",
    "android:staging": "react-native run-android --variant=stagingDebug --appIdSuffix=staging",
    "android:prod": "react-native run-android --variant=prodDebug",
    "android:staging:release": "react-native run-android --variant=stagingRelease --appIdSuffix=staging",
    "android:prod:release": "react-native run-android --variant=prodRelease",
},
...
Run Code Online (Sandbox Code Playgroud)