关键词:移动开发Android  NDK  VC6

Eclipse作为常用的Anddroid IDE开发环境,得到了广泛的应用。但是因为其系统庞大,如果机器的性能差一些,就得忍受其蜗牛般的速度。在做NDK开发的时候,我们只需要编译C/C++代码,有没有可能使用更快速的IDE环境,比如VC6来实现开发Android NDK开发呢,经过尝试,发现是可以实现的。下面就把步骤整理出来,以飨有相同兴趣的朋友。

假设我们已经建立好了Andriod NDK开发所需的所有环境(最小包括CygWin和NDK),这方面的文档网络上到处都是,这里就不在赘述。

一、准备工作

为了方便建立一个VC6下的Android NDK开发工程,在这里先建立三个批处理文件android_emulator.bat用于打开模拟器,build.bat用于编译NDK程序,run.bat将编译结果复制到模拟器中指定位置,并运行。

android_emulator.bat启动模拟器

for /f %%a in (‘adb get-state’) do set dev_state=%%a

if not “%dev_state%”==”unknown” goto End

start “android 2.2 emulator “emulator.exe –shell –avd a2.2 –partition-size 128

:End

解释:

for /f %%a in (‘adb get-state’) do set dev_state=%%a检测是否启动了模拟器

if not “%dev_state%”==”unknown” goto End如果未启动,则启动模拟器,否则结束批处理。

start “android 2.2 emulator “emulator.exe –shell –avd a2.2 –partition-size 128启动模拟器,其中–avd后的a2.2为AVD设备文件,要根据你的系统做相应的修改,如果你不知道设备名称是什么,记住AVD设备文件是保存在一个叫.android的目录下,该目录默认在用户的文档根目录下,如C:\Users\Administrator\Documents。

build.bat编译工程

c:\cygwin\bin\bash --login -c "cd /cygdrive/e/JniLib/MediaInfo/jni && $NDK_ROOT/ndk-build"

call run.bat %1

解释:

c:\cygwin\为cygwin的安装目录,这个需要根据你的系统中cygwin的安装位置做相应调整。cd /cygdrive/e/JniLib/MediaInfo/jni指定你的工程文件的绝对路径,要以cygwin的方式指定,比如e:/在这里需要写成/cygdrive/e/。$NDK_ROOT为NDK的安装路径。call run.bat编译成功后启动执行,只有在生成执行文件时才需要,如果只建立动态或者静态库,则不需要。

run.bat运行编译好的执行文件

adb push ../libs/armeabi/%1 /dev/sample/%1

adb shell chmod 777 /dev/sample/%1

adb shell /dev/sample/%1

解释:这里假设已经在模拟器中建立好/dev/sample目录,如果没有该目录,可以调用

adb shell mkdir /dev/sample

建立该目录。

adb push ../libs/armeabi/%1 /dev/sample/%1复制文件到模拟器中

adb shell chmod 777 /dev/sample/%1修改文件权限

adb shell /dev/sample/%1运行文件。

二、        VC中建立运行一个NDK工程

做好上面的准备工作,现在我们就可以在VC中建立一个Android NDK工程项目了。

第一步:在VC6中建立一个Makefile项目,输入项目名。如图一所示

0818b9ca8b590ca3270a3433284dd417.png

图一:建立一个Makefile项目

点击OK 按钮,进入图二,在右边的Command line框下输入build ndkdemo,这里build就是我们上面的批处理文件,ndkdemo为我们要输出的执行文件名,其他的可以随便填。

0818b9ca8b590ca3270a3433284dd417.png

图二:设置编译命令

第二步:将建立好的build.bat run.bat文件放置在工程目录下。建立一个jni目录,在其目录下放置两个mk文件,名称分别为Application.mk,Android.mk。这两个文件的作用在这里不再多说,都明白的。现在创建一个简单的演示代码ndkdemo,类似经典的“Hell world”样例代码。

到此为止,一个在VC6下的NDK工程就建立好了。在开始编译运行前,先启动模拟器,直接点击android_emulator.bat就可以启动,模拟器启动好后。就可以在VC6下编译测试我们的Android NDK程序了。

按照编译运行VC6普通工程的方法,我们就可以在VC6下面的Build窗口中看到运行结果,如图三所示。一切OK。

0818b9ca8b590ca3270a3433284dd417.png

图三:运行结果

三、文件代码

1.    Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_ARM_MODE := $(_ARM_MODE)

LOCAL_SRC_FILES:= ndkdemo.cpp

LOCAL_MODULE:= ndkdemo

LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib \

LOCAL_SHARED_LIBRARIES := stdc++

include $(BUILD_EXECUTABLE)

2.Application.mk

APP_ABI := armeabi

APP_PLATFORM := android-8

_ARM_MODE := arm

ifeq ($(NDK_DEBUG),1)

APP_OPTIM := debug

OPT_CFLAGS :=

else

APP_OPTIM := release

OPT_CFLAGS := -O3 -mlong-calls -fstrict-aliasing -ffast-math

endif

ifeq ($(_ARM_MODE), arm)

OPT_CFLAGS += -fprefetch-loop-arrays

#   OPT_CFLAGS += -march=armv6j -mtune=arm1136j-s -msoft-float

endif

OPT_CPPFLAGS := $(OPT_CLFAGS)

APP_CFLAGS := $(APP_CFLAGS) $(OPT_CFLAGS)

APP_CPPFLAGS := $(APP_CPPFLAGS) $(OPT_CPPFLAGS)

3.    ndkdemo.cpp

// ndkdemo.cpp

#include

int main()

{

printf("Hello, This is android NDK test demo!!!");

return 0;

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