android studio - Jack y Android-Fallo en el tiempo de ejecución de Lambda hasta compilación limpia
android-studio android-jack-and-jill (1)
Supongo que esto es un error en Build Tools 25.0.0 y 25.0.1. Volver a 24.0.3 solucionó este problema para mí.
ACTUALIZACIÓN Después de actualizar a com.android.tools.build:gradle:2.2.3
, tuve un día laboral completo sin errores de compilación con Build Tools v25.0.1.
Al parecer, al azar, el apk que instala Android Studio está dañado. Por lo general, se centra alrededor de las lambdas (pero es diferente cada vez). Estoy usando la compilación de Jack y la última versión de todo (enumerada al final). El problema persiste hasta que hago una compilación limpia (y luego todo está bien). Los fallos intermitentes son un fenómeno nuevo. Las cosas se mantuvieron estables con las características de Jack y Java 8 por un tiempo. Desafortunadamente, no puedo precisar lo que cambió antes de que comenzaran los escandalosos fracasos.
Código de ejemplo:
private static final Ordering<Foo> ORDER_BY_FOO =
Ordering.natural().onResultOf(Foo::getId);
Asignación real del problema (en código guava):
ByFunctionOrdering(Function<F, ? extends T> function, Ordering<T> ordering) {
this.function = checkNotNull(function); // <-- Fails
[...]
class ByFunctionOrdering<F, T> extends Ordering<F> {
final Function<F, ? extends T> function;
Ejemplo de excepción de tiempo de ejecución:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mypackage, PID: 32222
java.lang.ExceptionInInitializerError
at com.mypackage.MyFragment.myOtherMethod(MyFragment.java)
at com.mypackage.MainActivity.myMethod(MainActivity.java:144)
at com.mypackage.MainActivity.onActivityResult(MainActivity.java:107)
at android.app.Activity.dispatchActivityResult(Activity.java:6932)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.ClassCastException: com.mypackage.-$Lambda$0 cannot be cast to com.google.common.base.Function
at com.google.common.collect.ByFunctionOrdering.<init>(ByFunctionOrdering.java:39)
at com.google.common.collect.Ordering.onResultOf(Ordering.java:416)
at com.mypackage.MyFragment.<clinit>(MyFragment.java:110)
at com.mypackage.MyFragment.myOtherMethod(MyFragment.java)
at com.mypackage.MainActivity.myMethod(MainActivity.java:144)
at com.mypackage.GamesApiManager.onActivityResult(GamesApiManager.java:205)
at com.mypackage.MainActivity.onActivityResult(MainActivity.java:107)
at android.app.Activity.dispatchActivityResult(Activity.java:6932)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
- Android Studio / Gradle Build Tools 2.2.2
- Gradle 2.14.1
- buildToolsVersion 25.0.0
- sourceCompatibility / targetCompatibility JavaVersion.VERSION_1_8
- compileSdkVersion / targetSdkVersion 24