把OpenCL的cl文件放置到工程assets中,Java代碼如下:
import android.content.res.AssetManager;
public native String ReadFile(AssetManager assetManager) //NDK函數申明
ReadFile(getAssets()); //調用
在NDK中C++代碼中
JNIEXPORT jstring JNICALL Java_com_example_get_1mb_MainActivity_ReadFile(JNIEnv* env, jobject thisobject, jobject assetManager){
jstring resultStr;
AAssetManager* mgr = AAssetManager_fromJava(env, assetManager);
AAsset* asset = AAssetManager_open(mgr, "genmb.cl",AASSET_MODE_UNKNOWN);
/*獲取文件大小*/
off_t bufferSize = AAsset_getLength(asset);
char *buffer=(char *)malloc(bufferSize+1);
buffer[bufferSize]=0;
int numBytesRead = AAsset_read(asset, buffer, bufferSize);
/*關閉文件*/
AAsset_close(asset);
return env->NewStringUTF("ok");
}
在JNI的Android.mk中,添加:
LOCAL_LDLIBS := -landroid