不幸的是,几周前 Stackoverflow 上删除了一个类似的问题,我必须提出一个新问题。
我正在尝试通过源@为Android构建一个自己的Telegram应用程序https://github.com/DrKLO/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)
主要问题是您运行项目时没有从 C/C++ 代码生成本机库。因为那个基于 Telegram 的项目(您通过链接指出)具有该文件Android.mk
on the jni
目录,您必须手动编译代码。我按照以下步骤修复了该异常:
源版本 3.13.1 及更高版本:
sourceSets.main.jniLibs.srcDirs = ['./jni/']
源版本低于3.13.1:
sourceSets.main {
jniLibs.srcDirs = 'libs'
jni.srcDirs = [] //disable automatic ndk-build call
}
根据您的操作系统继续操作。
Linux/苹果机
$ cd <path-to-Telegram>/TMessagesProj
$ <path-to-ndk>/ndk-build
Windows
- 下载Cygwin
-
Add on .bashrc
文件,该文件位于 Cygwin 根目录中(使用某些实用程序来查找该文件)。就我而言,该文件被放置在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
Write $ndkbuild
并等待编译器完成其任务。如果这个过程正确的话,会出现两个目录,obj
and libs
。检查一下libs
目录包含一些库.so
扩大。最后,运行项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)