Çok sık görülen app klonlama, tersine mühendislik ile uygulamaların kaynak kodlarına ulaşılabiliyor veya kötü niyetli işlemler yapılabiliyor.
Kod güvenirliğini ve optimizasyonu sağlayabilmek adına küçük ve orta büyüklükteki projeler için ProGuard kullanacağız.
ProGuard; (apk, aab) dosya boyutunu küçültme, kodları optimize ve karmaşık hale getirerek tersine mühendisliği zor bir hale getirmeye yarayan bir araçtır.
Proguard aktif değil iken tersine mühendislik sonucu görünen kod;

Proguard aktif iken tersine mühendislik sonucu görünen kod;

ProGuard Nasıl Aktif Edilir?
- Gradle Scripts > build.gradle (Module: *****.app) dosyasını açın.
Default olarak sizlerde release kısmın olacaktır debug kısmı olmayacaktır.
Debug kısmını eklememizin sebebi uygulamanızı Android Studio üzerinden test yaptığınızda hızlı olabilmesi için yani ProGuard işlemini yapmaması için ekledik. Çünkü ProGuard aracını aktif edersek her build sonucunda sıkıştırma, gizleme vb. işlemlerini yaptığı için biraz bekletecektir. Biz bunu sadece apk veya aab çıktısı aldığımızda yapmasını istediğimiz için release ve debug kısmı olarak ikiye ayırdık. - Aşağıdaki görselde gördüğünüz gibi debug ve release olarak düzenlemeleri yapın.

buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
MinifyEnabled özelliğini true yaptık yani aktif ettik bittimi ? Hayır tabii ki.
Şuanda MinifyEnabled özelliğini aktif ederek kodların sıkıştırılmasını, optimizasyonunu ve kodların karmaşıklaştırarak karartmasını sağladık.
Kaynak kodlarını küçültmek için yani kullanılmayan (resimler, xml dosyaları vb.) kaldırarak, kendini tekrar eden yani aynı kaynakları birleştirerek uygulama boyutunu küçültmeye yarayan kodumuz; shrinkResources
Peki Bunu Nasıl Aktif Edeceğiz?
- Gradle Scripts > build.gradle (Module: *****.app) dosyasını açın.
- Görselde gördüğünüz gibi değişiklikleri yapın.

buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { minifyEnabled false shrinkResources false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
Uygulamanın boyutu küçülttük, kodları sıkıştırdık, optimizasyonunu sağladık, kodları karmaşıklaştırarak karatma işlemini de yaptık.
Karatma işlemi bazen uygulamada sorunlar çıkarabiliyor bu yüzden bunu sadece belirli dosyalar üzerine veya ekstra eklediğiniz kütüphaneler üzerine veya o dosyaların hariç tüm dosyalara veya hiç bir dosyaya yaptıramama gibi seçeneğimiz var.
- Gradle Scripts > proguard-rules.pro dosyasını açın.
- Yapmak istediğiniz özellikleri buraya ekleyin.
proguard-rules.pro dosyasına -dontshrink eklemeniz yeterlidir.
Eğer kodlarınızın optimize edilmesini istemiyorsanız;
proguard-rules.pro dosyasına -dontoptimize eklemeniz yeterlidir.

Eğer sadece belirli java dosyalarında optimizasyon, sıkıştırma ve karmaşıklaştırma işlemini yaptırmak isterseniz görseldeki gibi yapabilirsiniz.
Örneğin ben MainActivity'de yapmasını istedim.

Eğer bazı kütüphanelerde sorunlar yaşıyorsanız o kütüphaneyi sıkıştırma vb. işlemlerden hariç tutabilirsiniz.
Örneğin; com.google.ads kütüphanesini hariç tuttum.

Daha fazlasına buradan ulaşabilirsiniz.