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

时间:2016-02-01 13:29:19

标签: javascript android react-native

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

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.

提前致谢。

27 个答案:

答案 0 :(得分:46)

确保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">

答案 1 :(得分:15)

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

const data = [  
   {  
      "id":"5b9ce8d51dbb85944baddfa5",
      "name":"EARBANG",
      "parent_id":0,
      "status":"Inactive",
      "children":[  
         {  
            "id":"5b9ce8d5d978f75e4b1584ba",
            "name":"DIGINETIC",
            "parent_id":"5b9ce8d51dbb85944baddfa5",
            "status":"Active",
            "children":[  
               {  
                  "id":"5b9ce8d5cb79d63c8b38018c",
                  "name":"PREMIANT",
                  "parent_id":"5b9ce8d5d978f75e4b1584ba",
                  "status":"Active",
               }
            ]
         }
      ]
   },
   {  
      "id":"5b9ce8d51650fac75fa359c8",
      "name":"GEEKOLOGY",
      "parent_id":0,
      "status":"Active",
   },
   {  
      "id":"5b9ce8d59f52e801a2e40a97",
      "name":"TOYLETRY",
      "parent_id":0,
      "status":"Inactive",
   },
   {  
      "id":"5b9ce8d5d136fcfed2f3e0dd",
      "name":"PAPRIKUT",
      "parent_id":0,
      "status":"Inactive",
   },
   {  
      "id":"5b9ce8d53afb7a61e188c48e",
      "name":"EYERIS",
      "parent_id":0,
      "status":"Inactive",
   }
];


const search = (data, id) => data.find(d => d.id === id) || search(d.children);

console.log(search(data, '5b9ce8d51dbb85944baddfa5'));

答案 2 :(得分:10)

如果你有appIdSuffix,你应该将它添加到反应本机运行命令的命令。

$(function () {
    $(".profile-img").html($(".profile-img").html().replace("blurr", "default"));

    });

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

eg.   react-native run-android --appIdSuffix beta

然后运行:

...
"scripts": {
 ...
  "android-beta": "react-native run-android --appIdSuffix beta",
},

答案 3 :(得分:9)

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

就我而言,存储空间不足

facebook/react-native问题#2885

答案 4 :(得分:7)

我已将我的应用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。这是我收到错误的时候。

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

答案 5 :(得分:5)

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

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

答案 6 :(得分:3)

您可能已删除/卸载了您的应用程序,但是当您检查设置/应用程序时,您会发现它并未完全卸载。

  • 转到“设置”。
  • 转到应用。
  • 选择您的应用。 (在这里,您可以确认您的应用未正确卸载)。
  • 打开右上角的溢出菜单,然后为所有用户选择“卸载”。 做完了尝试安装,然后再次启动您的应用。

Source

答案 7 :(得分:2)

在我的情况下,应用程序不会自动打开,没有其他问题。

只需在Android设备中搜索应用图标(查看所有应用的位置),然后点按手动打开应用。打包器将照常开始加载应用程序。

所以这似乎是一个错误。不幸的是,我真的不知道造成它的原因。

答案 8 :(得分:1)

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

答案 9 :(得分:1)

华为p20 lite。 尝试从无法安装的下载中安装应用程序。回到运行以在android studio中安装并收到错误 错误3 mainactivity不存在。 不得不删除用户的“私人空间” 解决问题

答案 10 :(得分:1)

确保您在gradle和包名称中的applicationid相同

答案 11 :(得分:1)

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

--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",
},
...

答案 12 :(得分:1)

当我卸载应用程序并尝试再次使用react-native run-android进行安装时出现此问题。

以下为我工作:
1.从设置菜单转到应用程序列表 2.您将在列表中看到您的应用程序,并在左侧显示消息“未为此用户安装应用程序”
3.在设置中打开该应用程序,然后单击右上方菜单图标并选择“为所有用户卸载”。 希望它有所帮助!

答案 13 :(得分:1)

