eclipse NDK 配置;

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 下即可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值