Android 運(yùn)行中crash, lambda相關(guān)方法找不到解決方案
接入第三方sdk的過程中,編譯是正常的,但是運(yùn)行報(bào)如下錯(cuò)誤:
ava.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of 'java.lang.invoke.LambdaMetafactory' appears in /apex/com.android.runtime/javalib/core-oj.jar)at butterknife.Unbinder.<clinit>(Unbinder.java:9)
從圖中我們可以看到Lambda關(guān)鍵字。Lambda表達(dá)式在jdk 1.8以上才支持,Android Studio默認(rèn)用jdk?1.7編譯。因此,我們要在Android Studio 的app/build.gradle中設(shè)置編譯使用的jdk版本。
在android 的作用域下加上如下代碼:
android {
compileOptions?{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8}
}
然后sync后再次編譯運(yùn)行即可。