Çoğu Xcode proje türü, geliştiricilerin mevcut dosya türlerinin oluşturulma şeklini değiştirmelerine ve yeni dosya türlerinin nasıl oluşturulacağını tanımlamalarına olanak tanıyan derleme kurallarını destekler. J2ObjC komut dosyaları özellikle Xcode gibi derleme sistemlerine bağlanmak için tasarlanmıştır.
j2objc-sample-reversi projesi, basit bir iOS oyununa Java kaynaklarının nasıl ekleneceğini gösteren bir örnektir.
Minimum derleme için derleme ayarlarının güncellenmesi ve ardından bir J2ObjC derleme kuralı eklenmesi gerekir.
Derleme Ayarlarını Güncelleme
- Proje Düzenleyici'yi açmak için Proje Gezgini'nde projeyi tıklayın ve uygulama hedefinin seçildiğinden emin olun.
- Derleme Ayarları sekmesini tıklayın.
-ljre_emul
öğesini Diğer Bağlayıcı İşaretleri'ne ekleyerek JRE emülasyon kitaplığını (jre_emul
) bağlayın. Şöyle görünecektir:- + işaretini tıklayıp Kullanıcı Tanımlı Ayar Ekle'yi seçin.
- Ayara
J2OBJC_HOME
adını verin ve değerini J2ObjC'nin konumuna ayarlayın. Bu, sürüm zip dosyasının açılmasından kaynaklanan klasör veya kaynaktan derlediğiniz ve kök klasörünüzj2objc
isej2objc/dist
klasörü olmalıdır. - Arama Yolları altında aşağıdakileri değiştirin:
- Çerçeve Arama Yolları şunu ekler:
${J2OBJC_HOME}/frameworks
- Kitaplık Arama Yolları,
${J2OBJC_HOME}/lib
değerini ekler (her derleme yapılandırması için). - Kullanıcı Başlığı Arama Yolları
${J2OBJC_HOME}/include
değerini ekler.
- Çerçeve Arama Yolları şunu ekler:
J2OBJC_HOME
araması yaparak ayarlarınızı onaylayın. Şuna benzer bir sonuç görürsünüz:
J2ObjC Derleme Kuralı Ekleme
Java kaynak dosyalarınızın kök dizinini belirleyin. Bu dizine
$source-root
adını verin. Kök dizin, kaynak dosyalarınızın üst paketini içeren dizindir.Git kullanıyorsanız ve Java dosyalarınızı başka bir git projesinden çekmek isterseniz Java kaynaklarınızla projeyi izleyen bir alt modül ekleyebilirsiniz. Örneğin, Xcode projenizin (xcodeproj)
~/dev/MyProject
bölgesinde olduğunu ve Objective-C kaynağınızla birlikte başka birMyProject
dizininizin olduğunu varsayalım.~/dev/MyProject/MyProject
dizininde, Objective-C kaynaklarınızın hemen yanında Java projenizin kaynağını içeren bir~/dev/MyProject/MyProject/javaproject
dizini oluşturmak içingit submodule add git@github.com:user/javaproject
komutunu çalıştırın. Ardından bu klasörü, Xcode'un dosya sisteminizi yansıtanMyProject
grubu altındaki Xcode projenize sürükleyebilirsiniz.${PROJECT_DIR}/MyProject/javaproject/src
,$source-root
.Java kaynaklarınız Xcode projenizdeki bir grup veya dizinde bulunuyorsa
$source-root
,${PROJECT_DIR}/__group_or_directory_name__
şeklindedir.Emin değilseniz ilgili grubu veya dizini sağ tıklayıp Finder'da Göster'i seçerek dizini görüntüleyin ve mutlak yolu kullanın.
Örneğin,
~/myproject/src
adlı bir dizindefoo.bar
Java paketiniz varsa bu paketin Java dosyaları~/myproject/src/foo/bar/**.java
konumunda olmalıdır. Bu, projenizin kök dizininin~/myproject/src
olduğu anlamına gelir.Java kaynak dosyaları Xcode projesinin dışındaysa Terminal penceresinde listelenirken kullanılan tam yolu girin.
Proje Düzenleyici'yi açmak için Proje Gezgini'nde projeyi tıklayın ve uygulama hedefinin seçildiğinden emin olun.
Derleme Kuralları sekmesini tıklayın.
Derleme kuralı eklemek için + işaretini tıklayın.
Yeni kuralın İşleme seçeneği için "Java kaynak dosyaları"nı seçin. Kullanıyor seçeneği "Özel komut dosyası:" olmalıdır.
Özel komut dosyası metin kutusuna aşağıdakileri ekleyin (
$source-root
yerine şunu eklemeyi unutmayın):if [ ! -f "${J2OBJC_HOME}/j2objc" ]; then echo "J2OBJC_HOME is not correctly defined, currently set to '${J2OBJC_HOME}'"; exit 1; fi; "${J2OBJC_HOME}/j2objc" -d ${DERIVED_FILE_DIR} -sourcepath "$source-root" --no-package-directories -g ${INPUT_FILE_PATH};
Çıktı Dosyaları panelinde, + düğmesini tıklayın ve şunu ekleyin:
${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.h
.+ düğmesini tekrar tıklayın ve
${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.m
hesabını ekleyin.
İşlemi bitirdiğinizde, ayarlar paneli aşağıdaki gibi görünmelidir (not: 10.2'den itibaren Xcode, geriye dönük uyumluluk için DERIVED_FILES_DIR değişkenini yine DERIVED_FILE_DIR değişkeniyle aynı şekilde tanımlamaktadır):
Ek Kitaplıkları Bağlama
Bağlantı oluşturma adımı (Xcode'un "Link Binary with Libraries" derleme aşaması), uygulamanızın çevrilmiş Java sınıflarını nasıl kullandığına bağlı olarak değişen J2ObjC'ye özgü işaretler gerektirir. Tam liste için Gerekli Bağlantı Ayarları'na bakın. Bağlamanız gerekebilecek ek kitaplıklara birkaç örnek aşağıda verilmiştir:
java.util.zip
paketini kullanmak için-ljre_zip
öğesini Diğer Bağlayıcı İşaretleri'ne ekleyerek libz.dylib kitaplığını bağlamanız gerekir.- Güvenli karma oluşturma işlemi gerçekleştirmek için projenize Güvenlik Çerçevesi'ni eklemeniz gerekir.
Derleme Sorunlarında Hata Ayıklama
Xcode bu adımları uygulayarak bir derleme hatası bildirirse Sorun Gezgini'ni açın ve ayrıntıları incelemek için bir hatayı tıklayın. Bu komut, hangi komut satırı ifadesinin yürütüldüğüne dair ayrıntıları gösterir. Sık karşılaşılan birkaç hata aşağıda açıklanmıştır:
Sınıf çözümlenemiyor - Büyük olasılıkla, kullandığınız
$source-path
yanlıştı. Yürütülen komutta-sourcepath
seçeneğini bulun ve bu seçeneğin, Java kaynak dosyalarınızın kök dizinini işaret ettiğinden emin olun."JreEmulation.h" dosyası bulunamadı - Büyük olasılıkla, sorunun bozuk Kullanıcı Üstbilgisi Arama Yolları değeri vardır. Derleme komutunda yol ile
-I
seçeneğini arayın. Doğru görünüyorsa yolu kopyalayın (-I'yi değil) ve bir terminal penceresinde yazım hatası olmadığını doğrulamak için bu yollals
komutunu çalıştırın."_IOSClass_FromClass", referans kaynağı: veya "_OBJCCLASS$_Java" - Kitaplık Arama Yolları yanlıştır veya Diğer Bağlayıcı İşaretleri'ni
-ljre_emul
değerine ayarlayarak JRE emülasyon kitaplığını bağlamayı unuttunuz. Ek kitaplıklar bağlamanız da gerekebilir.Tanımlanmamış simgeler: _iconv* - Gerekli iconv kitaplığında bağlantı.
Hâlâ sorun yaşıyorsanız j2objc-talk grubuna sorun.