Android Studio 真机调试出现 Unable to instantiate activity ComponentInfo的解决方案

第一种方法

因为Google宣布不对eclipse支持了,所以小弟也想从eclipse慢慢转到android studio!

在一次将项目迁移到android studio的时候 遇到了一些问题,特此记录下~!希望对大家有帮助!


项目迁移完成后,在AVD测试正常,连接到真机调试的时候报如下错误



 
 
  1. FATAL EXCEPTION: main
  2. Process: com.xxxxxxxxx.android, PID: 24099
  3. java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.xxxxxxxxx.android/com.xxxxxxxxx.android.WebActivity}: java.lang.ClassNotFoundException: Didn 't find class "com.xxxxxxxxx.android.WebActivity" on path: DexPathList[[zip file "/data/app/com.xxxxxxxxx.android-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxxxxxxxx.android-1/lib/arm, /data/app/com.xxxxxxxxx.android-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
  4. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2721)
  5. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2880)
  6. at android.app.ActivityThread.-wrap12(ActivityThread.java)
  7. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1617)</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-string">at android.os.Handler.dispatchMessage(Handler.java:102)</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-string">at android.os.Looper.loop(Looper.java:185)</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-string">at android.app.ActivityThread.main(ActivityThread.java:6493)</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-string">at java.lang.reflect.Method.invoke(Native Method)</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-string">at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:916)
  8. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:806)
  9. Caused by: java.lang.ClassNotFoundException: Didn't find class "com.xxxxxxxxx.android.WebActivity" on path: DexPathList[[zip file "/data/app/com.xxxxxxxxx.android-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxxxxxxxx.android- 1/lib/arm, /data/app/com.xxxxxxxxx.android- 1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
  10. at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java: 56)
  11. at java.lang.ClassLoader.loadClass(ClassLoader.java: 380)
  12. at java.lang.ClassLoader.loadClass(ClassLoader.java: 312)
  13. at android.app.Instrumentation.newActivity(Instrumentation.java: 1079)
  14. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 2711)
  15. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 2880
  16. at android.app.ActivityThread.-wrap12(ActivityThread.java) 
  17. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:<span class="hljs-number">1617</span>)&nbsp;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">at android.os.Handler.dispatchMessage(Handler.java:<span class="hljs-number">102</span>)&nbsp;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">at android.os.Looper.loop(Looper.java:<span class="hljs-number">185</span>)&nbsp;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">at android.app.ActivityThread.main(ActivityThread.java:<span class="hljs-number">6493</span>)&nbsp;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">at java.lang.reflect.Method.invoke(Native Method)&nbsp;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line">at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 916
  18. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 806


大概意思就是找不到WebActivity这个类

但小编说了,在AVD是正常的,所以程序肯定没问题。

百度了各种文章,都是说看AndroidManifest文件有没有配置正确,有没有正常引用jar ,然后重新clean或者make module “APP”

以上各种方法我都尝试过了!然而并没有什么卵用!

后来咨询一大神,他说让我把热更新关掉试试!

热更新是什么鬼?对于我这个刚从eclipse过来的菜鸟来说,根本就是一头雾水!

百度之~

关于热更新的介绍

http://www.jianshu.com/p/2e23ba9ff14b

其实就是可以加速编译,Instant Run,是android studio2.0新增的一个运行机制,在你编码开发、测试或debug的时候,它都能显著减少你对当前应用的构建和部署的时间。

当我们第一次点击run、debug按钮的时候,它运行时间和我们往常一样。但是接下去的时间里,你每次修改代码后点击run、debug按钮,对应的改变将迅速的部署到你正在运行的程序上,传说速度快到你都来不及把注意力集中到手机屏幕上,它就已经做好相应的更改。

开启热更新的方法

http://blog.csdn.net/u013277740/article/details/51008282

既然知道怎么开,那么肯定就知道怎么关啦!

打开IDE,进入File—>Setting—>Build,Execution,Deployment—>Instant Run

