AndroidStudio引入framework.jar导致 Caused by: java.lang.ArrayIndexOutOfBoundsException: 65535问题

最近在做和车机相关的android项目,引入framework.jar一直都是正常的,今天引入新的jar,编译的时候突然报这个错

Caused by: java.lang.ArrayIndexOutOfBoundsException: 65535,排查了一圈,发现是由于引入framework.jar导致的。

下面记录下自己是如何解决这个问题的,默认我的framework.jar是放在libs下面

产生问题的原因:

这个异常可以理解为,总函数数量超出java虚拟机的限制.

如何解决:

1. 把implementation改为compileOnly ,这样做得目的是 framework.jar只在编译阶段使用,打包apk时候不打包进入,可以减小apk包的大小

//compileOnly 是Androidstudio 3.x以上版本使用,以下版本使用provided

implementation files(‘libs/framework.jar’)  更换为  compileOnly files(‘libs/framework.jar’)

2. 在project的build.gradle中的allprojects闭包中添加

gradle.projectsEvaluated {

    tasks.withType(JavaCompile) {

        //注:app\\libs\\framework.jar是framework.jar 在项目的中存放的路径

        options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\framework.jar')

    }

}

以上配置做完后,如果编译还是报同样的错误(我的项目就是这样的),那就再做第三步修改

3.把model的build.gradle 注释掉 implementation fileTree(include: ['*.jar'], dir: 'libs'),此引入会把lib下的所有jar包打包到apk,导致冲突造成的

这样再重新编译,就可以运行成功了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容