ACRA stesso si blocca con un problema strano:È possibile utilizzare ACRA in un progetto di libreria?
IllegalStateException: Cannot access ErrorReporter before ACRA#init
Ho un app con ACRA 4.3.0 che funziona perfettamente. Ho cambiato l'intera app in una libreria, quindi posso apportare varianti minori. Ho creato un nuovo progetto completamente vuoto diverso da un manifest e collegamenti a questa nuova libreria. Per qualsiasi altro tentativo, in AcraApplication.java è necessario rimuovere la riga "resToastText = R.string.crash_toast_text" e aggiungere una nuova riga sotto Acra.init (this);
ACRA.getConfig().setResToastText(R.string.crash_toast_text);
Il progetto si basa fine e in eseguire il debug ho confermato ACRA.init (questo); viene eseguito prima del codice del mio programma principale e prima che si verifichi l'errore. Nel programma principale, nel punto in cui abbiamo fissato alcuni dati personalizzati:
ACRA.getErrorReporter().putCustomData("Orientation", "L");
Essa provoca l'incidente (o, più precisamente, ACRA si causa l'errore) e non viene generato alcun rapporto di ACRA.
Qualche idea su cosa provare in seguito o indicazioni su dove cercare? Potrebbe essere ACRA incompatibile con le librerie, che in questo caso, posso estrarlo diversamente da una maniglia, ma in qualche modo sconfigge lo scopo della libreria.
Soluzione: Invece di aggiungere la riga sotto Acra.init(this);
aggiungere queste tre linee prima della linea di init:
ACRAConfiguration config = ACRA.getNewDefaultConfig(this);
config.setResToastText(R.string.crash_toast_text);
ACRA.setConfig(config);
ACRA.init(this);
Nota questo funziona solo in v4.3.0 e versioni successive.
Ciao, anche con queste righe nel mio proguard.cfg, ho ancora un "NoSuchFieldError: SILENT" nella mia versione. Non riesco a capirlo – Arnaud