APK'nın yapısı nasıl işler ve test için res'i güvenli şekilde düzenleme

Kerem Aydın·7 Temmuz 2026·⏱3 dk

APK; AndroidManifest.xml, classes.dex, res/, assets/, lib/ ve META-INF dosyalarından oluşan bir ZIP arşividir. Yalnızca değerleri (metinler, renkler, görseller) değiştirip adları/ID'leri dokunmadan bırakırsanız kaynakları güvenle düzenleyebilirsiniz; herhangi bir değişiklikten sonra APK'yı cihaza kurulum için doğru şekilde derlemeniz ve imzalamanız gerekir.

APK'nın iç yapısı ve res'in rolü

APK = temel öğeleri içeren bir ZIP:

  • AndroidManifest.xml — uygulama meta verileri (package, permissions, activities).
  • classes*.dex — Dalvik/ART için Java/Kotlin bytecode'u.
  • res/ — XML kaynakları: layout/, values/ (strings, colors, dimens), drawable/, mipmap/, menu/, anim/ vb.
  • assets/ — olduğu gibi okunan keyfi dosyalar.
  • lib/ — farklı mimariler için .so dosyaları.
  • META-INF/ — imza ve sertifikalar.

res/ içindeki kaynaklara R.. üzerinden erişilir. Yalnızca içeriği (değerleri) değiştirerek mantığın bozulma riskini en aza indirirsiniz. Bir kaynağın adını değiştirmek veya onu silmek tehlikelidir — kod belirli tanımlayıcıları bekler.

APK'yı ZIP olarak açabilirsiniz, ancak herhangi bir değişiklik yeniden derleme ve imzalama gerektirir — aksi takdirde uygulama kurulmaz veya mağazadan gelen güncellemeleri kaybeder.

Pratik düzenleme senaryoları ve adım adım süreç

Aşağıda, test için güvenli olan yaygın görevler ve işlem sırası yer almaktadır.

  1. Metni/yerelleştirmeyi değiştirme
  • APK'yı apktool ile çıkarın: apktool d app.apk
  • res/values/strings.xml dosyasını düzenleyin (varsa values-ru, values-en de dahil).
  • name özniteliğini ve format yer tutucularını (%1$s, %d) değiştirmeyin.
  • Derleyin: apktool b app -o modified.apk
  • İmzalayın ve hizalayın (bkz. Araçlar bölümü).
  1. Simge/görseli değiştirme
  • Aynı adlara ve uygun boyutlara/yoğunluklara (mdpi/hdpi/xhdpi) sahip görseller hazırlayın.
  • res/drawable*/ veya mipmap*/ içindeki dosyaları değiştirin.
  • Yukarıdaki gibi derleme ve imzalama.
  • Uyumluluğu kontrol etmeden formatı (png ↔ webp) değiştirmeyin.
  1. Renkleri veya temayı değiştirme
  • res/values/colors.xml dosyasını düzenleyin ve styles.xml ile karşılaştırın.
  • layout/*.xml içinde sabit kodlanmış renkleri kontrol edin — bunları da düzenleyebilirsiniz ancak daha risklidir.
  • Çeşitli yoğunluklarda ve Android sürümlerinde test edin.
  1. Küçük layout düzenlemeleri
  • Özellikleri değiştirin, android:id'leri yeniden adlandırmayın ve mantığın bağlı olduğu view'ları silmeyin.
  • Gizleme/gösterme için android:visibility="gone"/"visible" kullanın.

Emin değilseniz metin veya renk değişikliğiyle başlayın. Olası etkileri ortaya çıkarmak için en güvenli yol budur.

Araçlar, derleme ve imzalama (kısa)

  • apktool — kaynakları ve smali'yi çıkarma/derleme.
  • jadx/jd-gui — Java sözde kodunu görüntüleme (mantığı anlamak için).
  • apksigner (Android SDK) veya jarsigner — APK imzalama.
  • zipalign — imzalama öncesi hizalama (önerilir). Süreç:
  1. apktool d app.apk
  2. res/... içinde değişiklik yap
  3. apktool b app -o unsigned.apk
  4. zipalign -v -p 4 unsigned.apk aligned.apk
  5. apksigner sign --ks mykeystore.jks --out signed.apk aligned.apk

İmzalar ve çakışmalar hakkında ipuçları:

  • Orijinal keystore'unuz yoksa yeni imza, mağazadan otomatik güncellemeleri engeller. Test yapıları için ayrı bir applicationId kullanın.
  • Modern uygulamalar App Bundle / split APK olabilir — tek bir APK'yı düzenlemek yeterli olmayabilir. Karmaşık durumlar için kaynak kodlarla çalışmak veya bundle araçlarını kullanmak daha iyidir.

Sık yapılan hatalar

  • Kodun beklediği bir kaynağı yeniden adlandırma veya silme — çökmeye neden olur.
  • Dizelerdeki yer tutucuları değiştirme (%1$s → %s) — RuntimeException tetikler.
  • Bazı yoğunluklardaki simgeleri değiştirip diğerlerinde değiştirmeme — farklı cihazlarda hatalı görünüm.
  • zipalign olmadan veya yanlış anahtarla imzalama — kurulum/güncelleme sorunları.

SSS

  • Kaynak kodları olmadan APK düzenlenebilir mi? Evet — apktool/jadx aracılığıyla, ancak daha risklidir ve yeniden derleme ile imzalama gerektirir.
  • Değiştirilmiş APK Play Store üzerinden güncellenir mi? Hayır, imza farklıysa; test için ayrı bir packageName kullanın.
  • .so kütüphaneleri değiştirilebilir mi? Evet, ancak genellikle ABI ve uyumluluk kontrolü ile yeniden derleme gerekir — bu yüksek karmaşıklıktır.

Kopyalar kullanın, değişiklikleri belgeleyin ve birkaç cihazda test edin — bu, riskleri en aza indirir ve çalışan bir test ortamını korur.