错误类型 3. Activity 类 com.awesome_project/ com.awesome_project.MainActivity 在 react native 中不存在(Android
Posted
技术标签:
【中文标题】错误类型 3. Activity 类 com.awesome_project/ com.awesome_project.MainActivity 在 react native 中不存在(Android 设备)【英文标题】:Error type 3. Activity class com.awesome_project/ com.awesome_project.MainActivity does not exist in react native (Android device)错误类型 3. Activity 类 com.awesome_project/ com.awesome_project.MainActivity 在 react native 中不存在(Android 设备) 【发布时间】:2016-05-09 23:27:10 【问题描述】:我使用以下命令创建了项目。
react-native init Awesome_Project
我已经使用以下命令启动了打包程序。
react-native start
我已经使用 USB 驱动器连接了我的 android 手机。
我已打开另一个命令提示符并运行以下 adb 命令以确保仅连接了一个设备。
adb devices
我已经使用以下命令启动了应用程序。
react-native run-android
我遇到了以下错误。
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.
提前致谢。
【问题讨论】:
在我的情况下,我只是卸载应用程序并使用 cd android && gradlew clean && cd .. && react-native run-android 重新安装 【参考方案1】:确保android/app/build.gradle
defaultConfig
applicationId "WHATEVER_THIS_IS"
需要匹配android/app/src/main/java/com/app_name/MainActivity.java
第一行:
package WHATEVER_THIS_IS;
需要匹配android/app/src/main/java/com/app_name/MainApplication.java
第一行:
package WHATEVER_THIS_IS;
需要匹配android/app/src/main/AndroidManifest.xml
第一行:
package="WHATEVER_THIS_IS">
【讨论】:
也添加了android>app>src>main>java>com>app_name>MainApplication.java
方向。
如果您的Activity class does not exist
,您将失去深度链接等增强功能。设备知道如何在不按下按钮的情况下启动应用程序非常重要。只是良好的开发人员实践......
我已经检查了所有这些,但没有解决任何问题
这也没有解决我的问题,但是adb uninstall WHATEVER_THIS_IS
的@Fran解决方案确实解决了!
这可行,但一开始有几次失败,因为我在指定的应用 ID 位置之一有错字,或者忘记在编辑之间运行 gradelew clean
,这是重要的一步。无论出于何种原因,我们的应用程序都需要在 app/src/build.gradle
中使用不同的 applicationId
,以便为 Microsoft AppCenter 代码推送分开构建。切换它以匹配其他文件允许我在本地模拟器上运行构建。【参考方案2】:
尝试运行 adb 命令从项目中的 android 目录安装 apk(应该提供更多输出):adb install app/build/outputs/apk/app-debug.apk
在我的情况下,存储箱不足
facebook/react-native 问题#2885
【讨论】:
【参考方案3】:在我的情况下,应用程序无法自动打开,没有其他问题。
只需在您的 android 设备中搜索应用程序图标(查看所有应用程序的位置)并点击它以手动打开应用程序。打包程序将开始像往常一样加载应用程序。
所以这似乎是一个错误。不幸的是,我真的不知道是什么原因造成的。
【讨论】:
虽然您是正确的,应用程序不会自动启动,但您希望自动启动。没有这个,您将失去深度链接等增强功能。请参阅上面的答案,您的配置在某处关闭。 在环境变量中设置sdk的路径,就这样!! 我有同样的经历,apk 已安装,但模拟器只是自动启动应用程序 ***.com/questions/39289591/…***.com/a/49916711/7313872【参考方案4】:我在手机上成功安装构建后遇到了这个问题,但长话短说我必须卸载它才能进行全新安装。卸载应用程序并尝试执行react-native run-android
后,我收到此错误。
似乎在某些设备上“卸载”应用程序只会禁用它,以防您希望在特定时间范围内撤消卸载。为了解决这个问题,我进入设置下的应用程序并选择我的应用程序并完全卸载它。之后,我能够再次成功构建我的应用程序。希望这可以帮助某人。
【讨论】:
【参考方案5】:我已将我的应用程序 ID 从 com.appName
更改为 com.companyName.appName
,并在 android>app>build.gradle
中进行了此更新:
defaultConfig
applicationId "com.companyName.appName" // was previously "com.appName"
我还将文件结构从android>app>src>main>java>com>appName
更改为android>app>src>main>java>com>companyName>appName
。这是我得到错误的时候。
要修复错误,我只是对com.appName
进行了项目范围的搜索(Atom 中的CMD-SHIFT-F
),并将它们全部替换为com.companyName.appName
。问题解决了!
【讨论】:
谢谢。我认为这是通过在 Android Studio 中使用 Refactor 功能造成的。也许我已经运行 rename 或 move somemthing ......但它相对于 react-native 没有改变。【参考方案6】:对于遇到此问题且没有解决方案的任何其他人,如果您已链接库,请确保在位于 ProjectName/android
的 settings.gradle
文件中包含您的应用程序,如下所示:@987654323 @。我忘记了:app
,它正在构建和安装第 3 方库,但不是实际的应用程序,导致了问题。
【讨论】:
【参考方案7】:有时您会收到此错误,因为您没有卸载该应用程序的另一个先前版本,在 LG 手机上您必须转到应用程序的设置并卸载该应用程序,这发生在我身上。
【讨论】:
【参考方案8】:如果您在应用程序 build.gradle 文件中启用了构建变量,就会发生这种情况。
当 react-native 运行时,它似乎在你的应用程序 id 前加上 test 或其他东西,这会改变某些文件中的包名称,但其他文件保持不变。您的应用程序找不到 .MainActivity,因为它实际上不存在于生成的新包命名空间中。
以下是尝试解决此问题的一些方法:
在 Manifest 文件中使用 FQDN 作为应用程序类和活动类的名称。 用这个one 替换你的android cli 文件。这是/node_modules/react-native/local-cli/runAndroid
中的文件
这应该可以解决您的问题。
【讨论】:
我认为你是对的,但我不知道如何解决它。 Android Studio 似乎会自动在我的包名称末尾添加一个 .debug 。 Build Variants 选项卡有“debug”和“release”作为选项,但似乎无法删除它们。此外,文档developer.android.com/studio/build/build-variants.html 中的信息似乎缺乏这方面的信息。 我目前正在开发一个项目,我需要在部署之前支持构建变体。我会努力解决这个问题并用解决方案更新答案。【参考方案9】:如果你有 appIdSuffix,你应该将它添加到命令中以响应本机运行命令。
eg. react-native run-android --appIdSuffix beta
应该为 package.json 添加快捷方式并通过 npm 运行。
...
"scripts":
...
"android-beta": "react-native run-android --appIdSuffix beta",
,
然后运行:
npm run android-beta
【讨论】:
你让我免于轻微头痛【参考方案10】:当我卸载应用程序并尝试再次使用react-native run-android
安装时,出现此问题。
以下对我有用:
1. 从设置菜单进入应用程序列表。
2. 您将在列表中看到您的应用程序,并在左侧显示一条消息“未为此用户安装应用程序”。
3. 在设置中打开该应用程序,然后单击右上角的菜单图标并选择“为所有用户卸载”。
希望对您有所帮助!
【讨论】:
【参考方案11】:我从我的设备上卸载了该应用程序,但根本无法在“设置”>“应用程序”中看到它。在我完全卸载应用程序后,错误终于消失了:
adb uninstall com.appname
【讨论】:
谢谢!我的 Android 设备上有一个工作资料(除了个人资料之外),我已经从其中一个而不是另一个上卸载了它。 解决了我的问题! 也为我工作。 天哪。幸运的是我发现了这个。为什么错误信息如此具有误导性? @Fran 伙计,你是救世主..我欠你..谢谢哥们。【参考方案12】:就我而言.. 上述解决方案均无效。 然后,我找到了它的原因,我以前安装了具有相同包名的应用程序。我已经从手机上卸载了它,但是因为我有奥利奥设备..它也安装在另一个用户中。所以,通过从所有用户卸载..解决了我的问题。 这对您的情况可能没有帮助..但这仍然是我的解决方法。
【讨论】:
很多人已经提到他们先卸载了应用程序。【参考方案13】:我通过在手机上手动安装调试应用解决了。
为此,请转到 [Project_Path]\android\app\build\outputs\apk\debug\app-debug.apk
将此app-debug.apk复制到您的移动设备。
现在,只需将其正常安装到您的手机中即可。
【讨论】:
【参考方案14】:好吧,当我们手动从手机卸载 apk 时会发生这种情况。它显示 MainActivity 不存在。 解决方案:在设置中的应用程序中为所有用户卸载应用程序实例并使用react-native run-android再次运行将解决您的问题
【讨论】:
【参考方案15】:您可能已经删除/卸载了您的应用,但是当您检查您的设置/应用时,您可以看到它并没有完全卸载。
转到设置。 转到应用程序。 选择您的应用程序。 (在这里,您可以验证您的应用是否未正确卸载)。 打开右上角的溢出菜单并为所有用户选择卸载。 完毕。尝试安装,然后再次启动您的应用。Source
【讨论】:
它对我有用,不知何故我为不是当前用户安装了它...【参考方案16】:我尝试了上面发布的所有答案,但我的用例没有任何结果。
最终通过这样的执行解决了:
react-native run-android --variant=alphaDebug
如果应用中有多种风味,那么我们必须提到变体 通过命令行
【讨论】:
【参考方案17】:就我而言,我在 google-services.json(来自 Firebase)中有错误的 package_name (client.client_info.android_client_info.package_name
)。正如@parker 提到的,它必须匹配这四个值。
【讨论】:
【参考方案18】:这发生在我更改我的项目包名称后。
我在这里尝试了其他一些答案,但在我手动删除android/build
目录并重新运行react-native run-android
强制从src 重建应用程序之前没有任何效果。
结果发现构建被缓存,包括对旧包名称的引用。
【讨论】:
【参考方案19】:我对同一问题的看法略有不同。
我没有使用 react,但是我确实遇到了同样的问题。
我尝试了此页面上的所有解决方案,但奇怪的是,每个解决方案都工作了一次。但是问题又来了。
最后我发现这样做:
adb 卸载 com.appname
随后重启手机
自发现以来每次都解决问题。
使用三星 S8 和 Android 3.4.1。除了 OKHttp,没有其他疯狂的库。在 Mac 上运行。
【讨论】:
【参考方案20】:adb 卸载包名称 为我工作。 例如:adb uninstall com.abc
【讨论】:
就在几天前,我对此表示赞同,现在不得不再回到这里一次。真的很有帮助。【参考方案21】:华为 p20 精简版。 试图从无法安装的下载中安装应用程序。回去运行在android studio中安装并得到错误 错误 3 mainactivity 不存在。 不得不删除用户“私人空间” 解决问题
【讨论】:
【参考方案22】:确保你在 gradle 中的 applicationid 和包名相同
【讨论】:
【参考方案23】:我也有类似的问题。
BUILD SUCCESSFUL in 38s
27 actionable tasks: 27 executed
info Connecting to the development server...
info Starting the app on "a77c634"...
Starting: Intent cmp=com.helloworld/.MainActivity
Error type 3
Error: Activity class com.helloworld/com.helloworld.MainActivity does not exist.e
对我来说,我的目标设备有多个帐户,因此在为另一个 ime 运行该应用之前,请确保从所有帐户中卸载它。
【讨论】:
【参考方案24】:在使用 react-native-config 时,我在使用 applicationIdSuffix
和 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"
...
...
"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",
,
...
【讨论】:
【参考方案25】:一个对我有用的。如果您不小心从连接的设备上卸载了应用程序,则可以使用
-
删除apk:
sudo rm -rf android/app/build/outputs/apk/debug
然后:sudo npm run android
【讨论】:
【参考方案26】:adb 卸载 com.packagename。它对我有用。
【讨论】:
【参考方案27】:如果您正在下载基于 yarn 的应用程序并使用 npm install 而不是 yarn install 来获取依赖项,也可能会导致这种情况。 所以尝试重新下载项目并使用合适的项目。
【讨论】:
【参考方案28】:cd 安卓
然后
./gradlew uA
为我工作。
【讨论】:
以上是关于错误类型 3. Activity 类 com.awesome_project/ com.awesome_project.MainActivity 在 react native 中不存在(Android的主要内容,如果未能解决你的问题,请参考以下文章
命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法
FlutterBoost 3.0出现 Activity无法转换为ExclusiveAppComponent<Activity>的解决办法