1

linphone for android 编译成功,我将“linphone-android”项目导入 Eclipse,在我的 android 手机中运行它。但是当我添加帐户或登录时,抛出异常:

未找到本机 Lorg/linphone/core/LinphoneAuthInfoImpl;.setUsername (JLjava/lang/String;) java.lang.UnsatisfiedLinkError: setUsername 的实现

linphone-android 库目录

我认为问题是没有加载.so库,日志显示:

No JNI_OnLoad found in /data/data/org.linphone/lib/libxxx.so
4

1 回答 1

2

请尝试此解决方案:

转到子模块/linphone/coreapi/linphonecore_jni.cc

编辑 linphonecore_jni.cc 文件。

更改是 - 用 extern "C" 替换 JNIEXPORT 并删除所有这些 linphone auth 信息的 getter / setter 中的 JNICALL 关键字。

/*
 * Class:     org_linphone_core_LinphoneAuthInfoImpl
 * Method:    setUsername
 * Signature: (JLjava/lang/String;)V
 */
extern "C" void Java_org_linphone_core_LinphoneAuthInfoImpl_setUsername (JNIEnv *env, jobject, jlong auth_info, jstring jusername) {
const char* username = jusername?env->GetStringUTFChars(jusername, NULL):NULL;
linphone_auth_info_set_username((LinphoneAuthInfo*)auth_info,username);
if (username) env->ReleaseStringUTFChars(jusername, username);
}

请参阅Kaushik Parmar 的解决方案

于 2013-07-02T02:43:27.227 回答