如何将NativeArray从Native C发送到我的Android应用程序

时间:2013-05-08 08:51:26

标签: android

我正在开发一个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;
}

1 个答案:

答案 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;
}