windows下android NDK 环境配置

0、下载jdk并配置环境变量

下载最新jdk,百度搜索“jdk”就有了。安装完成后,配置环境变量(网上一搜,一堆,我这里仅作简要叙述)

  1.    计算机→属性→高级系统设置→高级→环境变量。
  2. 系统变量→新建 JAVA_HOME 变量 。变量值填写jdk的安装目录(本人是 D:\Program Files\Java\jdk1.7.0_45)
  3. 系统变量→新建 CLASSPATH 变量

    变量值填写   .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)

  4. 系统变量→寻找 Path 变量→编辑

    在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

    (注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)

    系统变量配置完毕

1、官网下载最新的ADT。 解压即可(eclipse最好自带ndk插件)

2、官网下载最新的NDK。解压即可(ndkr7以上有自带cygwin)

3、eclipse没有自带插件,则下载插件。

插件网上有,我作为自己学习,也在百度云共享了一份,下载地址:http://pan.baidu.com/s/1i3xImQp

下载好插件放到eclipse下的plugins文件夹下。重启eclipse。

4、重点开始

eclipse→window→preferences→Android→NDK

配置刚刚下载的ndk的路径

5、新建android 项目

  右击→properties→C/C++ Build 。去掉默认的build command

  设置成${NDKROOT}/ndk-build.cmd

再到build Variables 点击add。配置如图.name:NDKROOT  value:你的ndk路径。点击确定。

6、项目右键->Android Tools->Add Native Support...,输入.so库名字后点击Finish

7、现在已经可以Build我们的Jni项目了,选择项目,Project->Build Project,编译我们的c/c++代码,此时项目结构如下,NDK plugin已经为我们添加好了include,已经为我们生成了相应的Android.mk以及 cpp文件。(注意:这里插件为我们生成的是cpp文件,若你不喜欢可以改回.c,并在mk文件中进行相应更改)

8、可以运行我们的Jni项目了。

遇到的问题

1、运行c++生成的.so库,若报以下错误:(既找不到函数)

No implementation found for native Lcom/example/hellojni/MainActivity;.stringFromJNI ()Ljava/lang/String;

java.lang.UnsatisfiedLinkError: stringFromJNI

at com.example.hellojni.MainActivity.stringFromJNI(Native Method)

解决方法:

为供Java调用的c++函数前加入extern "C" 修饰,如:(NDK example里面的cpp文件也是这么声明的,参考hello-gl2)

[java] view plaincopy

  1. extern "C" {
  2. JNIEXPORT jstring JNICALL Java_com_dgut_android_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz );
  3. }
  4. JNIEXPORT jstring JNICALL Java_com_dgut_android_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz )
  5. {
  6. return env->NewStringUTF("Hello from JNI bear c++");
  7. }

原因是:

被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。

首先看看C++中对类似C的函数是怎样编译的:作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:void foo( int x, int y );该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。_foo_int_int这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。例如,在C++中,函数voidfoo( int x, int y )与void foo( int x, float y )编译生成的符号是不相同的,后者为_foo_int_float。
        同样地,C++中的变量除支持局部变量外,还支持类成员变量和全局变量。用户所编写程序的类成员变量可能与全局变量同名,我们以"."来区分。而本质上,编译器在进行编译时,与函数的处理相似,也为类中的变量取了一个独一无二的名字,这个名字与用户程序中同名的全局变量名字不同。

因此,若我们没有使用extern "C"修饰函数,按照C语言方式编译和连接,Jni调用将可能找不到该函数。

windows下android NDK 环境配置

时间: 2024-10-22 18:43:17

windows下android NDK 环境配置的相关文章

Windows下Android开发环境配置

最近在配置安卓. 还是拿舍友没带回家的手机.. 自己手机是WP.. 搞了半天搞好了. 叹了口气,要是有人这样教我就好了,少走好多弯路. 废话不说,步骤如下" 一.安装JDK 为啥要安装JDK就不说了吧?java写安卓.. 传送门: http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装完后,配置环境变量: 右击 "我的电脑"->属性->高级->环境变量->系统变量-&g

