Android Telegram App - > java.lang.UnsatisfiedLinkError:找不到void的实现 [英] Android Telegram App --> java.lang.UnsatisfiedLinkError: No implementation found for void

查看:153
本文介绍了Android Telegram App - > java.lang.UnsatisfiedLinkError:找不到void的实现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Unfortunally a similar question was removed at Stackoverflow some weeks ago, I must make a new question.

我试图通过source @为android建立一个自己的Telegram应用程序 https://github.com/DrKLO/Telegram

Im trying to build an own Telegram app for android via source @ https://github.com/DrKLO/Telegram

我可以不能让它工作,它会在启动时因以下错误而停止,任何关于从哪里开始的想法,我对Android Studio都很新。

I can not get it to work, it stops on startup with the following error, any ideas on where to start, Im quite new to 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)


推荐答案

主要问题是您运行项目时没有从C / C ++代码生成本机库。由于基于Telegram的项目,您通过链接指出,在 jni Android.mk 文件c>目录,你必须手动编译代码。我按照以下步骤修复了该异常:

The main problem is that you're running the project without generating the native library from the C/C++ codes. Because of that project based on Telegram, which you point it out with the link, has the file Android.mk on the jni directory , you have to compile the code manually. I fixed that exception following these steps:


  • 检查 build.gradle 是否包含:

  • Check that build.gradle contains:

源版本3.13.1及更新版本:

source version 3.13.1 and newer:

sourceSets.main.jniLibs.srcDirs = ['./jni/']

源版本低于3.13.1:

source version lower than 3.13.1:

    sourceSets.main {
       jniLibs.srcDirs = 'libs'
       jni.srcDirs = [] //disable automatic ndk-build call
    }





  • 下载 NDK

    • Download the NDK
    • 根据您的操作系统继续操作。

      Proceed according to your operating system.

      $ cd <path-to-Telegram>/TMessagesProj
      $ <path-to-ndk>/ndk-build
      



      Windows




      • 下载 Cygwin

      • 添加 .bashrc 文件,放在Cygwin根目录下(使用一些实用程序查找该文件)。在我的例子中,文件放在 C:\ cygwin64 \ home \ myuser

        Windows

        • Download Cygwin
        • Add on .bashrc file, which is placed on Cygwin root directory (use some utility to find that file). In my case, the file was placed in C:\cygwin64\home\myuser.

          export ndkbuild=/cygdrive/partition_name/your_ndk_directory/ndk-build.cmd
          


        • 打开Cygwin终端并转向项目的 jni 目录:

          cd /cygdrive/your_partition_name/project_jni_directory_path
          


        • $ ndkbuild 并等待编译器完成其任务。如果此过程正确,将显示两个目录, obj libs 。检查 libs 目录是否包含一些带有 .so 扩展名的库。最后,运行该项目。

        • Write $ndkbuild and wait the compiler finishes its task. If this process is right, two directories will show up, obj and libs. Check that libs directory contains some library with .so extension. Finally, run the project.

          这篇关于Android Telegram App - &gt; java.lang.UnsatisfiedLinkError:找不到void的实现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