androidndk r10环境搭建.docx
- 文档编号:8975192
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:11
- 大小:1MB
androidndk r10环境搭建.docx
《androidndk r10环境搭建.docx》由会员分享,可在线阅读,更多相关《androidndk r10环境搭建.docx(11页珍藏版)》请在冰豆网上搜索。
androidndkr10环境搭建
1)打开Android开发者的官网
2)进入后再点击Tools
3)进入后在左侧找到NDK点击,可以见到各种平台的NDKr10,选择需要的下载。
5)解压下载的android-ndk32-r10-windows-x86_64.zip,将其放到你想要的目录下。
注:
R7之前的版本,必须要安装Cygwin才能使用NDK。
从R7开始,Windows版本的NDK提供了一个ndk-build.cmd脚本,可以直接利用这个脚本编译。
想要做到这一点,只要为EclipseAndroid工程添加一个Builder,就能实现Eclipse的自动编译NDK,这一点在后面的步骤会有介绍。
6)NDK实例的实现
启动Eclipse,新建Android工程(此处名为TestNDK),如图所示:
7)在TestNDK工程的根目录下新建文件夹jni,之后找到NDK的安装目录(sampleshello-jnijni)下的Android.mk和hello-jni.c这两个文件,将其拷贝到TestNDK->jni文件夹下面。
注:
如果你很好奇jni文件夹里的hello-jni.c里的函数命名如此刁钻,是怎么写的,并且你如果你想的更远,已经在考虑自己以后怎么写这种文件,那么我告诉你它里面的函数命名是直接粘贴的一个头文件里的内容。
这个头文件可以通过反编译下边提到的HelloJni.java得到。
如果你以后要确实要进行NDK开发,那么你肯定要掌握反编译的方法。
为了你能够少走弯路,推荐我的另一篇文章《1分钟攻克NDK开发中javah不能反编译的问题》,链接网址。
8)找到NDK的安装目录(sampleshello-jnisrccomexamplehellojni)下的HelloJni.java文件,将其拷贝到TestNDK工程src文件夹对应的包下。
9)修改项目文件AndroidManifest.xml,将activity标签下的android:
name=“com.zhw.testndk.MainActivity”修改为android:
name=“com.example.hellojni.HelloJni”。
(注:
此处的
TestNDKACtivity为项目自动生成的,项目不同,此处也会不同)
10)新建并配置一个Builder
点击Project->Properties->Builders->New,新建立一个Builder。
在弹出的对话框上面点击Program,OK!
如图所示
在弹出的对话框【EditConfiguration】中,配置选项卡【Main】:
Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。
WorkingDiretcoty中需要填入TestNDK的工程根目录。
如图所示:
注:
不要漏了
配置选项卡【Refresh】,如图所示:
勾选“Refreshresourcesuponcompletion”,
勾选“Theentireworkspace”,
勾选“Recuresivelyincludesub-folders”。
配置选项卡【BuildOptions】,如图七所示:
勾选“Aftera“Clean””,
勾选“Duringmanualbuilds”,
勾选“Duringautobuilds”,
勾选“Specifyworkingsetofrelevantresources”。
点击“SpecifyResources…”勾选TestNDK工程的“jni“目录,Finish!
当在console里面看到如图八所示的信息,则表示一切正常,此时就已经是自动编译代码了。
注:
如果不成功:
Project->clean->选择工程->点击OK
假如你使用的是NDK-R9版本中的例子,你在console里面会看到比上图要多的编译信息,截图如下
这时候你要检查一下工程根目录下的libs目录下的子目录,要删除libs中多余的子文件夹,只留下armeabi文件夹和以jar为后缀名的jar包。
10)右键点击工程TestNDK,RunAs->AndroidApplication,运行程序。
当出现图所示信息时,NDK实例运行成功!
如果程序运行出错,显示“应用程序**(进程:
com.example.***)意外停止,请重试”的错误提示
这个错误产生的原因极有可能是你的JNI文件的命名或包的声明写错了。
查一下程序运行的日志logcat,显示错误为“java.lang.UnsatisfiedLinkError:
stringFromJNI”,说的是Java层调用本地方法stringFromJNI时,却没有找到这个本地方法,所以除了错。
那么Android虚拟机怎么查找这个本地方法的呢?
先说一下Android工程的环境:
包名称是com.example.testndk,应用名称是HelloJni,如果Java层调用了本地方法StringstringFromJNI(),那么Android虚拟机就会由这三个变量生成一个名字:
jstringJava_com_example_testndk_HelloJni_stringFromJNI(JNIEnv*env,jobjectthiz),并在本地方法中严格按照这个名字查找同名的本地方法。
如果找不到,就会返回上图的错误。
所以要确认一下JNI文件的命名或包的声明是否与Java文件中的一致。
在本地文件(即C或C++文件)改正此错误后,运行,正常显示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- androidndk r10环境搭建 r10 环境 搭建