Android NDK的任何经验?

我特别感兴趣的是各种手机之间的便携性。 我们有一个应用程序,我们想在Android和iPhone之间分享一些计算繁重的代码。 如果我们可以用C编写它,我们就有一个代码库,但是如果NDK只支持手机制造商正在创建的处理器的子集,或者如果我们必须为每个处理器重新编译,那么这不是一个可行的解决方案。

感谢您的任何经验。

关于所有Android(版本1.5+)手机是否支持当前NDK输出的主题:

我只能说文档中没有任何内容可以暗示(除非您在“ 此版本支持ARMv5TE指令集”中读到含义),并且我非常密切关注Android新闻并且没有听说任何Android手机是使用非ARM体系结构发布(虽然有些人将EeePC的构建攻击在一起 )。 看看Android源代码 ,只有一个其他平台x86的痕迹。 至于Google和OHA的未来计划? 你必须问他们。 他们最近宣布了一些开发者日 ,但现在可能所有的景点都已消失(第一个就是今天)。 我在伦敦日(17日)很早就注册了,所以如果我进去,我会试着在那里得到一个答案(我也很想明确地知道)。

我对Iphone开发并不是很熟悉,但是如果你看一下android ndk页面 ,在开发工具部分,它列出了平台中可用的保证头,所以如果iphone支持这些function,或者你可以创建之间的接口您的代码和两个平台上的本机库比我不明白为什么它不起作用。

NDK基本上是Android的Java Native Interface的实现。 它为目标arm-eabi提供了GCC 4.2.1(据我所知,全套工具)。 生成的代码是否可以在iPhone或我不知道的其他设备上运行; 我从来没有为iPhone编码。 这是关于我用NDK构建的东西的file ,所以也许你可以比较:

libpuzzles.so:ELF 32位LSB共享对象,ARM,版本1(SYSV),动态链接,未剥离

(包括strip ;我只是没有在这里运行它。)这是gcc -vg++ -v (它们是相同的):

使用内置规格。

目标:arm-eabi

配置为:/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-languages = 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-,

线程模型:单一

gcc版本4.2.1

假设代码将运行,在API级别管理这是一个单独且有趣的问题。 Android只允许您通过JNI API调用本机代码。 我不熟悉iPhone的方法,但我知道它不是Java所以我猜它更像是标准的动态链接或dlopen() ? 我的意思是,你必须要么使你的JNI函数(例如Java_com_example_Foo_YourMethod(JNI_Env*, jobject, ...)应对从不是JVM的东西中调用(例如你的iPhone代码假冒JNI_Env?或者,更不用说,首先提供适用于iPhone的本机API,然后包含一个JNI包装器,非JNI平台可以安全地忽略,我收集的是这类事情的常用方法。希望有所帮助。

我在编写跨面包JNI / C应用程序时遇到了很好的经验,在NDK中使用帧缓冲处理并在JAVA中进行渲染。

Pitty,它是一个仅限Android的解决方案