一.环境准备:

1.Cygwin:对于网速较慢的孩子,可以直接下载一个简约版: http://www.wishdown.com/soft/52987.html

2.安装完毕后(笔者安装路劲为:E:\Android\Cygwin\setup)

  1) 修改 E:\Android\Cygwin\setup\etc\defaults\etc\skel \.bash_profile

     增加2行:
       NDK=/cygdrive/E/Android/NDK/android-ndk-r9d
 export NDK
   2)同时也要修改 E:\Android\Cygwin\setup\home\lenovo\.bash_profile,增加 第一步的2行

    注意:如果没有Home目录::进入环境变量设置,删除用户环境变量home,重新 运行即可产生 

3.android-ndk



二.

1.新建一个Android工程HelloWorld,包名为com.apxar.hello

2.工程中:新建一个类HelloAndroidNDK

代码如下,保存


package com.apxar.hello;public class HelloAndroidNDK {//静态代码块,在加载类的时候会执行static{System.loadLibrary("HelloMyNDK");}//声明加载C库的本地方法native String sayHello();}
3.Android工程OnCreate函数中添加:

            HelloAndroidNDK ndk=new HelloAndroidNDK();                Toast.makeText(this, ndk.sayHello(), Toast.LENGTH_LONG).show(); 


3.生成 头文件

    1)在工程根目录新建一个jni的目录

    2)命令行下:cd 进入jni目录

    3)使用javah -classpath  D:\android\workspace\HelloWorld\bin  com.apxar.hello.HelloAndroidNDK   //D:\android\workspace\HelloWorld\bin为class的根目录,后面参数                  class的名字,

    4)此时在jni目录中将生成com_apxar_hello_HelloAndroidNDK.h头文件

4.编写C语言程序,实现.h头文件:com_apxar_hello_HelloAndroidNDK.c

#include "com_apxar_hello_HelloAndroidNDK.h"JNIEXPORT jstring JNICALL Java_com_apxar_hello_HelloAndroidNDK_sayHello   //这个函数的定义在头文件中已经定义好  (JNIEnv *env, jobject obj){  return (*env)->NewStringUTF(env,"Hello Apxar");}
5.编写Android.mk

1).从ndk中复制出一份样版(本人的目录为E:\Android\NDK\android-ndk-r9d\samples\hello-jni\jni中复制Android.mk)

2).复制到Android工程的jni目录中

3).修改Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := HelloMyNDK   //名称要与:  System.loadLibrary("HelloMyNDK")中的一样
LOCAL_SRC_FILES := com_apxar_hello_HelloAndroidNDK.c   //我们的C语言文件
include $(BUILD_SHARED_LIBRARY)

6.编译链接c程序:

1).在Android-ndk的Samples目录下,新建一个文件夹MyNdkProject 用于存在工程

2).复制Android工程到MyNdkProject 目录下

3).打开Cygwin Bash Shell:

  命令:

     1)cd $NDK  //进入NDK目录

     2)cd samples\MyNdkProject

     3)ndk-build

7.Eclcipse重新导入MyNdkProject 中的工程HelloWorld, 工程中多出了libs/armeabi/LibHelloMyNDK.so文件

8.运行


总流程:  创建Android工程->   创建包含nativ本地方法的java类 -> javah工具  class生成.h到jni目录   ->   编写.c-   >   修改Android.mk   ->  编译链接ndk-build  ->android调用该类的方法

更多相关文章

  1. 关于android avd目录的设置
  2. Android(安卓)生成keystore,两种方式 【包括Mac下制作】
  3. Android开发手记--环境配置
  4. Android(安卓)生成keystore,两种方式 【包括Mac下制作】
  5. Android入门教程(四)之------Android工程目录结构介绍
  6. Android(安卓)SDK目录结构介绍
  7. 创建Android工程
  8. android内部外部存储卡路径的获取
  9. 反编译介绍

随机推荐

  1. 开机自启动3
  2. android 读取联系人
  3. 2.4.11 网格视图和图像切换器
  4. android编译时添加库第三方库文件
  5. 2.4.10 可展开的列表组件
  6. android 蓝牙
  7. 代码中设置drawableright
  8. android 获取系统硬件信息
  9. Android(安卓)实现文件的下载
  10. 学习Android动画小结