iOS ve Android uygulamalarımda kütüphane olarak kullanmak için bazı genel servis çağrıları, veri modelleri, vb. Yapmak istiyorum. Belki de Haxe'nin bunu yapabileceğini düşünüyordum ama hiçbir örnek bulamıyorum. Birisi bunun mümkün olup olmadığına ve nasıl başlayacağına biraz ışık tutabilir mi?iOS ve Android'de yerel olarak çağrılabilen haxe'de bir kitaplık oluşturmanın bir yolu var mı?
cevap
Bu çok önemli bir konu ve mümkün. Ancak, Java'ya ve Objective-C/C++'ın farklı yerel türlere sahip olması nedeniyle, ana bilgisayara özgü API'ları göstermeniz olasıdır.
iOS için, burada cevabın bir başlangıcı bulabilirsiniz: How to create iOS- & OSX- library from Haxe and use it in native application?
Android için her zamanki dinleyici arabirimi deseni izleyen bir API maruz yeterince basittir. Ancak genellikle Java'da işlev referanslarını geçemezsiniz, bu nedenle Haxe-java, Java'dan kullanmak için garip olan Closure/Function nesneleri kullanılarak genelleştirilmiş benzer bir model kullanır. Java için
Yaz Haxe kodu:
tüm maruz sınıflara @:nativeGen
meta eklemek için emin olun - Haxe yansıma işe yaramaz ama Java dan tüketilen zaman daha temiz olacak.
package com.foo;
@:nativeGen
class MyModel {
public function new() {
}
public function doSomething(listener:SomethingListener) {
Timer.delay(function() {
listener.onResult(cpt);
}, 2000);
}
}
@:nativeGen
interface SomethingListener {
function onResult(value:Int):Void;
}
temelleri basit ama şeytan ayrıntıda gizlidir: Java türlerini tüketmeye
- kullanımını
java.Lib
fonksiyonları: Eğer bazı dönüşüm işi yapmak zorunda kalacaktır Java yerli türleri dönmek/tüketmeye: http://api.haxe.org/java/Lib.html - kullanım
java.NativeArray
Java diziler yapmak: http://api.haxe.org/java/NativeArray.html
Ge Haxe bir JAR nerate:
# generates java source under /MyAPI and a corresponding /MyAPI/MyAPI.jar
haxe -cp src -java MyAPI -D no-root com.foo.MyModel
Notlar: Biz bir yerli görünümlü paketi üretecek statik giriş noktası
-D no-root
istemiyoruz çünkü
-main
atlanırsa, aksi şeylerdirhaxe
paketinin altında. Java tarafında
Bu JAR içe ve şeffaf kullanabilirsiniz.
IntelliJ/Android Studio'dan bir modül oluşturabilirsiniz: Proje Yapısı> Modül Ekle> JAR/AAR Paketini İçe Aktar.
IntelliJ'in, JAR'ı projenin içine kopyalarken, Haxe projenizi yeniden oluştururken JAR'ı orada güncellemeniz gerektiğini unutmayın. IntelliJ değişiklikleri hemen alacak.
import com.foo.MyModel;
import com.foo.SomethingListener;
MyModel myModel = new MyModel();
myModel.doSomething(new SomethingListener() {
@Override
public void onResult(int value) {
// Got something from Haxe
}
});