Android 平台上的原生 C/C++ 代码
Posted
技术标签:
【中文标题】Android 平台上的原生 C/C++ 代码【英文标题】:Native C/C++ code on an Android platform 【发布时间】:2010-10-11 02:23:05 【问题描述】:我有两个关于 android 平台上的原生 C/C++ 的问题:
设备制造商是否可以在 Android 平台上开发原生 C++ 应用程序?
如何在 Android 平台上开发自己的具有上层 Java 前端/API 的原生 C++ 应用程序/库?
【问题讨论】:
【参考方案1】:官方公告及下载链接:
介绍 Android 1.5 NDK,第 1 版 David Turner 于 2009 年 6 月 25 日上午 10:30 发布
你们中的许多人一直在要求能够从您的 Android 应用程序调用本机代码。我很高兴地宣布,开发者现在可以从 Android 开发者网站下载 Android Native Development Kit。
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
【讨论】:
【参考方案2】:这篇博文解释了如何在 android 上进行原生编程: http://rxwen.blogspot.com/2009/11/native-programming-on-android.html 希望有帮助。
【讨论】:
【参考方案3】:可以,但不支持。从一个 Android 系统到另一个系统,本机代码要求可能会有很大差异;除非您在非常低级别的基础架构上工作,否则最好采用 Java-source-to-Dalvik-VM 路线以实现可移植性。当然,您可能会被绑定到您为其编写本机代码的手机,但如果您将其集成到 Android 中,它可能会被系统打算支持的所有平台接受和维护。
【讨论】:
非常不准确。本机代码适用于任何支持它的手机,就像 Java 代码一样 @PiotrK,我不确定你的意思。 Android 的 Dalvik VM(是的,它使用 Java 来表示源代码,但实际上不是 Java)当然是本机代码。但它将专为手机的 CPU 和架构/平台而构建。没有什么说 Android 必须在 ARM 上运行,或者它允许在哪种型号的 ARM 上运行。因此,编译要求取决于硬件实现。正如我所说,对于上传到 Android 市场的应用程序,“不支持”。也就是说,LLVM 可以很好地解决这个问题。不知道为什么谷歌不这样做,而不是他们做了什么。【参考方案4】:当然,如果您是设备制造商。您基本上可以为所欲为。
【讨论】:
【参考方案5】:这篇文章解释的很好:http://davanum.wordpress.com/2007/12/09/android-invoke-jni-based-methods-bridging-cc-and-java/
【讨论】:
【参考方案6】:Google 已发布原生开发工具包 (NDK)(根据 http://www.youtube.com/watch?v=Z5whfaLH1-E 00:07:30)。
希望信息会在 google 群组页面 (http://groups.google.com/group/android-ndk) 上更新,因为它表示尚未发布。
我不知道在哪里可以简单地下载它,但我听说您可以从 Google 的 Git 存储库的 donut 分支下获取 NDK 的副本。
【讨论】:
【参考方案7】:Android 的底层往往有一个普通的 Linux, 因此,如果您只能在其中获取代码,则应该可以编写 Linux 应用程序... (但通常你不能,因为手机被锁定在那个级别)
所以答案是:
-
是的,但这取决于
是的,但这取决于
【讨论】:
以上是关于Android 平台上的原生 C/C++ 代码的主要内容,如果未能解决你的问题,请参考以下文章