Çoğu Xcode proje türü, geliştiricilerin değişiklik yapmasına olanak tanıyan derleme kurallarını destekler mevcut dosya türlerinin nasıl oluşturulduğunu ve yeni dosya türlerinin nasıl oluşturulduğunu tanımlayabilirsiniz. J2ObjC komut dosyaları, kasıtlı olarak Xcode gibi derleme sistemlerine bağlanmak üzere tasarlanmıştır.
j2objc-sample-reversi projesi basit bir iOS oyununa Java kaynakları eklemeyi gösteren bir örnek.
Minimal bir derleme için derleme ayarlarının güncellenmesi ve bir J2ObjC derleme kuralı eklenmesi gerekir.
Derleme Ayarlarını Güncelleme
- Project Navigator'da projeyi tıklayarak Project Editor'ı açın ve uygulama hedefi seçildi.
- Build Settings (Derleme Ayarları) sekmesini tıklayın.
- Diğer Bağlayıcı İşaretleri'ne
-ljre_emulekleyerek JRE emülasyon kitaplığını (jre_emul) bağlayın. Aşağıdaki gibi görünecektir:
. - + işaretini tıklayıp Kullanıcı Tanımlı Ayar Ekle'yi seçin.
- Ayara
J2OBJC_HOMEadını verin ve değerini J2ObjC konumuna ayarlayın. Bu release zip dosyasının açılmasıyla oluşturulan klasör olabilir. Kaynaktan derlediyseniz ve kök dosyanızj2objcisej2objc/distklasörü. - Arama Yolları altında şu değişiklikleri yapın:
- Çerçeve Çalışması Arama Yolları,
${J2OBJC_HOME}/frameworksekler - Kitaplık Arama Yolları, her derleme yapılandırması için
${J2OBJC_HOME}/libdeğerini ekler. - Kullanıcı Üstbilgisi Arama Yolları
${J2OBJC_HOME}/includeekler.
- Çerçeve Çalışması Arama Yolları,
J2OBJC_HOMEaraması yaparak ayarlarınızı onaylayın. Şuna benzer bir kod görürsünüz:
.
J2ObjC Derleme Kuralı Ekleme
Java kaynak dosyalarınızın kök dizinini belirleyin. Bu dizine
$source-rootKök dizin, paketinin tamamını ekleyin.Git kullanıyorsanız ve Java dosyalarınızı başka bir git projesinden almak isterseniz, projeyi Java ile izleyen bir alt modül ekleyin kaynaklar. Örneğin, Xcode projenizin (xcodeproj)
~/dev/MyProjectiçinde olduğunu, ardından muhtemelen Objective-C kaynağınızla başka birMyProjectdizinine sahip olursunuz.~/dev/MyProject/MyProjectdizini çalıştırmagit submodule add git@github.com:user/javaproject- Java projeniz için kaynakla bir~/dev/MyProject/MyProject/javaprojectdizini oluşturun birlikte kullanabilirsiniz. Daha sonra bu klasörü Xcode projenize sürükleyebilirsiniz (Xcode, dosya sisteminizi yansıtan Xcode'un bulunduğuMyProjectgrubuna aittir).${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__.Şüpheye düşerseniz söz konusu grubu veya dizini sağ tıklayın ve Finder'da Göster'i seçerek dizini oluşturun ve mutlak yolu kullanın.
Örneğin,
~/myproject/srcadlı dizindefoo.barJava paketiniz varsa bu paketin Java dosyalarının~/myproject/src/foo/bar/**.javaiçinde olması gerekir. Yani~/myproject/src, projenizin kök dizinidir.Java kaynak dosyaları Xcode projesinin dışındaysa, bir Terminal penceresinde listelemesini sağlar.
Project Navigator'da projeyi tıklayarak Project Editor'ı açın ve uygulama hedefi seçildi.
Build Rules (Kural Oluştur) sekmesini tıklayın.
Derleme kuralı eklemek için + simgesini tıklayın.
Yeni kuralın Process (İşlem) seçeneği için "Java source files"ı (Java kaynak dosyaları) seçin. Kullanılıyor seçeneği "Özel komut dosyası:" olmalıdır.
Özel komut dosyası metin kutusuna şunu ekleyin (
$source-rootdeğerinin yerine koymayı 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öğesini ekleyin.
İşiniz bittiğinde, ayarlar paneli şu şekilde görünmelidir (not: 10.2 itibarıyla Xcode hâlâ DERIVED_FILES_DIR değişkeni, geriye dönük uyumluluk için DERIVED_FILE_DIR ile aynıdır):

Ek Kitaplıkları Bağlama
Bağlantı derleme adımı (Xcode'un "İkili Program ile Kitaplıkları Bağla" derleme aşaması) J2ObjC'ye özel işaretler. Bunlar, uygulamanızın çevrilmiş Java sınıflarını nasıl kullandığına bağlı olarak değişir. Tam liste için Gerekli Bağlantı Ayarları'na bakın. Birkaç örneği Hangi ek kitaplıkların bağlanması gerektiğini gösteren örnekler:
java.util.zippaketini kullanmak için şunu ekleyerek libz.dylib kitaplığını bağlamanız gerekir: Diğer Bağlayıcı İşaretlerinize-ljre_zipekleyin.- 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, hangi komut satırının daha ayrıntılı bir şekilde ifadesi yürütüldü. Aşağıda sık karşılaşılan birkaç hata verilmiştir:
Sınıf çözümlenemiyor - Büyük olasılıkla, kullandığınız
$source-pathyanlıştı. Yürütülen komutta-sourcepathseçeneğini bulun ve Java kaynak dosyalarınızın kök dizinidir."JreEmulation.h" dosya bulunamadı - Büyük olasılıkla sorun kötü bir Kullanıcı Üstbilgisi Araması Paths değerine ayarlanır. Derleme komutunda yolu içeren
-Iseçeneğini arayın; sizin için uygun görünüyorsa yolu (-I değil) kopyalayın ve bir terminal penceresinde, doğrulama için bu yol ilelskomutunu çalıştırın yazım hatası değildir."_IOSClass_FromClass", referans verilen kaynak: veya "_OBJCCLASS$_Java" - Kitaplık Arama Yolları yanlıştır veya Diğer Bağlayıcı İşaretleri'ni
-ljre_emulhesabına ekleyin. Başka kitaplıklar da bağlamanız gerekebilir.Tanımlanmamış simgeler: _iconv*: Gerekli iconv kitaplığındaki bağlantı.
Hâlâ sorun yaşıyorsanız j2objc-tartışma grubuna gidin.