前奏:
连续一个月的高强度开发接近尾声,昨天拿到设计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版本本身有问题。——仁者见仁,智者见智