您的位置:首页 > 编程语言 > Java开发

怎样实现在Eclipse中开发NDK?

2013-03-05 16:40 302 查看
1.   新建Android项目

如project1,项目Location:位于android工作目录下;

2.编写Android项目java代码,调用JNI层,包含两点

  1)static
{

          try {

               System.loadLibrary("project1"); //加载jni

            } catch (UnsatisfiedLinkError ule) {

                System.err.println("WARNING: Couldnot load library!");

           }

    }

2)native函数

    如:public
staticnative String getString();

3.获取.h文件(执行javah)

 1)在项目bin目录下找到对应类的.class文件,对.class文件执行javah

 2)javah
_classpath.class所在路径–d
.h生成的目录 .class所在的包名.类名

   如:javah _classpath
E:\project\workspace\workspace2\project1\bin\classes  -d E:\project\workspace\workspace2\project1\bin\classes\com\example\project1 com.example.project1.MainActivity

 3)根据.h文件(JNI头文件),编写JNI代码

JNIEXPORT jstring JNICALL

Java_com_example_project1_MainActivity_getString(JNIEnv *, jclass);

4.编写JNI代码

 1)找到你的ndk安装目录,如D:\Java\android-ndk-r8d\samples,在samples目录下新建一个文件如project1,在此文件中新建两个文件:jni和src;

 2)src可以为空,jni中编写native函数和Android.mk文件

 如:native函数

      Project1.c

    #include "jni.h"

     #include <stdio.h>

     #include <string.h>

     #include <android/log.h>

     
   #define LOG_TAG  "PROJECT1"
     #define LOGI(...)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)

    

   JNIEXPORT jstring JNICALLJava_com_example_project1_MainActivity_getString

       (JNIEnv *env, jclass jcls)

     {

         LOGI(“ PROJECT1_getString In ”);

         return(*env)->NewStringUTF(env,”SUCCESS GET INFORMATION !”);

     }

 

   Android.mk

   LOCAL_PATH := $(call my-dir)

   include  $(CLEAR_VARS)

   LOCAL_MODULE   :=project1

   LOCAL_SRC_FILES := project1.c

   LOCAL_LDLIBS += -llog
   include  $(BUILD_SHARED_LIBRARY)

3) ndk运行生成动态库.so

    运行安装目录下的“Cygwin.bat”,在运行“Cygwin.bat”打开的命令行窗口输入:

    cd $ndk

    (目的,找到要运行程序的路径,此时默认进入了ndk安装目录D:\Java\android-ndk-r8d)

    1.运行:cd$ndk/samples/hello-jni

    2.编译:$ndk/ndk-build

    3.到”…/hello-jni/libs/armeabi“目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦!

5.整合Android项目和ndk开发(生成.so这部分)

   1)把Android项目拷贝到D:\Java\android-ndk-r8d\samples目录下,把刚才的ndk环境的project1文件下的子目录都拷贝到Android项目下,通src一个目录级别;

   2)在Eclipse中导入此整合后的Android项目,注意保持此时ndk工作目录,不要把此项目导入到Eclipse的工作目录下;

6.运行Eclipse即可执行代码

7.如果修改了jni中project1.c的代码

  1)重新执行<ndk运行生成动态库.so>

   2)Eclipse中要执行Project/Clean此项目

   3)再次运行Android项目即可

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android NDK