Windows下开发Android-NDK的完整步聚简介

Windows下开发Android-NDK的完整步聚简介。

我被这玩意拆腾得好烦,资料来源于网上,作了一番整理。



步骤一:搭Android开发环境
* 打开 http://developer.android.com/  ,下载集成android SDK的 Eclipse版本
* 打开  http://www.java.com/  , 下载最新版本对应的 JDK。注意,是JDK,不是JRE
安装完后,配置好JAVA_HOME路径,打开Eclipse,新建一个 Android Application Project ,直接运行。
如果成功,则会打开一个 Android 模拟器,显示helloworld。
如果上面步骤不成功。。。则要搞到成功为止才能进行下一步。。。




步骤二:安装cygwin
到 http://www.cygwin.org/  下载 cygwin 的setup程序。建议下载32位的setup程序。
双击 setup.exe,在弹出框中,一直点选 next。直到 select pacekes 框出现。
展开 Devel(Default)节点,在子节点里,勾选如下节点:
binutils, gcc-core, gcc-g++ (c++), gdb, libargp, libatomicl, libgcc1, libstdc++6, make, mingw-binutils, mingw-gcc-core, mingw-gcc-g++(C++), mingw-runtime
然后点击 next,等待安装 完成。完成 后, 会弹出一框,问你是否把 cygwin 的启动程序加到 桌面,点“是”,不然你可能会找不到入口的。。。
点击桌面 cygwin 图标,能成功打开 cygwin 控制台窗口,说明 cygwin安装成功了。
Cygwin的安装步骤可以到网上搜一下,会有更详细的说明。


这一步必须成功!不然后面不用搞了。




步骤三:下载NDK,并编译ndk里面的hello-jni

http://developer.android.com/tools/sdk/ndk/index.html 下载32位的NDK。

解压到 某个目录。

用文本编辑器打开cygwin目录下.bash_profile文件 {cygwin}/etc/skel/.bash_profile
在最后面加入这两行:
------------------------------
NDK=/cygdrive/D/android-ndk-r9d
export NDK
------------------------------
上面的“D/android-ndk-r9d”,就是你的NDK安装目录,按实际情况写入你的路径。

打开cygwin,输入“cd $NDK”,如果输出上面配置的“/cygdrive/D/android-ndk-r9d”信息,则表明环境变量设置成功了
然后输入“cd /cygdrive/d/android-ndk-r9d/samples/hello-jni”,进入到“D:\android-ndk-r9d\samples\hello-jni”目录。

再输入“$NDK/ndk-build”,成功的话则在当前目录下生成 libs 文件夹。


注:如果执行$NDK/ndk-build出现/ndk-build: No such file or directory错误的话,请查看cygwin\bin下面是否有make.exe,如果没有的话,重新点击setup文件,然后【Select Packages】页面中点击【View】,然后再Search中输入make,找到make的安装包,再点击下一步安装就OK了。




步骤四:apk里调用jni

打开Eclipse,新建一个 Android Application Project,
Application Name 填入:“HelloJni”
Packages name  填入:“com.example.hellojni”
一路next直到finish。

----------------------------
请务必按照我所说的名字去填入!!!
----------------------------

复制这个文件 {ndk}\samples\hello-jni\src\com\example\hellojni\HelloJni.java
粘贴到 Eclipse工程src目录下的 com.example.hellojni ,替换掉原来的 HelloJni.java。

Eclipse工程 新建一目录名为“jni”,在这目录下新建一个文件 名为:“Application.mk”
往里面写入如下几行。

APP_STL := gnustl_static
APP_CPPFLAGS += -fexceptions -frtti
APP_PLATFORM := android-8
APP_ABI := armeabi armeabi-v7a mips x86
APP_OPTIM := release


部分参数其实是不必要的,不过还是写全一点好)

把刚编译生成的整个libs 目录 (  {ndk}\samples\hello-jni\src\com\example\hellojni\libs ),复制到eclipse工程目录下。直接复盖就行了。


现在你的eclipse工程目录结构,看起来类似如下:


HelloJni
 src
 jni
  Application.mk

 libs

       armeabi-v7a

            libhello-jni.so

 res
 AndroidManifest.xml

全部完成了,编译运行吧!


更详细的NDK和Jni相关的调用原理和规则,请参考网上相关资料。



注意!

*  c文件中,写入中文 或 输出含中文的字符串,请用记事本另存 c 文件 为 utf-8 编码,重新build即可。

*  如果出现 unknown type name 'bool' 。请把 hello-jni.c 更名为 hello-jni.cpp

   并且 修改  Android.mk 的对应项为:LOCAL_SRC_FILES := hello-jni.cpp。还要在 JNI_OnLoad 上注册,不然会找不到函数 。( 如果函数名称已经包含了注入的Activity包路径,可以不用写OnLoad)

*  NDK默认是只支持很原始的C语法,新的c99语言法,需要在 Android.mk中加入LOCAL_CFLAGS    := -std=c99

    还有一些看起来并不高级的switch语句,c99也不支持,那只能改文件名为cpp。NDK检测到cpp后缀就会自动调用 g++ 编译。


  





猜你喜欢

转载自blog.csdn.net/RoadToTheExpert/article/details/25313893