ndk就一开发工具,让你的app可以通过jni方便的调c/c++库。常年在源码下写代码编译,所以这个环境不是很熟悉。
mac到官网下载adt,ndk。adt要到install new software里面去升级,不然没有ndk路径那个配置项。
添加ndk支持:右键你的项目 ->android tools ->Add Native Support...
hello-jni.cpp
#include <jni.h>
#include <string.h>
extern "C" {
jstring Java_com_example_helloworld_HelloJni_stringFromJNI( JNIEnv* env,jobject thiz )
{
return env->NewStringUTF("Hello from JNI !");
}
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#理论上编出来的应该是hello-jni.so,但实际是libhello-jni.so
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.cpp
include $(BUILD_SHARED_LIBRARY)
HelloJni.java
package com.example.helloworld;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloJni extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText( stringFromJNI() );
setContentView(tv);
}
public native String stringFromJNI();
//声明但是不实现也没有关系
public native String unimplementedStringFromJNI();
//libhello-jni.so加载到/data/data/apppackage/lib路径下
static {
System.loadLibrary("hello-jni");
}
}