我正在开发一个名为test.c的本机应用程序,我想从本机C文件返回arrayofByte,我可以在运行应用程序时编译并生成.so文件
05-08 13:04:08.477: D/dalvikvm(945): No JNI_OnLoad found in /data/data/com.ssg.nativelibtest/lib/libnativelibtest.so 0x45f3da78, skipping init
在我的应用程序中没有任何崩溃的情况下得到这条消息,那么如何解决Nativefile的调用。作为参考,我给出了我的test.c文件这是用C编写的文件,我将其称为.so文件Java appliaction
jbyteArray Java_com_ssg_nativelibtest_MainActivity_getEncryptionKey(JNIEnv * env, jobject obj)
{
unsigned char ukey[] = { 'H','A','R','D','C','O','D','E','D',' ','K','E','Y','1','2','3'};
int lengthOfArray = (*env)->GetArrayLength(env, ukey);
//jsize lengthOfArray =(*env)->GetArrayLength(env, ukey);
jbyteArray byteKey = (*env)->NewByteArray(env, lengthOfArray);
(*env)->SetByteArrayRegion(env, byteKey, 0, lengthOfArray, (jbyte *)ukey);
return byteKey;
}
发布于 2013-05-08 09:01:56
如果使用C++编写,则
JNI_OnLoad函数应如下所示:
jint JNI_OnLoad(JavaVM* vm, void* reserved)
{
JNIEnv* env;
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
return -1;
}
// Get jclass with env->FindClass.
// Register methods with env->RegisterNatives.
return JNI_VERSION_1_6;
}
https://stackoverflow.com/questions/16436376
复制相似问题