Ich benutze AndroidStudio 3.1 Canary 3 im Moment zusammen mit D8. Ich habe es ohne D8 versucht und habe auch 3.1.0 ausprobiert. Das konsistente Problem ist, dass MAIN_ORDERED einen Fehler im Annotationsprozessor auslöst, in dem das ENUM nicht gefunden werden kann. Wenn ich jedoch den EventBus-Code überprüfe, ist das ENUM vorhanden. Android Studio schließt die MAIN_ORDERED-Enumeration automatisch ab. IchEventBus Annotation Prozessor akzeptiert ThreadMode.MAIN_ORDERED in AndroidStudio 3.1 nicht
In meiner Tätigkeit habe:
@Subscribe(threadMode = ThreadMode.MAIN_ORDERED) public void fragmentDone(FragmentResult msg) {
Dieser schlägt mit einem Fehler von dem Annotation-Prozessor bauen:
07:28:26.857 [ERROR] [system.err] error: Unexpected error in EventBusAnnotationProcessor: java.lang.EnumConstantNotPresentException: org.greenrobot.eventbus.ThreadMode.MAIN_ORDERED
, die, wenn ich mit ThreadMode.MAIN
zurückkehren weggeht.
Ich baue mit der org.greenrobot:eventbus:3.1.1
und org.greenrobot:eventbus-annotation-processor:3.1.0
, die die richtige Version zu sein scheint.
20:47:37.023 [ERROR] [system.err] java.lang.EnumConstantNotPresentException: org.greenrobot.eventbus.ThreadMode.MAIN_ORDERED
20:47:37.129 [ERROR] [system.err] at sun.reflect.annotation.EnumConstantNotPresentExceptionProxy.generateException(EnumConstantNotPresentExceptionProxy.java:46)
20:47:37.130 [ERROR] [system.err] at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:84)
20:47:37.130 [ERROR] [system.err] at com.sun.proxy.$Proxy142.threadMode(Unknown Source)
20:47:37.130 [ERROR] [system.err] at org.greenrobot.eventbus.annotationprocessor.EventBusAnnotationProcessor.writeCreateSubscriberMethods(EventBusAnnotationProcessor.java:287)
20:47:37.130 [ERROR] [system.err] at org.greenrobot.eventbus.annotationprocessor.EventBusAnnotationProcessor.writeIndexLines(EventBusAnnotationProcessor.java:373)
20:47:37.130 [ERROR] [system.err] at org.greenrobot.eventbus.annotationprocessor.EventBusAnnotationProcessor.createInfoIndexFile(EventBusAnnotationProcessor.java:333)
20:47:37.130 [ERROR] [system.err] at org.greenrobot.eventbus.annotationprocessor.EventBusAnnotationProcessor.process(EventBusAnnotationProcessor.java:106)
20:47:37.130 [ERROR] [system.err] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
20:47:37.130 [ERROR] [system.err] at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
Dies führt zu einer gebrochenen EventBusIndex.java Datei erzeugt werden: -
package com.company.product;
import org.greenrobot.eventbus.meta.SimpleSubscriberInfo;
import org.greenrobot.eventbus.meta.SubscriberMethodInfo;
import org.greenrobot.eventbus.meta.SubscriberInfo;
import org.greenrobot.eventbus.meta.SubscriberInfoIndex;
import org.greenrobot.eventbus.ThreadMode;
import java.util.HashMap;
import java.util.Map;
/** This class is generated by EventBus, do not edit. */
public class EventBusIndex implements SubscriberInfoIndex {
private static final Map<Class<?>, SubscriberInfo> SUBSCRIBER_INDEX;
static {
SUBSCRIBER_INDEX = new HashMap<Class<?>, SubscriberInfo>();
putIndex(new SimpleSubscriberInfo(com.company.product.activities.MainActivity.class, true,
new SubscriberMethodInfo[] {
Und wieder, Blick auf die import org.greenrobot.eventbus.ThreadMode;
Datei, die Enum die MAIN_ORDERED
Erklärung enthalten aussieht.
ich aus Ideen bin ...
versucht gerade jetzt auf AS 3.0, und es funktioniert gut. Könntest du den Abschnitt "Abhängigkeiten" von build.gradle posten? –
Ich habe die Dinge eingegrenzt. Es schlägt fehl, wenn ich "SDKVersion> 25" als Ziel habe. Der Annotationsprozessor schlägt daher auf Android O + fehl. –
@SumitAnantwar ... Hier gehen Sie: 'Abhängigkeiten { Classpath 'com.android.tools.build:gradle:3.1.0-alpha03' Classpath‚com.google.gms: google-Dienste: 3.0. 0 ' } ' –