现在NDK 的使用开始越来越多了,有部分公司的面试要求里开始出现要会这个,所以自己也开始尝试着再次搭建这个环境,确实这个环境是比较麻烦的,但比起前几年简单了很夺多。主要是ADT开始有集成版本(虽然现在的趋势是studio,官网也开始不提供adt-bundle的下载了)但是还是这个用的比较顺手点。并且在ndk-r7后win跑ndk不需要cygin模拟环境了,简单了不少。
具体的环境搭建首先是搭建安卓环境,参考很多,我自己写的就可以:Android win Linux环境搭建
接下来的步骤主要就是去官网下载最新的ndk,然后在eclipse中把ndk的路径指到对应的解压路径。
可以参考以下几个博客:
http://jingyan.baidu.com/article/3ea51489e7a9bd52e61bbac7.html
http://jingyan.baidu.com/album/5d6edee22d908799eadeec9f.html
http://blog.csdn.net/houshunwei/article/details/17217695
本篇主要记录的是一些遇到的问题:问题答案是到处找到的,不一一注明了
1、我使用的adt-bundle-windows-x86_64-20140702 这个集成环境是没有ndk这个选项的。
解决:在eclipse的install new soft中安装对应的adt
更新adt:https://dl-ssl.google.com/android/eclipse/
本地更新的话去官网先下载好:ADT-23.0.4
然后:
选择菜单栏上的[Window->Perferences->Android->NDK]设置 NDK Loaction 为D:\Android\android-ndk-r10d;
2、看不到C/C++ Build选项
需要右键点击项目在Android Tools里面点击"Add NativeSupport"就会出现.
3、ndk c文件报错
(另外如果是报文件错误,是由于cdt默认是cpp格式 参照以下的方法也可以解决)
是由于没有将jni.h导入的缘故,而这个文件在ndk的目录下面。所以,参照以下步骤:
Project Properties -> C/C++ General -> Path and Symbols
选择include标签,Add -> $Android_NDK_HOME/platforms/android-14/arch-arm/usr/include
注意用这个相对路径有时不行改成:绝对路径
且选中All languages. (这个选项的位置在add的时候弹出的复选框)
最后Apply -> OK
还要不行的话关掉c/cpp的代码检查,因为编译是ndk工具在编不是eclipse在编是可以关掉的:
工程 -> properties -> c/c++ General -> code Analysis - > use project settings 把不想要的沟掉
4、自动生成h文件
Java native interface 按照一套名字给java的函数命名。看HelloJni这个Demo也能看出一些门道,详细的参见规范文档。
说说使用javah自动生成.h文件
a) 保证javah 在环境变量内,这个脚本在jdk的安卓包内
b) 提示 错误: 找不到 'com.example.hellojni.HelloJni' 的类文件。或者找不到类文件。
使用如下命令即可
F:\android_workspace\HelloJni\bin>javah -d heafer -classpath F:\android\adt-bundle-windows-x86_64-20140702\sdk\platforms
\android-18\android.jar;classes -jni com.example.hellojni.HelloJni2
说明:切换到当前bin目录,下一级是classes
其中的参数可以参考:http://www.cnblogs.com/icejoywoo/archive/2012/02/22/2363709.html
付带记录下这次遇到的另外两个问题:
faq:显示两个手机
1、运行 adb
先 kill-server, 再 start-server。然后再 adb devices ,多半会列出设备来。
2、打开Eclipse 进行调试,看是否显示 提示选中设备。 如还是不行,在手机上 输入 : *#*#717717#*#*,
进行拨打,目前就是 Enable usb Port, 运行USB 端口打开之意。如果再次输入,就关闭了。
faq:看不到Android manager update
window -> Customize perspective 勾选上Android SDK and AVD Manager