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

eclipse NDK 配置;

2012-08-20 12:42 197 查看
1.  Eclips添加Google 提供的 NDK 最新版工具 ndk-build.com

 a. 需要添加 ../ndk 到环境变量

 b.   首先新建一个工程 NDKTest

 Project(你自己建的工程)->Builders->new->Program

  1)Name 自己添加

 2)Location:选择 E:\Android\ndk\ndk-build.cmd (ndk下的build.cmd)

 3)Workding Directory :选择你自己的工程(如:${workspace_loc:/HelloJni/src/com/example/hellojni})

 4)Refresh 选项卡:勾选Refresh resources upon completion,  The entire workspace,   Recursively include sub-folders

 5)Build Option 选项卡:勾选 Allocate Console ,  After a Clean, During manual builds

至此Eclipse 配置完成;

2. Eclips添加cygwin来编译jni

   a. 需要添加cygwin/bin 的环境变量;

   b. 其它设置同1,在main 窗口设置
Location:  C:\CygwinPortable\App\Cygwin\bin\bash.exe
Workding Directory: ${workspace_loc:/com.example.hellojni.HelloJni}
Arguments:   --login -c "cd /cygdrive/e/android/code/com.example.hellojni.HelloJni && $NDK/ndk-build"    
为路径名,最后这个一定要更改

3.  

   a)在工程下面新建 jni 文件夹

  b) 修改activity 

public class MainActivity extends Activity
{

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = new TextView(this);
tv.setText(stringFromJNI());
setContentView(tv);
}

public native String stringFromJNI(); // c 函数

public native String unimplementedStringFromJNI();

static
{
System.loadLibrary("NDKTest"); // 加载库方式
}
}

  函数  public native String stringFromJNI() 则是要调用的C语言函数,编译工程,此时编译工程会出错;

  c) 用命令行方式进入 项目根目录, 执行 javah -jni -classpath bin/classes  -d jni  com.example.ndktest.MainActivity(此处必须包含报名)   ,那么根据bin/classes 目录下的.class文件 会在 jni 目录下生成 com_example_ndktest_MainActivity.h 

这个.h 文件,该文件方便来写.c 程序,可以获得函数类型及其参数,当然此步熟悉的话可以不做;

为了方便建2个.bat文件, cmd.bat :@call cmd.exe  ; jni.bat : javah -jni -classpath bin/classes  -d jni  %1 %2;

       那么执行的时候,先运行 cmd.bat,然后 jni  com.example.ndktest.MainActivity 即可

 d)  编写jni 程序

      i:在jni文件夹下建 Android.mk 
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := NDKTest
LOCAL_SRC_FILES := ndk_test.c
include $(BUILD_SHARED_LIBRARY)

ii: 建立 ndk_test.c
#include <string.h>
#include <jni.h>
#include "com_example_ndktest_MainActivity.h"
// 此处函数为了方便,从com_example_ndktest_MainActivity.h 获得
// JNIEXPORT jstring JNICALL Java_com_example_ndktest_MainActivity_stringFromJNI (JNIEnv *, jobject);
// 去掉函数声明的
// JNIEXPORT
// JNICALL

jstring
Java_com_example_ndktest_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}

  然后编译工程,将生成一个libs\armeabi\libNDKTest.so 该文件就是 .java文件中

System.loadLibrary("NDKTest"); 用到的,记住一定要去掉 lib  ,没有后缀

5. 如果要用windows 上面编译JNI 的 .c 文件为动态链接库

 

命令:cl -I C:\Java\include -I C:\Java\include\win32 -LD  your_cfile.c -Feyour_file.dll    (-Fe不要忘了)

如果提示找不到 jni.h, 解决办法

  a. %JAVA_HOME%\include 找到 jni.h

  b. %JAVA_HOME%\include\win32  找到 jni_md.h

  c. 将以上两个文件拷贝到  Vstudio 目下VC\include 下即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  eclipse android google 工具 c