Android Telegram App - > java.lang.UnsatisfiedLinkError:找不到void的实现 [英] Android Telegram App --> java.lang.UnsatisfiedLinkError: No implementation found for 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 $ c $上有
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 inC:\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
andlibs
. Check thatlibs
directory contains some library with.so
extension. Finally, run the project.这篇关于Android Telegram App - > java.lang.UnsatisfiedLinkError:找不到void的实现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!