Frage

Mich interessiert insbesondere, wie portabel es zwischen verschiedenen Telefonen ist.Wir haben eine Anwendung mit rechenintensivem Code, den wir gerne zwischen Android und iPhone teilen möchten.Wenn wir es in C schreiben könnten, hätten wir eine einzige Codebasis, aber wenn das NDK nur eine Teilmenge der Prozessoren unterstützt, die Telefonhersteller entwickeln, oder wenn wir für jeden Prozessor neu kompilieren müssten, wäre das keine praktikable Lösung .

Vielen Dank für alle Erfahrungen damit.

War es hilfreich?

Lösung

Zum Thema, ob alle Android (Version 1.5+) Telefone werden die Ausgabe des aktuellen NDK unterstützt:

Alles, was ich sagen kann, ist, es gibt nichts in der Dokumentation nichts anderes vorzuschlagen (es sei denn vielleicht, wenn Sie lesen, eine Implikation in „ dieses Release unterstützt die ARMv5TE Befehlssatz“), und ich folge Android Nachrichten ziemlich eng und nicht von irgendwelchen Android-Handys gehört, freigegeben wird, um eine nicht-ARM-Architektur (obwohl gehackt einige Leute zusammen ein Build für EeePC ). Mit Blick auf die Android Quelle , gibt es Spuren von nur einer anderen Plattform, x86. Was die Zukunftspläne von Google und die OHA ? Sie müßten sie fragen. Sie kündigten vor kurzem einige Entwickler Tage , aber wahrscheinlich alle Flecken sind nun weg (das erste heute ist). Ich registrierte ziemlich früh für den London Tag (17) dann, wenn ich in Ich werde versuchen, dort eine Antwort zu bekommen (ich bin daran interessiert, definitiv zu wissen).

Andere Tipps

Ich bin nicht sehr vertraut w / Iphone Entwicklung, aber wenn man sich auf die

Das NDK ist im Grunde eine Implementierung des Native Java-Schnittstelle für Android.Sie erhalten GCC 4.2.1 (soweit ich das beurteilen kann, den vollständigen Satz an Tools) mit Ziel arm-eabi.Ob der resultierende Code auf einem iPhone oder anderen Geräten laufen würde, weiß ich nicht;Ich habe noch nie für das iPhone programmiert.Hier ist was file Ich muss etwas zu etwas sagen, das ich mit dem NDK erstellt habe. Vielleicht können Sie Folgendes vergleichen:

libpuzzles.so:ELF 32-Bit LSB Shared Object, ARM, Version 1 (SYSV), dynamisch verknüpft, nicht entfernt

(strip ist enthalten;Ich habe es hier einfach nicht ausgeführt.) Hier ist gcc -v oder g++ -v (sie sind identisch):

Verwendung integrierter Spezifikationen.

Ziel:arm-eabi

Konfiguriert mit:/opt/digit/android/git/android-ndk/out/arm-eabi-4.2.1/toolchain/src/gcc-4.2.1/configure --prefix=/opt/digit/android/git/android-ndk /build/prebuilt/linux-x86/arm-eabi-4.2.1 --target=arm-eabi --host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu --enable-sprachen=c,c++ --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 -- disable-sjlj-Exceptions --disable-shared --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs --disable-nls --prefix=/opt/digit/android/git/android-ndk/build/prebuilt/linux-x86/arm-eabi-4.2.1 --with-sysroot=/opt/digit/android/git/android-ndk /build/platforms/cupcake/arch-arm --program-transform-name=s,^,arm-eabi-,

Thread-Modell:einzel

gcc-Version 4.2.1

Vorausgesetzt, der Code wird ausgeführt, ist die Verwaltung auf API-Ebene ein separates und interessantes Thema.Mit Android können Sie nativen Code nur über die JNI-API aufrufen.Ich bin mit dem iPhone-Ansatz nicht vertraut, aber ich weiß, dass es sich nicht um Java handelt, daher würde ich vermuten, dass es sich eher um eine standardmäßige dynamische Verknüpfung handelt oder dlopen()?Was ich meine ist, Sie müssten entweder Ihre JNI-Funktionen (z. B. Java_com_example_Foo_YourMethod(JNI_Env*, jobject, ...) damit zurechtkommen, von etwas aufgerufen zu werden, das keine JVM ist (hat Ihr iPhone-Code zum Beispiel eine JNI_Env vorgetäuscht?), oder, noch viel weniger schrecklich, beginnen Sie mit der Bereitstellung einer nativen API, die für das iPhone geeignet ist, und fügen Sie dann einen JNI-Wrapper ein, der kein JNI ist Plattformen können getrost ignorieren, was meiner Meinung nach ein gängiger Ansatz für solche Dinge ist.Hoffentlich hilft das.

Ich habe eine schöne Erfahrung zu schreiben Quer Brot JNI / C-App mit Framebuffer-Verarbeitung in NDK hatte und Rendering in JAVA.

Pitty, seine eine Android-only Lösung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top