用vc 写android程序代码,用VC6 进行Android NDK 开发

关键词:移动开发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;

}

目录 前言 第1章 Windows CE及开发环境概述 1.1 Windows CE概述 1.1.1 Windows CE嵌入式系统概述 1.1.2 Windows CE版本 1.1.3 Windows CE 6.0概述 1.1.4 嵌入式开发流程 1.2 开发环境概述 1.2.1 Visual Studio 2005的Visual C++——Windows CE开发环境概述 1.2.2 示例程序HelloWorld 1.3 Windows CE附带远程工具概述 第2章 图形编程 2.1 设备环境类 2.2 图形对象类(GDI) 2.3 绘制各种图形 2.4 绘制位图 2.4.1 CDC绘图函数描述 2.4.2 动画效果 2.4.3 抓屏 2.4.4 图形显示特技 2.5 显示压缩格式图片 2.5.1 SHLoadImageFile方法 2.5.2 Imaging技术 2.6 简单二维曲线示例 2.6.1 二维曲线类C2Dgraph的创建 2.6.2 使用二维曲线类C2DGraph绘制曲线 第3章 对话框控件 3.1 常用控件 3.1.1 微调按钮 3.1.2 滑动条 3.1.3 进度条 3.1.4 列表视图控件 3.1.5 树控件 3.2 创建图形显示控件 3.3 创建LED数字显示控件 第4章 进程 4.1 进程 4.1.1 进程概述 4.1.2 进程创建 4.1.3 进程终止 4.1.4 其他进程函数 4.1.5 “进程列举并管理”实例 4.2 进程间通讯 第5章 线程 5.1 线程 5.1.1 线程概述 5.1.2 线程优先级 5.1.3 线程API函数 5.2 线程同步 5.2.1 未使用线程同步 5.2.2 利用事件同步 5.2.3 利用互斥同步 5.2.4 利用临界区同步 5.2.5 利用信号量同步 第6章 文件 6.1 文件基本操作 6.2 文件综合操作示例 6.3 内存映射文件 6.3.1 内存映射文件概述 6.3.2 利用内存映射文件实现进程间通讯 6.4 文件系统管理 6.5 注册表编程 6.5.1 注册表简介 6.5.2 注册表API函数 6.5.3 注册表操作举例 第7章 多媒体编程 7.1 Direct Show介绍 7.1.1 DirectShow技术框架 7.1.2 过滤器(Filter) 7.1.3 Filter Graph Manager 7.1.4 Pin 7.1.5 DirectShow 接口定义介绍 7.2 媒体播放器示例 7.3 摄像头捕捉示例 7.3.1 摄像头捕捉概述 7.3.2 摄像头捕捉示例 第8章 Windows CE基础数据库编程 8.1 EDB概述 8.1.1 装配数据卷 8.1.2 卸载数据库卷 8.1.3 创建数据库 8.1.4 创建会话对象 8.1.5 打开数据库 8.1.6 事务操作 8.1.7 删除数据库 8.1.8 枚举数据库卷以及数据库 8.1.9 查找或移动记录 8.1.10 记录 8.1.11 读取记录 8.1.12 删除记录 8.1.13 流操作 8.2 数据库操作综合示例 第9章 SQLCE数据库编程 9.1 SQL Server FOR CE的介绍 9.1.1 SQLCE简介 9.1.2 SQL Server CE 3.0的安装 9.1.3 SQLCE 3.0连接配置 9.2 OLEDB 编程访问SQLCE 3.0 9.2.1 OLE DB 概述 9.2.2 OLEDB 编程 9.3 SQLCE远程数据访问 9.3.1 Pull(拉数据) 9.3.2 Push(推数据) 9.3.3 Submit(远程T-SQL操作) 9.4 远程数据访问综合示例 第10章 串口编程 10.1 串口概述 10.2 串口编程API函数介绍 10.3 CE串口综合示例 10.4 GPS编程示例 第11章 网络编程概述 11.1 套接字编程基础 11.1.1 WinSock初始化和释放 11.1.2 创建套接字 11.1.3 关闭套接字 11.1.4 绑定套接字 11.1.5 监听套接字 11.1.6 等待连接 11.1.7 建立连接 11.1.8 发送数据 11.1.9 接收数据 11.1.10 设置套接字模式 11.1.11 Select I/O模型 11.2 PING编程 11.2.1 PING编程概述 11.2.2 PING编程示例 11.3 RAS拨号编程 11.3.1 建立拨号连接 11.3.2 关闭拨号连接 11.3.3 列举已建立的活动连接 11.3.4 列举电话簿条目 第12章 UDP编程 12.1 UDP编程概述 12.2 UDP编程示例 第13章 TCP编程 13.1 TCP编程概述 13.2 TCP客户端示例 13.3 TCP服务器端示例 第14章 DLL编程 14.1 DLL概述 14.2 DLL的调用 14.2.1 静态调用 14.2.2 动态调用 14.3 DLL的创建 14.3.1 Windows CE DLL的创建 14.3.2 基于MFC的Regular DLL的创建 14.3.3 资源DLL 第15章 COM编程 15.1 COM基本知识概述 15.1.1 什么是COM 15.1.2 什么是接口 15.1.3 COM基本结构 15.2 使用ATL创建COM示例 15.2.1 ATL对COM支持概述 15.2.2 ATL创建COM对象示例 15.2.3 创建客户端调用CEComServer 15.3 可连接点对象及示例 15.3.1 可连接点对象概述 15.3.2 连接点示例 15.4 创建ActiveX控件 15.4.1 ActiveX概述 15.4.2 使用MFC向导创建一个简单的ActiveX控件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值