2012-07-13 14 views
5

güncelledikten sonra Android projeyi aktarırken. Ben olsun: KonsoldaProguard hataları artık başarıyla benim Android projelerin herhangi aktarabilirsiniz ADT 20 güncelledikten sonra ADT 20

Proguard returned with error code 1. See console 

Ben can't find referenced class uyarı ve bazen can't find superclass or interface uyarı ton olsun. Uyarıların sonunda böyle bir şey olsun:

You should check if you need to specify additional program jars. 
Warning: there were 199 unresolved references to classes or interfaces. 
    You may need to specify additional library jars (using '-libraryjars'). 
java.io.IOException: Please correct the above warnings first. 
at proguard.Initializer.execute(Initializer.java:321) 
at proguard.ProGuard.initialize(ProGuard.java:211) 
at proguard.ProGuard.execute(ProGuard.java:86) 
at proguard.ProGuard.main(ProGuard.java:492) 

ben uyarıların farklı sayıda (çok tutarlı değil) almak inşa etmeye çalışırlar her zaman. Ayrıca, dışa aktarmadan önce bir temizlemeyi gerçekleştirdiğimde, dışa aktarma işlemi herhangi bir uyarı üretmeden tamamlanır, ancak sonuçta oluşan APK, genellikle ClassNotFoundException nedeniyle başlatıldığında kilitlenir.

proguard-project.txt, Android Destek Kitaplığı ve ActionBarSherlock için gerekli -keep class kurallarını içerir.

Bu projeyi ADT 20'den önce oluşturma konusunda hiçbir sorunum olmadı. Son sürümümü (hatta yayınladığımda açıkça oluşturulmuş olan) oluşturmayı bile denedim, ancak aynı koruma uyarılarını alıp başarısızlığa uğradım.

Diğer SO sorularının önerdiği gibi -libraryjars ve/veya -dontwarn kurallarını eklemeyi denedim, ancak boşuna. Bazen başarılı bir şekilde oluşturulacak, ancak APK, açılışta kilitlenme oluşturdu.

Herhangi bir öneriniz var mı?

+0

Ben de 4.8 ProGuard için (r20 araçları ile birlikte gelen) ProGuard 4.7 den güncellemeye çalıştık, ama bu bir fark yaratmak için değildi. – ashughes

+0

Sonunda, "proguard-project.txt" 'e r20 Android araçlarında' proguard-android.txt' 'den kaldırılmış olan proguard kurallarını ekledikten sonra gizemli bir APK'yı başarıyla oluşturup çalıştırabildim. Bir yanıt göndermeden önce bunun bir hata olduğunu onaylamak için beklemeniz gerekir: http://code.google.com/p/android/issues/detail?id=35107 – ashughes

cevap

5

AAPT ancak bu arada diğer özniteliği kullanabilir ve işe yarayacaktır.

+1

Apafa bir düzeltme daha yeni çıktı. Platform araçları r14'te. –

+0

Platform araçları r14 görünmeden önce, Tor Norbye ("SDK Manager önbellek hatası") tarafından önerilen şekilde SDK Manager önbelleğimi temizlemeliydim. – ashughes

0

Bildirildi düzgün tüm kaynak kodunu yeniden derlemek değil ADT, Eclipse eklenti son güncelleme ile sorunlar var. Bu durumda ProGuard, program sınıflarınızla ilgili uyarıları basacaktır (kütüphane sınıflarının aksine). Dışa aktarmanın (ve sonuçta oluşan uygulamanın) ProGuard olmadan çalışıp çalışmadığını kontrol etmelisiniz. Karınca yapısının çalışıp çalışmadığını da kontrol etmelisiniz ("karınca serbest"). Bu bir çözüm olabilir.

+0

Eğer proguard'ı devre dışı bırakırsam sorun çıkmaz. Karınca ile doğrudan binaya bakacağım. En son ADT güncellemesiyle ilgili sorunların raporlarını nerede gördünüz? R20 için hiçbir şey bulmada sorun yaşıyorum, sadece sorunum olmayan önceki sürümler. – ashughes

+0

Projeyi bir Ant derlemesi için kuruyorum ve "karınca sürümü" ile oluşturduğumda herhangi bir uyarı veya hata almıyorum, ancak ortaya çıkan APK başlatıldığında kilitleniyor ("Support Class kütüphanesi Fragment'i genişleten bir sınıfta ClassNotFoundException"). Soruda belirttiğim gibi, Android destek kitaplığı ve ActionBarSherlock (http://abs.io/faq.html'nin alt kısmı) için "proguard-project.txt" adresimdeki uygun "-keep class" kurallarına sahibim ve proguardın bu sınıfları daha önce çıkarması ya da şaşırtmasıyla ilgili herhangi bir sorun yaşamadım ... ne eksik olabilirim (ya da araçların ne yapacağı gibi)? – ashughes

4

ADT 20'de, kodunuzun kullandığı özel görünümler için kurallarını tam olarak tutma kurallarını içeren bir proguard dosyası oluşturabilen bir aapt özelliğini (bkz. -G bayrağı) kullanırız.

eski proguard yapılandırma dosyaları tüm görüşlerini tutardım. Uyumluluk kütüphanesi gibi bir kütüphane projesi kullandığınızda, mevcut kodun sadece küçük bir alt kümesini kullanıyor olabilirsiniz; bu, ihtiyacınız olmayan bir çok şey dahil olabilir. Genel tutma kurallarını kaldırarak ve uygulamanıza dayalı yeni bir saklama dosyası ekleyerek, kullanılmayan birçok şey kaldırılabildiğinden .apks'ınız küçülecektir.

Bunun yanlış gidebileceği bir alan, Araçlar 20'ye güncelleştirdiğinizde (böylece yeni küçük proguard-android.txt dosyasına sahip olursanız) ve ADT 18'i kullanmaya devam ederseniz, ADT 20'yi kullandığınızdan emin olun. sadece project.properties ayarınızda belirtilen proguard dosyalarını değil, aynı zamanda aapt -G 'den saklama dosyalarını listeleyen oluşturulan proguard dosyasını da ekleyecektir. Karınca yapısının -G özelliğini de kullanacağına inanıyorum.

(Not - Bu konuda herhangi followups için http://code.google.com/p/android/issues/detail?id=35107 bakınız) sadece

<fragment android:name"..." /> 

ancak

<fragment class="..." /> 

Biz tamir edeceğim işleyecek aapt bir hata vardır

İlgili konular