2012-06-13 11 views
7

Niedawno trafiłem na a puzzling problem bez żadnego wyjaśnienia, że ​​w jakiś sposób jestem managed to solve.Dlaczego warto zacząć od wykluczenia zasobów mojej własnej aplikacji, gdy nie było to wcześniej potrzebne?

Samo rozwiązanie stwarza problem dla mnie, bo ja nie rozumiem: To zmusza mnie do kierowania PROGUARD zignorować wszelkie ostrzeżenia dotyczące pakietu mojej własnej aplikacji w jej całości.

-dontwarn com.bta.** 

Oprócz kłopotliwej kwestii konieczności ignorować ostrzeżenia o najbardziej kodem błędu podatne na moim rozwoju (najczęściej zmieniających kod), jestem zaskoczony przez dwa pytania:

  1. Dlaczego to nagle pojawiła się potrzeba? (Nigdy wcześniej nie musiałem tego robić) wcześniej.)
  2. Dlaczego nie jest to potrzebne w innych projektach/aplikacjach, które powstają w I ?

Uważam, że spowodował to jakiś nowy kod lub bibliotekę (AdMob?), Ale jakie jest tego wytłumaczenie? Dlaczego biblioteka osób trzecich zmusiłaby mnie do wyłączenia ostrzeżeń o moich własnych zasobach aplikacji?

Jakie są skutki uboczne wyłączenie ostrzeżenia o własnego pakietu aplikacji całkowicie (jak ja)?

+1

Czy korzystasz z najnowszej konfiguracji Proguard składającej się ze standardowej części z zestawu SDK i części specyficznej dla aplikacji w swoim pliku konfiguracyjnym (zobacz http://tools.android.com/recent/proguardimprovements)? – Codo

+0

@Codo No. Dziękuję bardzo za udostępnienie tego linku! W moim gorączkowym i szalonym środowisku programistycznym czasami brakuje mi krytycznej dokumentacji takiej jak ta. Opublikuj to jako odpowiedź, aby móc ją zaakceptować. Nie przeczytałem jeszcze dokumentu, ale krótkie przeglądanie sugeruje, że może to być kluczem do rozwiązania tajemnicy. +1. –

+1

Nie jestem pewien, czy to rozwiązanie Twojego problemu. Daj nam znać, kiedy już spróbujesz. – Codo

Odpowiedz

7

Odpowiadając na moje własne pytanie:

Po tracić zbyt wiele czasu na debugowanie samych narzędzi, które mają uratować mi czas, odkryłem źródło problemu. It's a bug in the Android SDK tools. Jest to udokumentowane, ponieważ zostały rozwiązane w r17, ale używam najnowszego dnia dzisiejszego (18 czerwca 2012 r.) I , który nie został rozwiązany! (patrz komentarz 24). Comment 25 opisuje również obejście, które pozwala mi teraz kontynuować mój faktyczny rozwój.

Błędy są faktami w złożonych systemach. Jednak fakt, że ani Proguard, ani narzędzia do kompilacji, które dostarczają danych wejściowych Proguardowi, nie może dostarczyć żadnego użytecznego komunikatu o błędzie (w rzeczywistości zrobili dokładnie odwrotnie), sugeruje, że coś jest zepsute w "metodologii" narzędzi programistycznych Androida recommended by Google.

Powiązane problemy