Ben yapıya sahip varsayalım tutmak? Yani aynı zamanda dahili olarak B
, C
ve Clazz
tarafından başvurulan tüm sınıflar?Proguard, tüm başvurulan sınıflar
cevap
Sadece proguard ile bunu yapabileceğinizi sanmıyorum ve gerçekten bunun için mvn \ gradle \ sbt \ ile basit bir çözüm (kullanabileceğiniz eklenti) olduğundan şüphe duyuyorum.
Yapmanız sırasında kod veya kabuk komutlarını çalıştırmakta yarar vardır. Bazı yapı taşlarını tavsiye edebilirim, ancak bunları bir araya getirmeniz gerçekten projenizi nasıl oluşturduğunuza bağlı olduğundan onlara nasıl yapıştırılacağına dair temel önerilerde bulunabilirim birlikte.
genel bir fikir: ilgi derlenmiş .class
dosyalarından (geçişli dahil)
(1) Kullanım jdeps (parçası ve jdk ile dağıtılan) getirilemedi bağımlılıkları. (-keep
için sınıflarının listesi)
jdeps -v -R -e "root_package.*" some.class
(2) kapmak jdeps
çıkışı ve proguard yapılandırma haline dönüştürmek: (root_package
ile sınırlıdır) some.class
yinelenen bağımlılıkları çıkışı Senin durumunda
gibi bir şey olmalı .
(3) (2) 'de oluşturduğunuz ana proguard yapılandırma dosyasında include yapılandırma dosyasında.
Adım (2) çoğu bacağın kullanılmasını gerektirir ve farklı şekilde yaklaşılabilir.
Benim önerim, yapı sisteminizin jdeps
'u çalıştırması ve çıktı dönüşümü yapması gereken komut dosyalarını kullanabilmesidir. Örneğin, Maven'in plugin that allows groovy scripts to be executed numaralı ürünü vardır. ...
grep -Po classname_regex
yalnızca sınıf isimleri tutmak için: gibi bir şey
boru
jdeps
çıktı: Eğer kabuk komut dosyalarını çalıştıran daha rahat değilsenizaşağıdakileri yapabilirsiniz saklamak istiyorsunuz (
classname_regex
oluşturmak için sıfır uzunluktaki onaylamaları kullanabilirsiniz).gibi bir şeygrep
aitboru çıkışı:
awk '{print "-keep class " $0}
... proguard yapılandırma almak ve dosyaya çıktı kaydedin.
Mükemmel değil ama jdeps ile çalışabiliyordum (ki daha önce bilmediğim varlık). Teşekkürler –
- 1. ProGuard Başvurulan Kitaplıkları Bulamıyor
- 2. Sadece proguard
- 3. Android Proguard
- 4. ProGuard
- 5. Proguard sınıflar, üyeler ve parametreler için özel adlandırma gizleme
- 6. Proguard
- 7. Android Proguard tüm günlük mesajları kaldırmıyor
- 8. ProGuard
- 9. Proguard
- 10. ProGuard
- 11. PROGUARD
- 12. Kotlin, Proguard ve lambda'lar
- 13. Swift'deki protokole uygun tüm sınıflar nasıl listelenir?
- 14. Proguard artık çalışmıyor Retrofit
- 15. Android imzalı APK üretimi: Başvurulan sınıf/yöntem için Proguard istisnası bulunamadı
- 16. Bir şube ve başvurulan tüm nesneler nasıl silinir
- 17. Anlamı *; } ProGuard içinde
- 18. ClassLookupException: proguard
- 19. Android ProGuard
- 20. Proguard (Android projesi) tarafından gizli .jar'in dışlanmasını nasıl hariç tutabilirim?
- 21. Proguard, tüm enumları int için dönüştürür veya bu
- 22. Tüm Android ProGuard özelliklerini gizleme dışında nasıl kapatırsınız?
- 23. Sınıflar ve alt sınıflar için yazdırma
- 24. Retrofit2 proguard param kaldırmak
- 25. Neden Yüklediğimde Tüm Etkinlikler/Sınıflar Uygulama Listesinde Gösteriliyor?
- 26. Bir sınıfın altındaki veya sınıfındaki tüm sınıflar nasıl kontrol edilir?
- 27. Bir Java programı tarafından hangi sınıflar kullanılır?
- 28. Tanımsız sınıflar
- 29. çoklu sınıflar?
- 30. Proguard kullanılmayan kodu kaldırır (Android'de)
Neden böyle bir "nifty trick" 'e ihtiyaç duyduğunuzu açıklayabilir misiniz? Kullanım durumunuz nedir? – larsgrefer
@larsgrefer Elbette, proguard'da tutmam gereken sınıfın doğru koruma kuralına sahip olduğunu doğrulayan bir araç oluşturuyorum. A sınıfı için tek bir kuralın varlığını doğrulamak, başvurulan tüm sınıfları el ile tanımlamaktan ve bunların tümü için kural varlığını doğrulamaktan daha kolay olacaktır. –
Bu bir android soru mu? –