Android.mk
LOCAL_PATH:= $(call my-dir)
TOP=.
include $(CLEAR_VARS)
LOCAL_MODULE := chcrypto
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES :=
LOCAL_C_INCLUDES := mbedtls library
LOCAL_LDLIBS := -lm -llog
include $(BUILD_SHARED_LIBRARY)
Application.mk
#对应AndroidManifest.xml中的minSdkVersion。用于debug
APP_PLATFORM := android-15
APP_OPTIM := debug
APP_ABI := armeabi
APP_STL := gnustl_static
NDK_DEBUG = 1
#debug
(JNIEnv *env, jobject obj, jbyteArray in, jbyteArray key){
...
jint in_length=(*env)->GetArrayLength(env,in);
unsigned char *pin=(unsigned char *)(*env)->GetByteArrayElements(env,in,NULL);
//调用java
jclass javaResult = (*env)->FindClass(env,"com/changhong/util/Result");
jmethodID constrocMID = (*env)->GetMethodID(env,javaResult,"<init>","(I[B)V");
jbyteArray bytes=(*env)->NewByteArray(env, length_out);
(*env)->SetByteArrayRegion(env, bytes, 0, length_out,(jbyte*)pout);
jobject result = (*env)->NewObject(env,javaResult,constrocMID,successOrFailure,bytes); //构造一个对象,调用该类的构造函数,并且传递参数
//最后释放指针
(*env)->ReleaseByteArrayElements(env,in,pin,0);
...
return result;
}