Java Kaynakları iOS Kaynakları ile nasıl eşleştirilir?

Java Kaynakları Nedir?

Java kaynakları, Java uygulamaları ve kitaplıklarıyla paketlenen veri dosyalarıdır. Bu kaynaklar, Class.getResource(String name) çalışma zamanında yüklenir (java.net.URL veya Class.getResourceAsStream(String name) döndürerek java.io.InputStream döndürür). getResourceAsStream() yöntemi, normalde bir kaynağın kullanılabilir olması beklendiğinde kullanılır. Çünkü bir kaynak, kullanılabilir olmaması durumunda bir IOException gönderir. getResource() yöntemi, kaynak mevcut değilse null değerini döndürür. Bu nedenle, isteğe bağlı kaynakları test etmek faydalı olur.

Kaynak Adları ve Yolları

J2ObjC, uygulamanın ana paketine ([NSBundle mainBundle]) bakarak kaynakları bulur. Bunun için kaynağın göreli veya mutlak yolunu kullanır:

Göreli Yollar

Kaynak yollarının belirtilmesi için tercih edilen yöntem, göreli yolların kullanılmasıdır. Göreli yollar, eğik çizgiyle ("/") başlamaz. Göreli yolu olan bir kaynak okunurken sınıfın paket adı değiştirilir ve paket adındaki noktalar (".") öne eğik çizgilerle ("/") değiştirilir, ardından Class.getResource(String name) veya Class.getResourceAsStream(String name) yöntem çağrısında belirtilen göreli yol paket yoluna eklenir.

Örneğin, bir uygulamanın foo.bar.Mumble sınıfı varsa bu paketteki sınıflara göre tüm kaynakların temel yolu /foo/bar olur. Mumble.class.getResource("oops/error.jpg") çağrıldığında, paketin yoluna oops/error.jpg eklenir. Böylece tam kaynak yolu /foo/bar/oops/error.jpg olur.

Mutlak Yollar

Mutlak yol kullanılarak da kaynak adına öne eğik çizgiyle ("/") başlanarak kaynağa da erişilebilir. Paket adları dikkate alınmaz. Bu nedenle J2ObjC, uygulamanın ana paketindeki mutlak yolları, uygulamanın Java kaynaklarındaki Class.getResource(String name) veya Class.getResourceAsStream(String name) referanslarında tam olarak belirtildiği şekilde kullanarak bulur. Yukarıdaki örnekte Mumble.class.getResource("/oops/error.jpg"), foo.bar paket adı yok sayıldığından /oops/error.jpg tam kaynak yoluna sahiptir.

iOS Uygulamasına Kaynak Ekleme

Xcode'da bir iOS uygulamasına kaynak dosyalar eklemek için derleme hedefinin Derleme Aşamaları sekmesini açın. Ardından:

  • + simgesini tıklayın (Genel sekmesinin altında) ve Yeni Dosyaları Kopyala Aşaması'nı seçin.
  • Hedef olarak "Kaynaklar"ı seçin (Java Kaynakları'nı değil).
  • Kaynaklar için dizini belirtin.
  • + simgesini seçin ve dosyaları listesine ekleyin.

Göreli veya mutlak kaynak yollarının kullanılmasından bağımsız olarak, her kaynak dizininde bir Xcode derlemesinde ayrı bir Dosyaları Kopyalama derleme aşaması gerekir.

Örnek

JreEmulation projesi, kitaplığın birim testlerini çalıştıran "JRE JUnit Tests" uygulamasına sahiptir. Kaynaklar tarafından kullanılan her göreli yol için bir tane olmak üzere birkaç Dosya Kopyalama aşamasını görmek için söz konusu hedefin Derleme Aşamalarını seçin. Burada ClassTest.java, aynı kaynağı önce mutlak bir yol, ardından göreli bir yol kullanarak yükler. Testin kaynağı, bu Dosyaları Kopyalama oluşturma aşaması kullanılarak dahil edilir:

Xcode kaynakları