天天看點

android so 配置

Android.mk

LOCAL_PATH:= $(call my-dir)

TOP=.

include $(CLEAR_VARS)

LOCAL_MODULE := chcrypto
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := 

# Header files path
LOCAL_C_INCLUDES := mbedtls  library 

LOCAL_LDLIBS    := -lm -llog 

#LOCAL_LDFLAGS+= ../chcrypto/library/libchcrypto.so

include $(BUILD_SHARED_LIBRARY)     
#include $(BUILD_EXECUTABLE)

           
Application.mk

#對應AndroidManifest.xml中的minSdkVersion。用于debug

      APP_PLATFORM := android-

      APP_OPTIM := debug

      APP_ABI := armeabi

      APP_STL := gnustl_static

      NDK_DEBUG = 

      #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, , length_out,(jbyte*)pout);
    jobject result = (*env)->NewObject(env,javaResult,constrocMID,successOrFailure,bytes);  //構造一個對象,調用該類的構造函數,并且傳遞參數

    //最後釋放指針
    (*env)->ReleaseByteArrayElements(env,in,pin,);

   ...
    return result;
}