解决 Error type 3 问题 Error: Activity class {xxx/xxx.MainActivity} does not exist.

  • 网上寻找解决方案
  • 1.检查包名是否正确
  • 2. Clean Project,然后再 Rebuild Project.
  • 3. Run--> Edit Configurations... 查看Deploy: 如果是Nothing 请选择 Default APK.
  • 2、真正可行的解决办法
  • 我的思考


今天用AS调试程序的时候,又发现之前遇到的一个问题。就是用AS给真机装程序的时候,出现了一个类型为 type3的错误,Error type 3 Error: Activity class {amap.com.amapandgoogle/amap.com.amapandgoogle.MainActivity} does not exist.

安装指定的typescript 版本 type3安装程序打开无反应_安装指定的typescript 版本


(PS:调试的这个程序不是我的,是网上别人开源的代码,我下载下来学习的)。而之前我自己写的程序也出现过一次这样的错误,今天再次出现,我就想找找看到底是什么原因。

网上寻找解决方案

按照惯例,遇到问题先问下度娘,看有没有解决办法。网上关于这个问题的解决办法有几种,我稍微列举一下:

1.检查包名是否正确

1)在模块级的build.gradle下面可以查看项目的包名,也就是应用ID。

defaultConfig {
    applicationId "amap.com.amapandgoogle"
    }

2) 在AndroidMainfest.xml文件中也能查看。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="amap.com.amapandgoogle" >
2. Clean Project,然后再 Rebuild Project.
3. Run–> Edit Configurations… 查看Deploy: 如果是Nothing 请选择 Default APK.

几种方法都尝试之后,发现还是不行,每次虽然显示安装成功,但是桌面上根本看不到这个应用。而且AS也报type 3 的错误。

安装指定的typescript 版本 type3安装程序打开无反应_android_02

2、真正可行的解决办法

也不知道怎的,突然脑子灵光一闪,这是不是也和之前安装过的应用没有卸载干净有关。这是上一篇博客介绍的内容,传送门。

这里再介绍一下怎么操作。首先要把adb的路径配置好(可以运行adb命令)

安装指定的typescript 版本 type3安装程序打开无反应_安装指定的typescript 版本_03

然后把手机用数据线和电脑相连,同时打开开发人员选项按钮,运行USB调试,直到在AS的Conneted Devices列表下出现你的手机,最后就可以在cmd下执行卸载命令:

adb uninstall apk的包名

这里apk的包名就是你的应用的APK的包名。出现提示Success即说明卸载成功。

安装指定的typescript 版本 type3安装程序打开无反应_安装指定的typescript 版本_04


此时再次运行安装包就可以成功。

安装指定的typescript 版本 type3安装程序打开无反应_安装指定的typescript 版本_05

我的思考

遇到问题还是要积极思考出现的原因,为什么之前几次调试没出现这个问题,而后面又突然出现了呢?我试着重现这个问题,所以在运行程序的出现下面这个界面的时候,我点击了左边的取消按钮,结果再次安装的时候就果真装不上了,还是提示之前的 Error Type 3 错误。

安装指定的typescript 版本 type3安装程序打开无反应_安装指定的typescript 版本_06


重现了问题,我们还是不清楚到底为什么?我们仔细观察上图的这个风险提示信息,因为是来自外部安装的应用,所以手机会对它的安全性进行检查,如果发现风险就会提醒用户。如果我们点击了继续安装按钮,就表示我们允许这个外部应用的安装,并对它的安全性负责;而反之如果点击了取消按钮,我认为是手机得到用户的反馈,这个应用不安全,用户不想安装,那么系统以后就会禁止这个应用的安装,也就是把这个应用列入了黑名单。我尝试着在应用管理里面看能否找到手机禁止安装的应用名单,但是并没有找到,我怀疑是在系统的内部有一个注册表,里面详细记录了应用的各种信息,包括签名信息(前面不一致就禁止安装)、是否允许安装等,只能用一些能操作手机系统内部信息的应用,比如adb,aapt等。