android - NDK 仅构建 C++ 应用程序

标签 android android-ndk

我正在尝试在 Android 上构建原生守护进程。目的是控制一些特定的硬件,Java 应用程序将能够使用套接字与此守护进程通信。

同时我一直在使用 cmake 来编译我的库、演示和真正的守护进程(顺便说一句,它运行良好)。我现在正在尝试做两件不同的事情:

  1. 使用 ndk-build 构建相同的应用程序。
  2. 通过使 JNI 调用与 C++ 守护进程的工作方式非常相似,将 C++ 守护进程移植到 Android 服务。

据我所知,ndk-build 不能制作原生应用程序,只能制作原生库,而这些库又可以由 Java GUI 加载……我说得对吗?对于第 1 步,我并不真的需要 java(我已经证明了这一点),但我还没有找到一种方法让 ndk-build 吐出一个 elf 应用程序。

供引用 - 我正在使用 cmake,如下所述:http://opekar.blogspot.com/2011/06/android-cmake-is-much-easier-in-ndk-r5b.html

这样我就可以为“普通”linux 构建,也可以为使用源代码构建的 android 构建。如果你问我的话,这是相当不错的技巧。

最佳答案

另一种方法是使用与 NDK bundle 在一起的脚本 make-standalone-toolchain.sh 创建一个独立的工具链,然后使用它来编译您的项目。下面的 shell 代码说明了如何使用它:

# Assumed path to the NDK, change it to suit your environment.
NDK_HOME=$HOME/bin/android-ndk-r8e

# Desired API and NDK versions and destination folder of
# the stand-alone toolchain, change them to suit your needs.
api=14
ver=4.7
folder=$HOME/bin/android-$api-ndk-$ver

# Create folder if it doesn't already exist.
mkdir -p $folder

$NDK_HOME/build/tools/make-standalone-toolchain.sh \
    --toolchain=arm-linux-androideabi-$ver \
    --platform=android-$api --install-dir=$folder

运行上面的行将在 $HOME/bin/android-14-ndk-4.7 生成一个新的独立工具链,然后您可以将其用作任何常规的 C/C++ 交叉编译工具链。

使用独立工具链的优势在于,它使将 Linux 项目交叉编译到 Android 变得轻而易举;例如看我的 port of Valgrind to Android ARMv7 .

关于android - NDK 仅构建 C++ 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266291/

相关文章:

android - transformNativeLibsWithStripDebugSymbolForRelease 执行失败,mips64el-linux-android-strip

Android:对齐父底部+底部边距

java - Android SQLite 游标错误

java - 成功将元素解析到列表后,SAX 解析器 endDocument 中的空列表

android - 如何在android代码和 native 代码之间创建回调?

android - OpenCV Android native 代码构建问题

android - 如何使用 MediaCodec API 调用我的自定义解码器

android - 如何在应用程序小部件中设置向下滑动和向上滑动手势?

java - 在 Android 中获取麦克风音量(分贝级别)

linux - 安装Android-EABI工具链时,是否可以覆盖/usr中的文件?