En iyi uygulamalardan yararlanma

Saklama kurallarıyla çalışırken, uygulamanızın davranışını korurken avantajlardan yararlanabilmek için doğru düzeyde ayrıntıya ulaşmanız önemlidir. İyi kalıplar ve saklama kurallarında kaçınılması gerekenler hakkında bilgi edinmek için aşağıdaki bölümlere bakın.

Saklama kurallarındaki iyi kalıplar

İyi tanımlanmış saklama kuralları mümkün olduğunca ayrıntılıdır:

  • Sınıf belirtimi için aşağıdaki örneklerde gösterildiği gibi mümkünse her zaman belirli bir sınıf, temel sınıf veya açıklama eklenmiş sınıf belirtin:

    -keepclassmembers class com.example.MyClass {
      void someSpecificMethod();
    }
    
    -keepclassmembers ** extends com.example.MyBaseClass {
      void someSpecificMethod();
    }
    
    -keepclassmembers @com.example.MyAnnotation class ** {
      void someSpecificMethod();
    }
    
  • Mümkün olduğunda üye spesifikasyonu beyan edilmeli ve yalnızca uygulamanın çalışması için korunması gereken sınıf bölümlerine referans verilmelidir. Kesinlikle gerekli olmadığı sürece, isteğe bağlı üye kapsamını { *; } olarak tanımlayarak bir kuralı sınıfın tamamına uygulamamanız önerilir.

    -keepclassmembers com.example.MyClass {
      void someSpecificMethod();
      void @com.example.MyAnnotation *;
    }
    

Bu kurallara uyamıyorsanız korunması gereken kodu geçici olarak özel bir pakette izole edebilir ve koruma kuralınızı pakete uygulayabilirsiniz. Ancak bu, uzun vadeli bir çözüm değildir. Daha fazla bilgi edinmek için Optimizasyonları kademeli olarak uygulama başlıklı makaleyi inceleyin. Bir paket için saklama kuralı kullanmak istiyorsanız aşağıdaki örnekte gösterildiği gibi bir saklama kuralı tanımlayın:

-keepclassmembers class com.example.pkg.** { *; }

Yapılmaması gerekenler

Saklama kuralı söz diziminde birçok seçenek vardır ancak ölçülebilir sürdürülebilir performans avantajları için aşağıdakileri kullanmamanızı öneririz:

  • Tutma kurallarında ters çevirme operatörünü ! kullanmaktan kaçının. Aksi takdirde, uygulamanızdaki neredeyse her sınıfa istemeden bir kural uygulayabilirsiniz.
  • -keep class com.example.pkg.** { *; } uzun vadeli gibi paket genelinde saklama kuralları kullanmayın. R8 yapılandırılırken sorunları geçici olarak çözmek için kullanılabilir. Daha fazla bilgi için Optimizasyon kapsamını sınırlama başlıklı makaleyi inceleyin. Genel olarak, joker karakterleri kullanırken dikkatli olun. Yalnızca ihtiyacınız olan kodu kullandığınızdan emin olun.

Bu kurallara uyamıyorsanız çok fazla açık uçlu yansıtma kullanıyor olabilirsiniz. Bu durumda, yansıtmadan veya yansıtma kullanan kitaplıktan kaçınmanız gerekir (Gson örnek olay incelemesine bakın).