JNI with android?



嘿伙计们!我最近一直在研究必须在Android 2.1和2.2上运行的c ++应用程序。所以我想知道我是否有完整的 c++ 应用程序,我可以将其放入 *.so 文件中,然后创建 android 项目,然后简单地使用 System.loadLibrary(blalba.so) 加载此库;行得通吗?

是的,您必须重新编译所有专门针对Android的本机库。是的,您确实需要您计划使用的所有第三方本机库的源代码,因为通常当我们在 Android 外部编译和链接这些库时,它们会链接到 glibc,但不幸的是,由于自由和性能问题,Android 不使用 glibc。Android使用一个名为libc的glibc的淡化版本。它具有与glibc匹配的符号名称,用于大多数常用功能。但据我所知,libc 没有一些与字符串相关的功能,而且它肯定没有一些 posix 支持。如果您的本机库正在使用任何已弃用的功能,则必须通过使用 libc 支持的替代功能并相应地对库进行编码来找到这些解决方法。

此外,正如您正确指出的那样,您必须使用NDK将Java(Android app/fwk)连接到本机世界(C++)。

虽然这听起来很简单,但根据我的经验,在Android上编译原生库(Android移植)传统上非常耗时,不能保证成功。

最新更新