2012-06-13 11 views
7

Sono stato recentemente colpito con a puzzling problem senza alcuna spiegazione che io in qualche modo managed to solve.Perché iniziare ad escludere le risorse della mia applicazione quando non era necessario prima?

La soluzione si pone un problema per me, perché io non lo capisco: Mi costringe a dirigere Proguard di ignorare tutte le avvertenze per quanto riguarda il mio pacchetto dell'applicazione nella sua totalità .

-dontwarn com.bta.** 

A parte la questione preoccupante di dover ignorare gli avvertimenti circa il codice più soggetto a errori nel mio sviluppo (codice più frequentemente cambiando), io sono perplesso da due domande:

  1. Perché questo bisogno improvvisamente si presentò? (Non ho mai avuto bisogno di fare questo prima.)
  2. Perché questo non è necessario in altri progetti/applicazioni che io sviluppo ?

Credo che qualche nuovo codice o libreria che ho introdotto abbia causato questo (AdMob?) Ma qual è la spiegazione per questo? Perché una libreria di terze parti potrebbe costringermi a disattivare gli avvisi relativi alle risorse dell'applicazione my?

Quali sono gli effetti collaterali di spegnere gli avvertimenti circa il mio pacchetto di applicazione interamente (come ho fatto)?

+1

Si sta utilizzando l'ultima configurazione Proguard costituita da una parte standard dell'SDK e una parte specifica dell'applicazione nel proprio file di configurazione (consultare http://tools.android.com/recent/proguardimprovements)? – Codo

+0

@Codo No. Grazie mille per aver fornito questo link! Nel mio ambiente di sviluppo frenetico e frenetico a volte mi manca una documentazione critica come questa. Si prega di postare questo come risposta in modo che io possa accettarlo. Non ho ancora letto il documento ma una breve navigazione suggerisce che questa potrebbe essere la chiave per la soluzione del mistero. +1. –

+1

Non sono sicuro che questa sia la soluzione per il tuo problema. Facci sapere quando l'hai provato. – Codo

risposta

7

Rispondendo alla mia domanda:

Dopo sprecare troppo tempo sul debug gli strumenti stessi che dovrebbero me risparmiare tempo, ho scoperto la fonte del problema. It's a bug in the Android SDK tools. È documentato come è stato risolto in r17, ma sto usando l'ultimo di oggi (18 giugno 2012) e non è stato risolto! (vedere commento 24). Comment 25 descrive anche la soluzione alternativa che ora consente di procedere con il mio sviluppo effettivo.

I bug sono fatti di vita in sistemi complessi. Ma il fatto che né Proguard né gli strumenti di compilazione che forniscono input a Proguard potrebbero fornire alcun messaggio di errore utile (in realtà hanno fatto esattamente il contrario), suggerisce che qualcosa è rotto nella "metodologia" degli strumenti di sviluppo Android recommended by Google.