我正在开发一个Native应用程序名称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;
}
答案 0 :(得分:0)
请参阅documentation:
如果写入,JNI_OnLoad函数应该看起来像这样 C ++:
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;
}