2013-07-26 19 views
16

Akıllı bir ProGuard yapılandırması, belirli bir sınıfın özel yöntemlerini ve sabitlerini gizlemek için ne olurdu?ProGuard ile, sadece bir sınıfı nasıl gizlerim?

Sadece bunu açıkça gizlemek istiyorum, çünkü .jar'ı yanlışlıkla açtığımızda açıkça görülmemesi gereken bir algoritma içerir. Ben bir ProGuard uzmanıyım. AFAIU, "tut" u kullanmalısın, ama "itaatkarlık" mantığının mantığı yok, değil mi? Öyleyse sınıfımı "her şeyi sakla" yapılandırmasından nasıl çıkaralım? Not: Şu an için diğer sınıfları şaşırtmak istemiyorum, çünkü müşterinin anlamlı yığınlar görmesine izin vermek istiyorum.

cevap

22

Tek bir sınıfı şaşırtmak fazla bir etkiye sahip olmayacaktır: sınıf adını ve birkaç alan adını ve yöntem adını değiştirebilir ve bazı kodları en iyi duruma getirebilir. Obfüsasyon, küçük bilgi parçalarını saklamak için daha az etkili olma eğilimindedir. Ne kadar fazla uygulama koduyla karşılaşırsanız, anlaşılması zorlaşır.

söyleniyor

, şunları belirtebilirsiniz:

-keep class !com.acme.Algorithm { *; } 

O com.acme.Algorithm dışındaki bütün sınıflar/alanları/yöntemleri tutar.

+0

Sorunum: Hala satırların üstüne koyduğum diğer sınıfları gizlemeye çalışıyor. Bu nasıl olabilir? – Jacky

+0

Aynı zamanda şu sorunla da karşılaşıyorum @Jacky Sorunu çözmek için herhangi bir işaretçi var –