将将enable instant run to hot swap code/resource changes on deploy的勾去掉





然后重新run

是不是发现 一切正常了呢?

# 第二种方法

今天写Android程序,遇到了java.lang.RuntimeException: Unable to instantiate activity ComponentInfo这个错误,原来是我的AndroidManifest.xml文件配置有误。以下是我本来的配置文件,我改过包名的。原来错误是在android:name=”.LogoActivity”,因为我的LogoActivity.java是在 com.hxxy2003.iweibo.ui下的,所以修改成android:name=”.ui.LogoActivity”就OK了。

复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hxxy2003.iweibo"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".LogoActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".ui.LoginActivity" />

<service android:name=".logic.MainService" />
</application>

</manifest>
复制代码



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是因为Android系统无法实例化指定的Activity组件。可能是因为Activity类名或包名错误,或者Activity类没有正确的构造函数。需要检查代码中的Activity组件信息是否正确,并确保Activity类存在并正确实现。 ### 回答2: 这个错误是由于Android应用程序在尝试启动活动时无法实例化所导致的。出现这个错误的原因可能很多,下面列举几种常见的情况: 1. 活动未在清单文件中注册:如果活动未在清单文件中注册,Android系统将无法找到该活动,并且无法实例化它。因此,您需要确保在清单文件中正确注册所有活动。 2. 活动的类名错误:如果在清单文件中注册活动时使用了错误的类名,将无法实例化该活动。这可能是由于一个简单的拼写错误或剪贴板中的粘贴错误造成的。要解决这个问题,您需要确保类名在清单文件中正确。 3. 活动的构造函数错误:通常,活动构造函数是空的,但有时您可能会在其中添加其他代码。如果发生了错误,可能无法实例化该活动。您需要检查活动构造函数并解决错误。 4. 活动的包名错误:通常,一个应用程序有多个包或子包。如果在清单文件中注册活动时,包名不正确,无法找到该活动类,并且将出现无法实例化活动的错误。您需要确保正确引用活动所在的包和类。 5. 应用程序的错误集成库:若在应用程序中使用了错误的第三方库或错误版本的库,也会导致无法实例化活动的错误。您需要确保在应用程序中正确配置和使用库。 总之,如果出现java.lang.runtimeexception: unable to instantiate activity componentinfo错误,应该检查清单文件中是否正确注册了活动、类名、包名和构造函数的正确性,排查第三方库等问题,找到原因后进行修正。 ### 回答3: Java.lang.RuntimeException:无法实例化Activity ComponentInfoAndroid应用程序应用过程中会出现的一个常见错误。这个错误通常发生在你在启动应用程序时,因为Android无法找到定义的Activity类。 首先,我们需要了解Android应用程序的结构。在Android应用程序中,每个Activity都有一个独特的活动标识符。这个标识符被用来定义Activity类,并确保在Android应用程序中的每个Activity类都具有唯一的标识符。如果Android应用程序无法找到正确的活动标识符,它就会导致Java.lang.RuntimeException:无法实例化Activity ComponentInfo错误。 有以下几种可能导致这个错误: 1、AndroidManifest.xml中定义的Activity类有误。 AndroidManifest.xml是一个非常重要的文件,在Android应用程序中,用于配置所有的组件。如果在Application节点中的Activity节点中没有正确定义Activity类,就会导致这个错误。 2、Activity类名称有误。 如果Activity类名称不正确或与AndroidManifest.xml中定义的类名称不匹配,Android应用程序也无法找到正确的Activity类。 3、Activity所需的组件缺少。 这可能是你使用的一些组件缺失了某些类或库导致的错误,可能是引用库文件或其它一些错误导致的。 解决这个错误的方法通常是检查你的AndroidManifest.xml文件和Activity类方法的代码,确保他们的定义和使用都是正确的。如果还是不行,可能需要检查所使用的库文件或引用的机制是否存在问题。在Android开发中,我们总是有机会遇到各种各样不同的问题,因此谨慎检查是解决问题的最好办法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值