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++ 代码的主要内容,如果未能解决你的问题,请参考以下文章

Android平台Native开发与JNI机制详解

appium入门级教程—— appium介绍

android 学习随笔二十七(JNI:Java Native Interface,JAVA原生接口 )

Appium简介

1.appium介绍

android ndk是啥