FastCV简介(3)
编译和运行 FastCV 示例应用程序
创建 Android APK 并编译共享对象
我们现在将使用 Eclipse IDE 环境编译和构建 Android 应用程序 APK。 示例应用程序有几个 Java 类来创建提供 GUI 功能、读取相机帧、允许用户交互以及向用户提供性能数据
构建 FastCVSample 应用程序
通过选择 File->New->Project… 在 Eclipse 中创建一个新项目。从向导选择中选择 Android->Android Project。
选择“从现有源创建项目”并浏览到 <DEVELOPMENT_ROOT>\fastcv-android-xx-yy-zz\ 目录。
单击完成。
调整项目名称,点击完成
要编译本机部分,我们需要向项目添加 C/C++ 属性。
为此,请在 File > New > Other > C/C++ > Convert to a C++ Project 菜单选项上使用 clock 将 C/C++ 属性添加到项目。
注意:
与菜单选项的文本所暗示的相反,这不会用 C/C++ 应用程序属性替换 Android 应用程序属性,也不会创建新项目来代替或与您的 Android 应用程序并排。 它只为项目添加了 C/C++ 的附加属性,以及 Android 属性。
为项目添加 C/C++ 属性而调用的向导将要求您配置项目类型和用于项目的工具链。 通过为项目类型选择 Makefile 项目,为工具链选择其他工具链,您可以配置项目以调用 GNU Make 来构建项目的 C/C++ 部分。
您将在此处集成两个构建系统(Java 部分使用 ADT,C/C++ 部分使用 NDK)。
您将创建的 makefile 将从 NDK 调用 ndk-build 脚本来负责为您的应用程序构建本机共享对象,然后 ADT 将在构建您的应用程序包时自动包含该共享对象。
Eclipse 的标准安装已开启自动编译。 第一次编译应用程序时,您可能会收到来自 Eclipse 的一些错误消息。 Project->Clean…->Clean All Projects 应该修复这些错误,因为 Eclipse 必须构建一些标准目录。 这还会创建用于部署的 APK 包。
将 lib/libfastcv.a 复制到您的 ndk lib 目录(例如 <Android-NDK-Root/platforms//arch-arm/usr/lib)
在 ndk include 目录下创建一个名为 fastcv 的目录。 将安装目录下的inc目录内容复制到刚刚新建的ndk目录下的include目录下(例如<Android-NDK-Root/platforms/<Android API>/arch-arm/usr/include/fastcv)
现在,当您单击“全部构建”时,您应该会在控制台日志中看到如下内容:
**** Build of configuration Default for project FastCVSample ****
make all
Host OS was auto-detected: windows
make[1]: Entering directory `/cygdrive/c/Development/fastcv-android-xx-yy-zz'
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Compile++ thumb : fastcvsample <= fastcvsample.cpp
Compile++ thumb : fastcvsample <= FPSCounter.cpp
Compile++ thumb : fastcvsample <= CameraRendererRGB565GL2.cpp
Compile++ thumb : fastcvsample <= CameraUtil.cpp
StaticLibrary : libstdc++.a
SharedLibrary : libfastcvsample.so
Install : libfastcvsample.so => libs/armeabi/libfastcvsample.so
make[1]: Leaving directory `/cygdrive/c/Development/fastcv-android-xx-yy-zz'
apk 应该在 \bin\ 目录中。 该应用程序已成功构建。
运行示例应用程序
要在您的设备上安装,请从 bin 目录运行以下命令:
Adb install <项目名称>.apk
这应该会在设备上安装示例应用程序,并且您应该能够从设备运行该应用程序。