Android 中出现java.lang.VerifyError
2018-08-21 本文已影响14人
追梦小乐
1、出现的原因以及解决方法
今天在集成zxing,做代码合成二维码的时候抛出来java.lang.VerifyError这个错误,看到这个的时候我一脸懵逼,查找资料的时候,普遍都是说文件找不到或者类库重复或者混淆问题会造成这个问题
只能根据这些大方向去一步步审查自己的项目,最后我发现我的问题出现的原因是引用zxing类库的时候出现的:
引入zxing的时候,我是使用provided 的方式引入的
provided 'com.google.zxing:core:3.3.0'
修改为compile方式的时候,就可以正常使用了
compile'com.google.zxing:core:3.3.0'
2、compile 、provided、implementation 的区别
2.1 compile
其有如下的几种使用方式:
-
compile 'com.android.support:support-v4:24.0.0'
从repository(默认是jCenter())里下载一个依赖包进行编译并打包 -
compile fileTree(dir: 'libs', include: ['*.jar'])
引用libs下所有jar包 -
compile files('libs/xxx.jar')
引用本地jar包 -
compile(name: 'xxxxxx', ext: 'aar')
引用一个aar文件 -
compile project(':xxx')
引用本地第三方类库
2.2 provided
基本都是说:在编译时使用,但最终不会被编译到apk或aar里
根据我的使用经验,如果是本地的类库比如jar、aar等,只使用了其中的java类的话,可以使用这种方式来减少apk的体积
provided files('libs/xxx.jar')
2.3 implementation
为了加快构建编译速度,Android Studio 3.0开始使用了新的指令
图片内容来源于简书博主BrightVan 的文章