Android Studio 升级到3.0 提示 java.lang.NoClassDefFoundError的解决方法
解决方法
首先把方法写出来,起因和经过和原理写在后面,时间仓促的直接看解决方法吧。
一般出现这个错都是使用的provided导致的
例如,我的旧配置如下:
Projectbuild.gradle文件:
buildscript{ dependencies{ classpath'com.android.tools.build:gradle:3.0.1' //needdeleteingradle3.xversion classpath'com.neenbedankt.gradle.plugins:android-apt:1.8' } } Modulebuild.gradle文件: applyplugin:'com.android.library' applyplugin:'android-apt' android{ //... } configurations{ provided } dependencies{ //... //FyberAnnotations provided'com.fyber:fyber-annotations:1.3.0' apt'com.fyber:fyber-annotations-compiler:1.4.0' //... }
改为最新的build.gradle3.x的配置:
Projectbuild.gradle文件:
buildscript{ dependencies{ classpath'com.android.tools.build:gradle:3.0.1' } } Modulebuild.gradle文件: applyplugin:'com.android.library' android{ //... //addthiscodetoenableannotationProcessor javaCompileOptions{ annotationProcessorOptions{ includeCompileClasspath=true } } } dependencies{ //... //FyberAnnotations compileOnly'com.fyber:fyber-annotations:1.3.0' annotationProcessor'com.fyber:fyber-annotations-compiler:1.4.0' //... }
更改完以上配置在buildProject后即可成功运行了。如果不能请往下看:
注意事项:
上面的Modulebuild.gralde的配置必须写在使用注解所在的Module中!
例如我在ModuleA中的MainActivity使用了@FyberSDK的注解,那么我将上述配置写在ModuleA的build.gralde文件中。
@FyberSDK publicclassMainActivityextendsBaseActivityimplements IBannerDelegate,IMainView, View.OnClickListener{ //.... }
补充相关知识
关于apt的介绍
1、什么是APT?
APT(AnnotationProcessingTool)是一种处理注释的工具,它对源代码文件进行检测找出其中的Annotation,根据注释自动生成代码。Annotation处理器在出来Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源文件和原来的源文件,将它们一起生成class文件。
2、annotationProcessor
annotationProcessor是APT工具中的一种,他是google开发的内置框架,不需要引入,可以直接在build.gradle文件中使用
3、android-apt
android-apt是由一位开发者自己开发的apt框架,源代码托管在这里,随着AndroidGradle插件2.2版本的发布,AndroidGradle插件提供了名为annotationProcessor的功能来完全代替android-apt,自此android-apt作者在官网发表声明最新的AndroidGradle插件现在已经支持annotationProcessor,并警告和或阻止android-apt,并推荐大家使用Android官方插件annotationProcessor。
其他
总结
以上所述是小编给大家介绍的AndroidStudio升级到3.0提示java.lang.NoClassDefFoundError,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!