Android开发常见异常和解决方案(一)

异常记录,填过的坑记录下来,作为以后的经验

异常1
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformDexWithDexForRelease'
产生原因:该bug 是由于 grade 的依赖包的问题,查看依赖是否重复但是版本不同。也可能出现的问题: 引入的jar包包含此jar包。
解决方案:检查,删除重复的依赖或者jar包
异常2com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
产生原因:Android工程方法数超过65535,dex文件是java代码打包后的字节码,一个dex文件最多只支持65535个方法,这也是为什么微信有了三个dex文件的原因。
解决方案:谷歌官方推荐使用MultiDexApplication,具体步骤如下
Gradle 配置:

    defaultConfig {   
           applicationId "XXX"
           minSdkVersion 14
           targetSdkVersion 27
           multiDexEnabled true
    }
    dependencies {
        compile 'com.android.support:multidex:1.0.0'
    }
    Application 类重写方法:

    @Override
    protected void attachBaseContext(Context base) {
       super.attachBaseContext(base);
       MultiDex.install(this);
    }

异常3 关于Android微信支付的errCode=-1
项目中有用到微信支付,之前不是我负责开发的,来这也没测过,昨天在测支付宝支付的问题,修复好之后顺便试了一下微信支付,神马情况,errCode=-1,微信文档上面是这样讲的,
errCode为-1可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
然后好郁闷,测线上的版本微信支付正常的,最后发现,打包签名的app可以正常支付,用AS装到手机上的则会出现errCode=-1的情况。造成支付返回code是-1的原因是:是签名错误,用Android Studio直接装到手机上的apk和打包签名的apk签名是不一样的。
异常4 打包签名失败:signing.KeytoolException: Failed to read key atap from store “D:\pcApple.jks”: Keystore was tampered with, or password was incorrect
根据错误提示得知失败的原因是无法从存储中读取密钥atap“D:\ pcApple.jks”:密钥库被篡改,或者密码不正确,解决方案:首先确定自己的key路径是对的,密码有没有输入错误,密码是否reset重置过,如果点击alias后面的 …按钮时提示Keystore was tampered with, or password was incorrect,可以采取以下操作,如果有之前key文件的备份的话,就关闭AndroidStudio,把报错的key文件删除掉,换成之前备份的key文件,密码什么的要一致,然后打开Androidstudio重新打包,点击alias后面的…按钮,点之前把alias后面的值清空,这时会弹出框,让你选择以后的key或者重新生成,直接点击已经有的那个alias 值就行,这样就可以打包成功了,我是这样解决问题的,当然如果这样还不行的话可以重新创建签名的key文件,如果项目已经做很大接了很多第三方平台并且在很多移动应用平台都已经发版上线后,不建议这样做,也许会造成很多不必要的麻烦,不知道重新生成签名后更新版本的时候会不会不支持。
异常5 移动端微信登陆成功后微信返回的用户信息出现乱码:
解决方案:java代码:将微信返回的json字符串这样转一下:
result = new String(result.getBytes(“ISO-8859-1”), “UTF-8”);

异常6 AS报错Unable to merge dex:
错误信息:

Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

解决方案:先检查有没有重复的jar包依赖在项目的builde.grde文件中,然后
1、Build->clean project
2、Build->rebuild project

猜你喜欢

转载自blog.csdn.net/wjj1996825/article/details/79867535