我在gradle.properties
的Android Studio 3.1.3中启用了新的D8指导:
android.enableD8.desugaring=true
现在在仅Java模块之一中,编译会因该错误而失败:
com.android.tools.r8.errors.Unreachable:
Unexpected type adjustment from java.lang.String[] to java.lang.Object[]
这里是full stack-trace
注意:旧的dexer可以正常工作(当我停用上述选项时)
我已经检查了Java模块,甚至在任何Java文件中都找不到String[]
或Object[]
。添加--debug --scan
并不能使我对问题可能出在什么地方有更多的了解。
任何想法可能是什么问题,或者如何从dexer获取更详细的错误信息:例如错误代码在哪个文件中?
答案 0 :(得分:0)
尽管原因可能取决于项目,但我想与我分享解决此错误的方式:
D:\Development\Tools\android-sdk\build-tools\28.0.2\d8.bat D:\Development\<PROJECT_PATH>\build\intermediates\intermediate-jars\debug\classes.jar.zip
为了加快该过程,我将大量文件删除以缩小到该软件包,然后缩小到导致D8失败的确切文件。
事实证明,这是以下代码(我正在使用com.annimon.stream.Stream
):
Stream.of(SOME_MAP).map(Map.Entry::getValue).findFirst().orElse(null);
其中SOME_MAP
是HashMap<String, String[]>
,要使用的解决方法
Stream.of(SOME_MAP).map(entry -> entry.getValue()).findFirst().orElse(null);