Android projesinde JAR/Java dosyalarını açma, ekleme ve kullanma

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

JAR, bytecode (.class) içeren bir arşivdir; .java ise kaynak kodlardır. Android'de JAR saf mantık için kullanılırken, kaynaklar veya manifest gerektiğinde AAR tercih edilir. Aşağıda görüntüleme, ekleme ve kullanım önerilerine dair kısa talimatlar yer almaktadır.

Android bağlamında .java, .class ve .jar nedir

.java — kaynak kod (metin dosyası). Derleme sırasında .class (JVM bytecode) elde edersiniz, ardından Gradle/Android eklentisi bunları ART/Dalvik için .dex'e dönüştürür.
.jar (Java ARchive) — .class, META-INF ve isteğe bağlı kaynakları içeren ZIP arşividir. Android'de JAR yalnızca kod içerir (res/ ve AndroidManifest.xml olmadan); bu nedenle UI ve Android bağımlılıkları olmayan kütüphaneler için uygundur. AAR — Android kütüphanesi formatıdır: kod + kaynaklar + manifest — layout, drawable veya otomatik manifest düzenlemeleri gerekiyorsa bunu kullanın.

Kısaca: .java = kaynak kod, .class = bytecode, .jar = paketlenmiş bytecode (kütüphane), AAR = kaynaklı Android kütüphanesi.

.java ve .jar içeriklerini açma ve görüntüleme

  • .java: Android Studio, IntelliJ, VS Code veya herhangi bir metin düzenleyicide açın — bu normal bir metindir.
  • .jar arşiv olarak: uzantısını .zip olarak değiştirin veya 7-Zip/WinRAR/arşivleme yazılımıyla açın — paket klasörlerini ve .class dosyalarını göreceksiniz.
  • .class'tan kaynak kodları görüntüleme (decompiler): Android Studio/IntelliJ, JAR'dan bir sınıfa gidildiğinde decompile edilmiş kodu gösterir; ayrıca JD-GUI, CFR, FernFlower kullanılabilir. .dex için JADX kullanın.

Decompile işlemi yorumları geri getirmez ve bazen yerel isimleri kaybeder — tam kaynak kod beklemeyin.

Android projesine JAR ekleme (pratik yaklaşım)

  1. Yerel JAR:
  • your-lib.jar dosyasını app/libs/ dizinine koyun.
  • Modül build.gradle dosyasına (Gradle Kotlin DSL: build.gradle.kts benzer şekilde) şunu ekleyin: dependencies { implementation files("libs/your-lib.jar") }
  • Veya klasördeki tüm JAR'ları ekleyin: implementation fileTree(dir: "libs", include: ["*.jar"])
  1. Depodan JAR:
  • Artefaktı ekleyin: dependencies { implementation "com.example:library:1.2.3" } Gradle JAR'ı otomatik olarak indirip derlemeye ekler. Bu, güncellemeler ve CI için daha kullanışlıdır.
  1. Bir grup .java dosyanız varsa:
  • Bunları ilgili modülün src/main/java dizinine, paket yapısını koruyarak kopyalayın — Gradle bunları otomatik olarak derler. Kod yeniden kullanılacaksa, ayrı bir Java/Kotlin modülüne çıkarın ve JAR/AAR olarak yayınlayın.

Çapraz platform mantığı için Java/Kotlin modülü oluşturun → JAR olarak derleyin. UI/kaynaklar için — Android Library → AAR.

Sık karşılaşılan hatalar

  • Duplicate class ... — birden fazla JAR/bağımlılıkta sınıfların yinelenmesi durumunda ortaya çıkar. Çözüm: bir bağımlılığı hariç tutun veya sürümleri birleştirin (exclude).
  • Kullanılamayan API'lerin kullanılması (örneğin eski toolchain'lerde java.time) — çözüm: desugaring'i etkinleştirin, toolchain'i yükseltin veya uyumlu bir kütüphane seçin.
  • JAR Android sınıflarına bağımlılık içeriyorsa — Android dışındaki ortamlarda (örneğin JVM testlerinde) ClassNotFoundException'a yol açabilir. Saf mantığı Java modülünde tutun.

SSS

  • Yerel kullanım için .java dosyalarını JAR'a paketlemek gerekir mi?
    Hayır, kodu kontrol ediyorsanız kaynakları doğrudan modüle ekleyin. JAR, dağıtım ve projeler arasında paylaşım için kullanışlıdır.

  • Kesinlikle AAR mı, JAR mı gerekli?
    Kütüphane kaynaklar (layout'lar, drawable'lar, values), özel bileşenler içeriyorsa veya AndroidManifest'te değişiklik yapması gerekiyorsa AAR kullanın.

  • JAR'daki sınıfları hızlıca nasıl görürüm?
    JAR'ı bir arşivleme yazılımıyla açın veya terminalde şu komutu çalıştırın: jar tf your-lib.jar — yolların ve sınıfların listesini alırsınız.

  • JAR'ı Gradle/Android Studio'ya yeniden derleme olmadan ekleyebilir miyim?
    Evet — Gradle JAR'daki .class dosyalarını ekler ve bunlar derleme sırasında otomatik olarak .dex'e dahil edilir.

Kütüphaneleri, platformdan bağımsız mantık (JAR) ile Android'e bağımlı kısım (AAR) arasındaki sınırın net olacak şekilde hazırlayın — bu, test etmeyi, bakımı ve dağıtımı kolaylaştırır.