有时您会收到此错误,因为您没有卸载该应用的其他旧版本,在LG手机上您必须转到应用设置并卸载该应用,这种情况发生在我身上。

答案 14 :(得分:1)

对于遇到此问题但没有解决方案的其他人,如果您已经链接了库,请确保位于settings.gradle的{​​{1}}文件中的应用包含在include语句中,例如所以:ProjectName/android。我忘了include ':ThirdPartyLibrary', ':app',它是构建和安装第三方库,但不是实际的应用程序,导致问题。

答案 15 :(得分:0)

一个对我有用的。万一您不小心从连接的设备上卸载了应用程序

  1. 删除 apk:sudo rm -rf android/app/build/outputs/apk/debug
  2. 然后:sudo npm run android

答案 16 :(得分:0)

我有一个类似的问题。

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

对我来说,我的目标设备有多个帐户,因此在为另一个ime运行该应用程序之前,请确保从所有帐户中将其卸载。

答案 17 :(得分:0)

如果您正在下载基于纱线的应用程序并使用 npm install 而不是 yarn install 来获取您的依赖项,也可能会导致这种情况。 所以尝试重新下载项目并使用合适的。

答案 18 :(得分:0)

在同一问题上,我的看法略有不同。

我没有使用react,但是确实遇到了同样的问题。

我尝试了此页面上的所有解决方案,奇怪的是,每个解决方案都只能工作一次。但是问题继续出现。

最后我发现这样做:

  1. adb卸载com.appname

  2. 接着听筒重新启动

自发现以来每次都解决了该问题。

使用Samsung S8和Android 3.4.1。除了OKHttp,没有疯狂的库。在Mac上运行。

答案 19 :(得分:0)

这是在更改项目包名称后发生的。 我在这里尝试了其他一些答案,但是在我手动删除android/build目录并重新运行react-native run-android强制从src重建应用程序之前,没有任何效果。 原来该构建已被缓存,包括对旧软件包名称的引用。

答案 20 :(得分:0)

就我而言,我在google-services.json(来自Firebase)中使用了错误的package_name(client.client_info.android_client_info.package_name)。它必须匹配@parker提到的这四个值。

答案 21 :(得分:0)

我尝试了上面发布的所有答案,但用例没有任何结果。

最终通过执行以下命令得到解决:

react-native run-android --variant=alphaDebug

如果应用程序中有多种口味,那么我们必须提及变体 通过命令行

答案 22 :(得分:0)

好吧,这是当我们从手机上手动卸载apk时发生的。它表明MainActivity不存在。 解决方案:转到为所有用户设置和卸载App实例的应用,然后使用react-native run-android再次运行即可解决您的问题

答案 23 :(得分:0)

我通过在手机上手动安装调试应用程序解决了该问题。

为此,请转到 [Project_Path] \ android \ app \ build \ outputs \ apk \ debug \ app-debug.apk

将此 app-debug.apk 复制到您的移动设备。

现在,只需将其正常安装在您的手机中,就可以了。

答案 24 :(得分:0)

就我而言..上述解决方案均无效。 然后,我找到了原因,我之前安装了具有相同软件包名称的应用程序。我已经从手机上卸载了它,但是因为我有Oreo设备..它也已安装在另一个用户中。因此,通过从所有用户卸载..解决了我的问题。 这可能对您没有帮助。.但这仍然是我的解决方法。

答案 25 :(得分:0)

如果您在app build.gradle文件中启用了构建变量,则会发生这种情况。

当react-native运行时,它似乎在测试或其他东西上加上你的应用程序id,它改变了某些文件中的包名,但却让其他文件保持不变。您的应用程序找不到.MainActivity,因为它实际上不存在于生成的新包命名空间中。

以下是尝试解决此问题的一些事项:

  • 在Manifest文件中使用FQDN获取应用程序类和活动类的名称。
  • 用此one替换您的android cli文件。这是/node_modules/react-native/local-cli/runAndroid
  • 中的文件

这可以解决您的问题。

答案 26 :(得分:-2)

adb 卸载 com.packagename。它对我有用。