Android Telegram App - > java.lang.UnsatisfiedLinkError:找不到void的实现

时间:2015-11-17 20:03:09

标签: java android telegram

不幸的是,几周前在Stackoverflow上删除了类似的问题,我必须提出一个新问题。

我试图通过source @ https://github.com/DrKLO/Telegram

为Android构建一个自己的Telegram应用程序

我无法让它工作,它在启动时停止并出现以下错误,任何关于从哪里开始的想法,我对Android Studio都很新。

11-17 19:55:04.142 2667-2667/org.telegram.messenger E/art: No implementation found for void org.telegram.tgnet.ConnectionsManager.native_setJava(boolean) (tried Java_org_telegram_tgnet_ConnectionsManager_native_1setJava and Java_org_telegram_tgnet_ConnectionsManager_native_1setJava__Z)
11-17 19:55:04.142 2667-2667/org.telegram.messenger D/AndroidRuntime: Shutting down VM
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime: FATAL EXCEPTION: main
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime: Process: org.telegram.messenger, PID: 2667
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime: java.lang.UnsatisfiedLinkError: No implementation found for void org.telegram.tgnet.ConnectionsManager.native_setJava(boolean) (tried Java_org_telegram_tgnet_ConnectionsManager_native_1setJava and Java_org_telegram_tgnet_ConnectionsManager_native_1setJava__Z)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at org.telegram.tgnet.ConnectionsManager.native_setJava(Native Method)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at org.telegram.messenger.ApplicationLoader.onCreate(ApplicationLoader.java:259)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at android.app.ActivityThread.-wrap1(ActivityThread.java)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
11-17 19:55:04.151 2667-2667/org.telegram.messenger E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

4 个答案:

答案 0 :(得分:5)

正如JesúsCastro所提到的,你必须将原生代码编译成具有.so后缀的库,android可以使用它们来运行应用程序。

但为什么会这样呢?因为在DrKLO的Telegram存储库的最后一次提交中,他们已经根据git中的commit消息删除了预构建的库:

  

删除预建库。所有库的源代码都是(并且始终可用):https://github.com/DrKLO/Telegram/tree/master/TMessagesProj/jni

您可以找到提交here

答案 1 :(得分:1)

因此,要解决您的问题,您可以从构建中删除64位库,或者将abiFilters设置为仅打包32位架构:

android {
....
defaultConfig {
    ....
    ndk {
        abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
    }
}

}

将android.useDeprecatedNdk = true添加到项目根目录中名为gradle.properties的文件

答案 2 :(得分:0)

@Rajsundar。如果添加行:

export ndkbuild=/cygdrive/c/android-ndk-r10e/ndk-build.cmd

无效。完成其他所有操作后,您只需直接从jni目录运行命令即可。

/cygdrive/c/android-ndk-r10e/ndk-build.cmd

答案 3 :(得分:0)

我有类似的错误消息。我的解决方案是从模拟器中卸载应用程序,清理项目(包括所有库)并进行重建。现在应用程序开始正常。