debug模式运行报错ClassNotFoundException 解决方法

前奏:

连续一个月的高强度开发接近尾声,昨天拿到设计logo准备换上,但是一直不生效。

    <application
        android:name="com.example.lenovo.zhongye.ZhongYeApplication"
        android:allowBackup="true"
        android:icon="@mipmap/app_logo" // 更改图片指向路径
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">


乌龙:

手机的主界面就是launcher本身就是应用,用户点击图标 startActivity 启动程序。这样想来的话,一直无法更改应用图标应该是 launcher 存在缓存的情况。


解决办法:

重启手机难过——各种百度,更改配置,浪费3个小时。最终解决是重启。

言归正传,由于前面的乌龙事件,让我发现另一个问题。测试机一直无法更改图标,所以我想借用同事的android机看看是否有同样的问题。然后我打包上传蒲公英,生成二维码发给同事,让帮忙安装下试一试。好消息是安装图片改变,坏消息是 程序点击崩溃,无法启动。印象中之前遇到这样的问题。解决办法是直接发个release包测试。但是这个问题如鲠在喉,不出不快。

报错信息:java.lang.RuntimeException Unable to instantiate applicationCaused by: java.lang.ClassNotFoundException: Didn't find class "com...activity


解决办法:

项目build-gradle 降低你的gradle版本:

   dependencies {
       // classpath 'com.android.tools.build:gradle:2.3.3'  // 问题出现在gradle 2.3版本
        classpath 'com.android.tools.build:gradle:2.2.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }


参考:Android debug.apk 闪退 ClassNotFoundException 直接Run正常


我使用的降级方法,解决这个问题,还有种方法可以使用debug包,


生成测试所需debug.apk的时候使用 "Build" -> "Build APK" 生成,而非在设备上直接"Run"这样感觉不是很方便,

目前gradle高版本还不是我所需要的,所以我选择降低处理。


原理:Android版本兼容问题

高版本的设备运行出的apk安装在Android L以下的设备上会报错

低版本的设备运行出的apk安装在高版本设备上正常

另外有人说,Google工程师的坑 gradle 3.3版本本身有问题。——仁者见仁,智者见智


PS:少说多听,问题,解决是财富。回避是隐患。


猜你喜欢

转载自blog.csdn.net/qq_30974087/article/details/80318454