据我所知,有3种方法可以编译和使用C代码到android中。
1. NDK : by using JNI :
example
2. -static : without using libc library
:example
3. dynamic : with using libc library
:example
我需要找出最好的方法。此外,我需要考虑可靠的方法,并要求良好的性能。
由于
答案 0 :(得分:3)
有两种方法可以编写包含C:
的Android应用程序你用Java编写一个Android应用程序并在C中实现它的一部分。然后用JNI调用那个部分。
您使用C / C ++编写了一个Android应用程序(使用NativeActivity),但正如第一个答案here中所提到的,您仍然会在Java中调用Java。
据我所知,这是获得“应用程序”的唯一标准两种方式,即普通用户可以使用的方式。
当然,您可以使用某些工具链(例如NDK工具链或CodeSourcery工具链等)编译二进制文件,但是您只能从某个命令行终端或其他应用程序内部运行它们:这些是二进制文件代码在设备上运行,而不是完整的应用程序。对于某些东西,比如服务或驱动程序,这非常好。对于静态与动态:
(a)对于NDK的情况,您通常会动态链接Android(仿生)的基本库或您的设备在/ system / lib中可能拥有的任何其他库。这意味着您的程序仍然很小。
(b)对于一些必须静态编译自己的libc(或其他)的其他工具链,你得到一个胖二进制文件,它可能加载甚至执行得更慢(但这取决于太多因素,你应该测试它)
编辑:那么,最终,这取决于您对应用程序的需求:
如果您想开发可以使用GUI的标准Android“应用程序”,WiFi /蓝牙等将根据您的偏好语言使用Java或C / C ++方式。 Java更受欢迎,因此您可以找到更多文档和示例。
如果您想在C / C ++中开发一些不需要Android应用程序功能的东西(例如服务或与硬件接口的一段代码),或者您想要移植一些现有的C语言/ C ++代码,然后你可以用ARM工具链编译它。有关静态和动态链接之间的差异,请参阅此question。