Linux下Android NDK环境配置以及配合eclipse使用NDK

最近由于项目中经常用到jni,在这里将使用jni不步邹分享给大家! 一.下载NDK http://developer.android.com/sdk/ndk/index.html 目前最新版本是r8(android-ndk-r8-linux-x86.tar.bz2) 二.配置环境 从r7版本开始,Linux下直接解压就可以使用,在windows下cygwin也已经集成在NDK里面了,解压完配置下环境变量就可以使用了. 在~/.bashrc(Linux下配置环境变量的文件)文件末尾加上: expo

【转】Windows环境下Android NDK环境搭建

原文网址:http://www.metsky.com/archives/525.html 前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底层设备.接口.驱动控制的应用开发,不得不使用到本文的NDK开发环境(基于Android源码或内核源码修改),开发语言使用C/C++,NDK开发更接近于Linux开发,需要更多关于Linux应用编程知识.本文就介绍一

Windows环境下Android NDK环境搭建

前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底层设备.接口.驱动控制的应用开发,不得不使用到本文的NDK开发环境(基于Android源码或内核源码修改),开发语言使用C/C++,NDK开发更接近于Linux开发,需要更多关于Linux应用编程知识.本文就介绍一下NDK环境搭建及基础编程思想. 本文演示环境:Windows 7 Ultimate+Cy

windows下spark开发环境配置

http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. 特注:windows下开发spark不需要在本地安装hadoop,但是需要winutils.exe.hadoop.dll等文件,前提是你已经安装了eclipse.maven.jdk等软件 spark支持jdk版本建议是1.8及以上,如果开发spark建议将jdk编译版本设置为1.8 我选择的spark是spark-1.4.0

[傻瓜版] Redis在Windows下的开发环境配置步骤

redis默认运行在unix体系下,windows无法直接运行官方版.以下是几种解决方案, 一)Windows移植版.启动速度飞快,优先推荐使用. a) 2.6.12 是稳定版,我用来64位版做开发环境,数个月未发现重要问题.  下载地址: https://github.com/MSOpenTech/redis/tree/2.6/bin/release b) 2.8.4 是3月24发布的最新版,此版本运行时会临时占用内存大小的硬盘空间,下载地址: https://github.com/MSOpe

【Objective-C】Windows下Objective-C开发环境配置

[Objective-C]Windows下Objective-C开发环境配置 ftp://ftpmain.gnustep.org/pub/gnustep/binaries/windows/ 最近打算针对iPhone.iPod touch和iPad开发一些应用,所以,需要开始学习Objective C(苹果推出的类似C语言的开发语言).由于苹果的自我封闭的产业链发展模式(从芯片.机器.开发语言.终端产品.服务)的限制,要想开发针对苹果 iPhone等产品的应用程序,就需要用Mac机器,在Xcode

windows下python+flask环境配置详细图文教程

本帖是本人在安装配置python和flask环境时所用到的资源下载及相关的教程进行了整理罗列,来方便后面的人员,省去搜索的时间.如果你在安装配置是存在问题可留言给我. 首先罗列一下python+flask环境所用的一些程序组件的下载地址: 1.python语言环境: http://www.python.org/download/ . 2.setuptools 组件: https://pypi.python.org/pypi/setuptools/0.9.6 . 3.pip 组件: https:/

一、android ndk环境配置

注意:NDK插件:用于开发Android NDK的插件,ADT版本在20以上,就能安装NDK插件,另外NDK集成了CDT插件. NDK版本在r7以上之后就集成了Cygwin,而且还是十分精简版.比起下载Cygwin要方便多啦! 1.本文针对的读者 android sdk 更新到 r23 时,eclipse 自带 adt版,里面并没有设置ndk的路径,从而导致了在ndk配置方面的难度.本文主要适合: ① 使用 android sdk r23 20140702 的朋友 ② 使用 android nd