Ç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_emul
ekleyerek 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_HOME
adı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ızj2objc
isej2objc/dist
klasörü. - Arama Yolları altında şu değişiklikleri yapın:
- Çerçeve Çalışması Arama Yolları,
${J2OBJC_HOME}/frameworks
ekler - Kitaplık Arama Yolları, her derleme yapılandırması için
${J2OBJC_HOME}/lib
değerini ekler. - Kullanıcı Üstbilgisi Arama Yolları
${J2OBJC_HOME}/include
ekler.
- Çerçeve Çalışması Arama Yolları,
J2OBJC_HOME
araması 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-root
Kö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/MyProject
içinde olduğunu, ardından muhtemelen Objective-C kaynağınızla başka birMyProject
dizinine sahip olursunuz.~/dev/MyProject/MyProject
dizini çalıştırmagit submodule add git@github.com:user/javaproject
- Java projeniz için kaynakla bir~/dev/MyProject/MyProject/javaproject
dizini oluşturun birlikte kullanabilirsiniz. Daha sonra bu klasörü Xcode projenize sürükleyebilirsiniz (Xcode, dosya sisteminizi yansıtan Xcode'un bulunduğuMyProject
grubuna 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/src
adlı dizindefoo.bar
Java paketiniz varsa bu paketin Java dosyalarının~/myproject/src/foo/bar/**.java
iç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-root
değ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.zip
paketini kullanmak için şunu ekleyerek libz.dylib kitaplığını bağlamanız gerekir: Diğer Bağlayıcı İşaretlerinize-ljre_zip
ekleyin.- 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-path
yanlıştı. Yürütülen komutta-sourcepath
seç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
-I
seç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 ilels
komutunu ç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_emul
hesabı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.