记录下以备忘:
android开发的各种资源国内镜像
http://www.androiddevtools.cn/
前端时间尝鲜用android stuido1.5开发了个android的小项目,发现android studio还是蛮好用的,特别是代码提示这块比eclipse 强大多了,还有就是ndk的开发比eclipse方便,但是自从升级到android stuido2.x以后ndk的开发就有问题了,代码没提示了,能编译通过,貌似这个是这个ide的bug,目前最新版本还没解决,如果需要修改native的代码还要切换到1.5的studio,感觉很烦。所以研究下了eclipse开发ndk的方法,特备注下以备忘。
注意:一下操作是建立在你已经有android 的sdk 和ndk的前提下。
(1)首先下载ADT Bundle,ADT Bundle包含了Eclipse、ADT插件和SDK Tools,是已经集成好的IDE,只需安装好Jdk即可开始开发,推荐初学者下载ADT Bundle,不用再折腾开发环境。
下载地址:23.0.2 64位
(2)下载完成后你懂的,直接解压,并指定android sdk的路径,但是你会发现没有配置ndk目录的选项,那是因为没有安装ndk的插件,安装ndk的插件后选择ndk安装目录即可,选择目录是会出现所选的目录无效的问题,那就在ndk目录新建一个ndk-build的空文件,刷新即可。
下面再配置eclipse自动刷新编译c,c++资源
(3)打开Eclipse,新建一个Android工程(我的取名为TestNdk),在工程目录TestNdk下新建jni文件夹,该文件夹就用来保存NDK需要编译的文件代码等。
(4)新建并配置一个Builder:
(a)Project->Properties->Builders->New,新建一个Builder。
(b)在弹出的【Choose configuration type】对话框,选择【Program】,点击【OK】:
(c)在弹出的【Edit Configuration】对话框中,配置选项卡【Main】。
在“Name“中输入新builders的名称(我取名为Ndk_Builder)。
在“Location”中输入nkd-build.cmd的路径。
(我的是D:\AndroidDev\android-ndk-r7\ndk-build.cmd,根据各自的ndk路径设置,也可以点击“Browser File System…”来选取这个路径)。
在“Working Diretcoty”中输入${workspace_loc:/TestNdk}(也可以点击“Browse Workspace”来选取TestNdk目录)。
(d)【Edit Configuration】对话框中,配置选项卡【Refresh】。
勾选“Refresh resources upon completion”,
勾选“The entire workspace”,
勾选“Recuresively include sub-folders”。
(e)【Edit Configuration】对话框中,配置选项卡【Build options】。
勾选“After a “Clean””,
勾选“During manual builds”,
勾选“During auto builds”,
勾选“Specify working set of relevant resources”。
点击“Specify Resources…”
勾选TestNdk工程的“jni“目录,点击”finish“。
点击“OK“,完成配置。
OK,到这里Eclipse就能够自动调用NDK编译jin目录下的C/C++代码了。
(5)将ndk的安装目录设置到系统环境变量中
(6)一个完整可以运行的demo,jni目录下有个autojavah.bat的文件,设置下路径点击即可生成.h头文件。(到这步可以顺利编译通过了,如果你不需要代码提示,到这步就行了。
需要代码提示继续下面两步:
(7)右击项目选择Anroid Tools,然后将项目Add Native Support,然后发现编译无法通过了。
(8)
Type '*****' could not be resolved
Method '******' could not be resolved
等等很多诸如此类的错误
解决方法:
是由于没有将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.
最后Apply -> OK
这样错误就解决了。
如果添加了头文件还是问题,那可能是因为工程是C++工程,但代码是用的C风格的代码,解决方法为将工程文件".project"中的“<nature>org.eclipse.cdt.core.ccnature</nature>”行去掉保存,重新打开Eclipse工程。参见:
http://stackoverflow.com/questions/11666711/type-jint-could-not-be-resolved-and-jnienv-jclass
还有一种方法:在extern "C"的大括号中加入#incldue <jni.h>