2014-06-25 62 views
5

Próbuję uzyskać podpisany plik APK od zaćmienia. Mam wersję debuggable apk, która działa dobrze. Teraz, gdy próbowałem skompilować i podpisać z Eclipse ADT, otrzymuję wiele ostrzeżeń, z których większość to can't find superclass or interface some.package.Class. Tak więc odniosłem się do this, this i wielu innych niestety nie udało mi się dotrzeć nigdzie!Android Tryb debugowania apk działa dobrze, ale tryb zwolnienia daje zbyt wiele ostrzeżeń

ja również uzyskać Note: there were 314 duplicate class definitions. ostrzeżenie

Moja progaurd-project.txt było nietknięte wcześniej. Dlatego dodałem -libraryjars /libs/lib-name dla każdego z słoików obecnych w folderze /EcliseProject/libs/. Więc wymyśliłem następujące:

-libraryjars /libs/android-support-v4.jar -libraryjars /libs/apache-mime4j-core-0.7.2.jar -libraryjars /libs/gcm.jar -libraryjars /libs/httpclient-4.3.3.jar -libraryjars /libs/httpcore-4.3.2.jar -libraryjars /libs/httpmime-4.3.3.jar -libraryjars /libs/library.jar -libraryjars /libs/nineoldandroids-2.4.0.jar

Pod koniec tego mam kilka 1800+ ostrzeżenia większość z nich jest nie znalezienie superklasę lub interfejsu, jak wspomniano powyżej. Dostałem słoiki z tymi klasami i umieściłem je również w/lib/folderze i dodałem -libraryjars wpisów, w tym rt.jar itd. Potem dostałem jeszcze więcej ostrzeżeń, niektóre z nich mówiły: library class org.xmlpull.v1.XmlPullParser depends on program class java.lang.String.

Próbowałem dodać -dontskipnonpubliclibraryclasses, dodając niektóre -dontwarn itp. Nic nie działało tak daleko.

W pewnym momencie zachowałem wystarczającą liczbę -dontwarn, aby utworzyć plik APK, ale po prostu wyświetlił ekran logowania (pierwsza aktywność) i po kliknięciu przycisku utknął tam.

Brakuje mi czegoś bardzo podstawowego, jak sądzę. Przez te wszystkie dni testowałem z użyciem trybu diagnostycznego apk, który działa normalnie. Dlaczego ten problem? Proszę pomóż!!

Odpowiedz

1

OK po wielu poszukiwań w obrębie Google i stackoverflow sam, udało mi się uzyskać rozwiązanie. Poniżej moja proguard-project.txt file:

-libraryjars /libs/android-support-v4.jar 
-libraryjars /libs/apache-mime4j-core-0.7.2.jar 
-libraryjars /libs/gcm.jar 
-libraryjars /libs/httpclient-4.3.3.jar 
-libraryjars /libs/httpcore-4.3.2.jar 
-libraryjars /libs/httpmime-4.3.3.jar 
-libraryjars /libs/library.jar 
-libraryjars /libs/nineoldandroids-2.4.0.jar 

-keepnames class org.apache.** {*;} 
-keep public class org.apache.** {*;} 
-dontwarn org.apache.commons.** 
-dontwarn org.apache.http.annotation.ThreadSafe 
-dontwarn org.apache.http.annotation.Immutable 
-dontwarn org.apache.http.annotation.NotThreadSafe 
-dontwarn org.apache.http.impl.auth.GGSSchemeBase 
-dontwarn org.apache.http.impl.auth.KerberosScheme 
-dontwarn org.apache.http.impl.auth.NegotiateScheme 
-dontwarn org.apache.http.impl.auth.KerberosScheme 
-dontwarn org.apache.http.impl.auth.SPNegoScheme 
-dontwarn se.emilsjolander.stickylistheaders.StickyListHeadersListView 
-dontwarn android.net.http.AndroidHttpClient 

Nadzieję, że pomaga innym, dzięki!