一下载及安装
1.下载和安装Android NDK
目前版本:android-ndk-r9d,解压。
设置环境变量NDK_ROOT为android-ndk-r9d所在路径。或将android-ndk-r9d所在路径设置到变量PATH中。
2.下载和安装Android JDK
目前版本:jdk1.8.0_11,解压并安装。
设置环境变量JAVA_HOME为jdk1.8.0_11所在路径。
3. 下载和安装 Android SDK
目前版本:android-sdk_r22.3-windows,解压。
模拟器设备文件是保存在一个叫.android的目录下,该目录默认在用户的文档根目录下。(1) 可以通过设置环境变量ANDROID_SDK_HOME为模拟器所在文件夹.android的路径。如M:\Android\ Android ,即.android的完整路径为M:\Android\ Android\.android。
如果是从原来默认的目录下复制了.android,则需要修改每个模拟的配置文件。
(2) 修改系统变量PATH,在里面添加%ANDROID_SDK_HOME%/tools;
(3) 使用SDK Manager下载Android SDK Tools、Android SDK platform-tools、Android SDK Build-tools和Android 4.4W(API 20)的相关东西。
(4) SDK无法下载解决方法:
解决方法:
第一步:修改hosts文件
在hosts 文件后面增加:
#Google主页
203.208.46.146www.google.com
#这行是为了方便打开Android开发官网 现在好像不用VPN也可以打开
74.125.113.121developer.android.com
#更新的内容从以下地址下载
203.208.46.146 dl.google.com
203.208.46.146 dl-ssl.google.com
第二步:在Android SDK Manager的Tool->Option选项中把https的资源获取方式强制换成http协议获取的方式。(Others选项第一个)
4.下载和安装Cygwin
下载地址:http://cygwin.com/setup.exe
(1) 必须安装如下包:gcc、g++、make、git包,建议安装如下包:ncurses、bison、gettext、gettext-devel、textinfo。
(2) Cygwin及git安装好后,进入cygwin,输入git –version,如果能正确显示git的版本就表示git安装没有问题,就可以开始有选择地下载Android的源码了。
建议安装如下包:
A. bionic,Android没有用glibc,用的是bionic Libc,但对C++的兼容不好。
命令如下:
https://android.googlesource.com/platform/bionic.git
B. build,其实我们只是要参考Android的一些编译链接选项。
命令如下:
git clonehttps://android.googlesource.com/platform/build.git
C. system/core,其实我们只是要一个头文件,AndroidConfig.h
命令如下:
git clonehttps://android.googlesource.com/platform/system/core.git
D. frameworks/base,如果要进行opengl es 的3D开发,一定要下载这个包,因为opengl es的头文件在这个包中,
命令如下:
git clonehttps://android.googlesource.com/platform/frameworks/base.git
更多Android项目信息请访问https://android.googlesource.com/,大家可根据自已的兴趣选择下载。
(3) 设置环境变量NDK_ROOT
在Cygwin环境中设置Android NDK安装目录环境变量。在Cygwin安装目录的Home/Administrator目录下,有文件“.bash_profile”表示用户的配置文件,在该文件最后增加下面两行
NDK_ROOT=/cygdrive/M/Android/android-ndk-r9d
export NDK_ROOT
其中/cygdrive/M表示Windows下的M盘。上述配置表示设置NDK的安装目录为Windows下的M:\Android\android-ndk-r9d,即Android NDK安装在该目录下。
注意修改这个文件不要使用记事本。记事本会把回车变成0A0D,而Cygwin只需要0A。我是用WinHex这类的二进制工具把最后两行复制进去。然后把0D删除才搞定的。
二、模拟器
1. 模拟器制作
在Android SDK下有个AVD Manager.exe程序,用来制作模拟器。制作的模拟器保存在默认路径或者指定的ANDROID_SDK_HOME目录下。
(1) 确保下面已安装:
(2)Create 一个模拟器 ,
选中新建的ANDROID模拟器,点击Start,然后点击Launch。
2.命令行启动
使用SDK目录下的tools目录下的emulator.exe启动模拟器。如输入命令:
emulator – avd Nexus,其中Nexus为已经制作好的模拟器名称。
命令:emulator – avd Nexus-partition-size 128。表示修改系统分区大小 。
命令:emulator – avd Nexus –sdcard M:\Android\sdcard.img。表示加载指定SD卡。
3.获取模拟器列表
命令adb devices。显示已经启动的模拟器列表 。
注:adb在android-sdk-windows\platform-tools下。
4.指定device来执行adb shell
命令:adb –s devicename shell,如adb –s emulator-5554 shell
emulator-5554为命令adb devices显示的设备名。
5.设置模拟器的/system目录为可写
命令:adb remount
6.文件上传/下载
上传命令:adb push fname /dir(fname和/dir有空格隔开)
把本地文件fname上传到模拟器目录dir。如果是上传到模拟器的system目录,需要先执行adb remount命令。
下载命令:adb pull fname。
把模拟器上的文件fname下载到本地当前目录。Fname为全路径,如/system/build.prop。
默认情况下,SD卡加载在模拟器的目录/sdcard下。
7.设置ROOT权限
通过命令:adb root重启adb,带root权限。
三 编译和运行测试
1.检测环境变量
启动 Cygwin后,输入命令:
echo $NDK_ROO
显示设置的 NDK安装目录环境变量,应该显示:
/cygdrive/ M/Android/android-ndk-r9d
表示环境变量设置正确。
2.编译程序
启动Cygwin后,切换到NDK的例子目录,如输入命令:
cd $NDK_ROOT/tests/build/multi-abi
切换到multi-abi例子目录下,然后编译,输入命令:
$NDK_ROOT/ndk-build
如果编译成功,会在multi-abi目录下生成libs目录,该目录下会有多个目录,如armeabi下就有生成的可执行文件multi-hello。
3.上传及运行程序
首先执行命令:adb remount,切换模拟器/system为可写。
然后执行命令:adb push multi-hello/system/app/multi-hello。
这是需要执行命令修改权限为可执行,命令为:
adb shell chmod 777 /system/app/multi-hello
(注:chmod是改变权限的,0004表示可读,0002表示可写,0001表示可执行。777三个位分别代表文件拥有者、同组用户和其他用户)
最后进入交互的shell,执行命令:adb shell
这是进入到模拟器命令行模式,运行程序,命令:/system/app/multi-hello
8.其他 adb命令
(1)指定设备
在adb命令加参数-s并指定设备名称,如adb-s emulator-5554 remount
(2)服务
启动adb start-server。
关闭 adb kill-server
(3) 安装/卸载程序
安装:adb install xxx.apk
卸载:adb uninstall 包名(如org.oger3d.gles1Sample),加-k参数表示保留数据和缓冲目录。
重新安装 adb install –r xxx.apk
(4)切换到模拟器shell ,即命令adb shell
然后输入getprop命令,可查看所有模拟器信息。
输入 getprop ro.product.cpu.abi可以查看系统abi
四、Codeblocks配置
1.下载并安装CodeBlocks
下载地址:http://www.codeblocks.org/downloads/26
版本:codeblocks-13.12mingw-setup-TDM-GCC-481.exe或codeblocks-13.12mingw-setup.exe
2.环境变量设置
通过菜单“Settings ->Environment选择弹出环境变量配置
增加以下环境变量:
ANDK=M:\Android\android-ndk-r9d (NDK安装目录)
AARMTOOLS=$(ANDK)\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64
AARM=$(ANDK)\platforms\android-19\arch-arm
CYG=M:\Android\Cygwin
ASDK=M:\Android\android-sdk-windows
3. 编译器配置
通过菜单“设置->Compiler,选择弹出编译器配置界面
在编译器列表中选择GNU ARM GCC Compiler编译器进行配置,也可以复制一份
GUN ARM GCC Compiler For Android。
(1) 设置工具链Toolchain
(A) 将“可执行工具链”页的编译器安装目录设置为toolchain的目录:$(AARMTOOLS),该目录应该包含bin等子目录。
(B) 配置“可执行工具链”页程序文件所有exe,选择A中bin目录下对应的程序便可。
(C) 在“可执行工具链”页的附加路径加入Cygwin的bin目录,因为toolchain是用Cygwin构建的,需要Cygwin的运行库。
(D) 在“搜索目录”页的编译器中加入Toolchain的头文件目录,如$(AARMTOOLS)\lib\gcc\arm-linux-androideabi\4.8\include和$(AARM)\usr\include
(E) 在“搜索目录”页的链接器中,加入$(AARM)\usr\lib
(F) 将$ (AARM )\usr\lib下的lib复制到$(AARMTOOLS )\arm-linux-androideabi\lib
(2) 设置调试器
(A) 选择菜单:设置——Debugger,GDB/CDB debugger——Create Config,
创建一个Android调试器
配置Executable path为 $(AARMTOOLS)\bin\arm-linux-androideabi-gdb.exe
(B) 配置“可执行工具链”页调试器为Android调试器,如上图所示。
(3) 创建工程
(A) 创建TestC和TestCpp工程,分别为C和C++工程的控制台程序。使用GNU ARM GCC Compiler For Android 编译器。
(B) 在构建前后的附加步骤中的构建之后的步骤,增加以下内容,并选中即使目标是最新的也总是执行。
$(ASDK)\platform-tools\adb forward tcp:8888tcp:8888
$(ASDK)\platform-tools\adb.exe push$exe_output /data
$(ASDK)\platform-tools\adb.exe shell chmod777 /data/$exe_name.$exe_ext
C:\Windows\system32\cmd.exe /c start $(ASDK)\platform-tools\adb.exeshell gdbserver :8888/data/$exe_name.$exe_ext
(4)在项目/目标选项调试器中将IP地址改为127.0.0.1,端口为8888。
(5) 为了正确编译C++工程,对编译器搜索路径中:
编译器增加:$(ANDK)\sources\cxx-stl\gnu-libstdc++\4.8\include
$(ANDK)\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi\include
链接器增加:$(ANDK)\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi
链接器设置——链接库:$(ANDK)\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi\libgnustl_static.a