Jack und Android - Lambda-Laufzeitfehler bis zum sauberen Build

Scheint zufällig zu sein, dass das von Android Studio installierte Apk beschädigt ist. Es dreht sich normalerweise um Lambdas (aber es ist jedes Mal ein anderes). Ich verwende die Jack-Zusammenstellung und die neueste Version von allem (am Ende aufgelistet). Das Problem bleibt bestehen, bis ich einen sauberen Build mache (und dann ist alles in Ordnung). Die zeitweiligen Ausfälle sind ein neues Phänomen. Mit den Funktionen von Jack und Java 8 lief es eine Weile stabil. Leider kann ich nicht genau bestimmen, was sich vor Beginn der schuppigen Ausfälle geändert hat.

Beispielcode:

private static final Ordering<Foo> ORDER_BY_FOO =
    Ordering.natural().onResultOf(Foo::getId);

Tatsächliche Problemzuweisung (im Guaven-Code):

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;

Beispiel Laufzeitausnahme:

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.2Gradle 2.14.1buildToolsVersion 25.0.0 sourceCompatibility / targetCompatibility JavaVersion.VERSION_1_8 compileSdkVersion / targetSdkVersion 24

Antworten auf die Frage(2)

Ihre Antwort auf die Frage