2013-08-27 5 views
10

Sto cercando di esportare un'applicazione firmata e quando faccio funzionare la mia applicazione ottengo questa eccezioneEventBus e Proguard: Impossibile inviare evento

Could not dispatch event: class com.achlan.myapp.events.e to subscribing class class com.achlan.myapp.b.d 

mapping.txt:

com.achlan.myapp.events.RestResult -> com.achlan.myapp.events.e 
com.achlan.myapp.data.DataManager -> com.achlan.myapp.b.d: 

I' Ho già aggiunto questa linea alla mia proguard config:

-keepclassmembers class ** { 
public void onEvent*(**); } 

Mi manca qualcosa nella configurazione della mia proguard?

+1

Senza più tracce dello stack, non c'è molto che io possa suggerire, a parte forse il deposito di un problema sul tracker degli errori di EventBus. – CommonsWare

risposta

0

Non confondere il metodo. Mi piace questo:

Se uso

EventBus.getDefault().register(this, "getName", Name.class); 

farò

-keepclassmembers class ** { 
    public void getName(**); 
} 

Può funzionare.

+0

è necessario spiegare la risposta. – Yaje

+0

grazie, ma sto cercando di farlo senza dichiarare la funzione del bus eventi di ricezione. comunque, ho provato la tua soluzione e non riesco a farla funzionare. – Achlan

0

Se si utilizza un (pacchetto privato) Metodo OnEvent non pubblica è necessario aggiornare la configurazione progaurd come segue:

-keepclassmembers class ** { 
    public void onEvent*(**); 
    void onEvent*(**); 
} 
+0

grazie ma ogni metodo onEvent nel mio codice è pubblico. – Achlan

+0

Se si dispone di 'void onEvent * (**);', non penso che sia necessario 'public void onEvent * (**);'. – manfcas

4

Ho anche avuto un problema con EventBus e ProGuard e ho contattato il creatore di ProGuard/DexGuard e lui mi ha inviato il seguente 'soluzione', che potrebbe aiutare:

-keepclassmembers,includedescriptorclasses class ** { public void onEvent*(**); } 

aggiungi includedescriptorclasses al tuo file di configurazione per evitare fase di ottimizzazione ProGuard/di DexGuard per aggiungere un suffisso al nome del metodo.

+0

Wow, funziona davvero, grazie. –