在我的应用来源上运行lintVitalRelease
检查时,会发生以下崩溃:
> Task :app:lintVitalRelease
ECJ compiler crashed processing D:\PROJECTS\xxxxx\app\src\main\java\com\xxxxx\xxxxx\utils\images\ImageUtil.java
java.lang.NullPointerException
at org.eclipse.jdt.internal.compiler.ast.MessageSend.analyseCode(MessageSend.java:138)
at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.analyseCode(MethodDeclaration.java:125)
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.internalAnalyseCode(TypeDeclaration.java:739)
at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.analyseCode(TypeDeclaration.java:263)
at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.analyseCode(CompilationUnitDeclaration.java:118)
at com.android.tools.lint.EcjParser$NonGeneratingCompiler.process(EcjParser.java:1416)
at org.eclipse.jdt.internal.compiler.Compiler.processCompiledUnits(Compiler.java:550)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:462)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:417)
at com.android.tools.lint.EcjParser.parse(EcjParser.java:549)
我能够将此问题分解为以下代码行:
public static void startFromGalleryIntent(Fragment f) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
f.startActivityForResult(intent, GALLERY_INTENT_RESOLVER);
}
一旦我评论出最后一行:
// f.startActivityForResult(intent, GALLERY_INTENT_RESOLVER);
lintVitalRelease
完成没有问题。
我正在使用最新的稳定构建工具(com.android.tools.build:gradle:3.0.1
)
谁能解释发生了什么,以及如何解决这个问题?
答案 0 :(得分:0)
Lint与lambdas存在一些问题。 使用带有sourceCompatibility JavaVersion.VERSION_1_8的Java源代码的项目也发生了同样的问题。
我发现有问题的类中的静态方法(在你的情况下是ImageUtil.java)是从lambda的其他地方调用的。用匿名类替换lambda解决了它