Question

Je m'intéresse particulièrement à la façon dont portable c'est entre différents téléphones.Nous avons une application avec quelques calculs lourds de code que nous aimerions partager entre Android et iPhone.Si l'on pouvait écrire en C, nous aurions une base de code unique, mais si le NDK prend uniquement en charge un sous-ensemble de processeurs que les fabricants de téléphones de la création, ou si nous avons à recompiler à chaque processeur, ce n'est pas une solution viable.

Merci pour toutes les expériences avec elle.

Était-ce utile?

La solution

Au sujet du fait que toutes les applications (version 1.5+) téléphones soutiendront la sortie du NDK courant:

Tout ce que je peux dire est qu'il n'y a rien dans la documentation à penser le contraire (sauf peut-être si vous lisez une implication dans « cette version prend en charge le jeu d'instructions ARMv5TE »), et je suis Android nouvelles assez près et ne l'ont pas entendu parler de téléphones Android d'être libéré en utilisant une architecture non-ARM (si certaines personnes piraté ensemble une construction EeePC). En regardant le la source Android , il y a des traces d'une seule autre plate-forme x86. En ce qui concerne les plans futurs de Google et le OHA ? Il faudrait leur demander. Ils ont récemment annoncé une jours de développement , mais probablement toutes les taches ont disparu maintenant (le premier est aujourd'hui). Je me suis inscrit assez tôt pour la journée Londres (17), donc si je reçois dans Je vais essayer d'obtenir une réponse là-bas (je suis très curieux de savoir définitivement trop).

Autres conseils

Je ne suis pas très familier w / développement Iphone, mais si vous regardez sur le

Le NDK est essentiellement une mise en œuvre de la Java Native Interface pour Android.Il vous donne GCC 4.2.1 (l'ensemble complet d'outils pour autant que je puisse dire) avec la cible arm-eabi.Si le code fonctionne sur un iPhone ou d'autres appareils, je ne sais pas;Je n'ai jamais codé pour l'iPhone.Voici ce que file a à dire à propos de quelque chose que j'ai construit avec le NDK alors peut-être vous pouvez comparer:

libpuzzles.donc:ELF 32-bit LSB objet partagé, BRAS, version 1 (SYSV), liée de façon dynamique, pas dépouillé

(strip est inclus;Je n'en ai pas l'exécuter, ici.) Voici gcc -v ou g++ -v (ils sont identiques):

À l'aide intégrée dans les specs.

Cible:arm-eabi

Configuré avec:/opt/chiffres/android/git/android-ndk/out/arm-eabi-4.2.1/outils/src/gcc-4.2.1/configure --prefix=/opt/chiffres/android/git/android-ndk/build/prédéfinis/linux-x86/arm-eabi-4.2.1 --target=arm-eabi --host=x86_64-unknown-linux-gnu --build=x86_64-unknown-linux-gnu --enable-languages=c,c++ --disable-libssp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-shared --with-float=soft-avec-fpu=vfp-avec-arch=armv5te --enable-cible-optspace --with-abi=vamp --disable-nls --prefix=/opt/chiffres/android/git/android-ndk/build/prédéfinis/linux-x86/arm-eabi-4.2.1-avec-sysroot=/opt/chiffres/android/git/android-ndk/build/plates-formes/cupcake/arch-bras --programme de transformation-nom=s,^,arm-eabi-,

Modèle de Thread:unique

la version de gcc 4.2.1

En supposant que le code sera exécuté, cette gestion au niveau de l'API est un problème intéressant.Android ne vous permettent d'appeler du code natif via l'API JNI.Je ne suis pas familier avec l'iPhone, mais je sais que c'est pas Java, donc je suppose qu'il est plus comme la norme de la liaison dynamique ou dlopen()?Ce que je veux dire, c'est que vous auriez à le faire à votre JNI fonctions (par ex. Java_com_example_Foo_YourMethod(JNI_Env*, jobject, ...) composer avec le fait d'être appelé à partir de quelque chose qui n'est pas une JVM (d'avoir votre iPhone code faux un JNI_Env par exemple?) ou, beaucoup moins horriblement, commencer par fournir une API native pour iPhone et ensuite inclure un JNI wrapper, qui non-JNI plates-formes pouvez ignorer en toute sécurité, que je collecte est une approche commune pour ce genre de chose.Espérons que cela aide.

J'ai eu une belle expérience d'écriture application JNI / C cross-pain avec traitement framebuffer dans NDK et rendu en JAVA.

Pitty, sa solution androïde seule

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top