如何编译电报jni文件夹

mao*_*mer 7 c++ java-native-interface android android-ndk telegram

我正在尝试使用ndk 编译github.com/DrKLO/Telegram/中的电报源代码中的jni文件夹

但是当我在ndk文件夹中的cmd中编写ndk-build时:

F:\ndk\android-ndk-r10> ndk-build -CF:\ Workspace\Android\Telegram-master-1-12-2016\Telegram-master\TMessagesProj\jni

我收到一些错误,并且没有创建libs文件夹

当我添加ndk路径到android工作室并手动添加jni文件夹android studio说找不到一些头文件

按照这个问题下载Cygwin并使用它,但再次得到像ndk-build这样的错误

$ndkbuild
Run Code Online (Sandbox Code Playgroud)

[armeabi] SharedLibrary:libtmessages.15.so

process_begin:CreateProcess(........,

F:/ ndk/android-ndk-r10/sources/cxx-stl/gnu-libstdc ++/4.8/libs/armeabi /thumb/libgnustl_static.a -lgcc -no-canonical-prefixes -Wl, - no-undefined -Wl ,-z,noexecstack -Wl,-z,relro -Wl,-z,now -LF:/ ndk/android-ndk-r10/platforms/android- 9/arch-arm/usr/lib -ljnigraphics -llog -lz -ldl -lc -lm -o F:/ Workspace/Android/Telegram-master-1-12-2016/Telegram-master/TMessagesProj // obj/local/armeabi/libtm essages.15.so,...)失败

make(e = 87):参数不正确.

make.exe:***[F:/Workspace/Android/Telegram-master-1-12-2016/Telegram-master/TMessagesProj//obj/local/armeabi/libtmessages.15.so]错误87

如何修复这个?

far*_*ran 14

重要更新问题:在3.18版本中,下载电报源项目后,如果你去jni文件夹你会找到并清空名为libtgvoip的文件夹,用所需文件填写:1-从githum转到电报源,转到jni文件夹并点击在libtgvoip @ eb813e1文件夹(@表示这是一个refrence文件夹).2-也下载该库!3-将其内容复制到前面讨论的空文件夹中!

现在开始吧:非常简单.

1-将NDK目录添加到环境PATH变量.

2-打开Android.mk并添加以下行:LOCAL_SHORT_COMMANDS:= true

在此输入图像描述

3-打开Application.mk并添加以下行:APP_SHORT_COMMANDS:= true

在此输入图像描述

4-管理员打开命令提示符并导航到jni文件夹,如下所示:(重要:在最后一个版本的电报中你应该导航到jni父文件夹而不是jni文件夹)

在此输入图像描述

5-只执行ndk-build命令

在此输入图像描述

然后ndk将开始构建.so文件:

在此输入图像描述

等到它完成任务,可能会显示一些警告但不重要.最后你将在obj目录中拥有所有共享库(.so文件):(重要:在最后一个版本的电报.so文件将在lib文件夹中创建,一切都准备好构建)

在此输入图像描述

然后转到每个文件夹并删除除libtmessages.22.so之外的所有内容.创建一个libs文件夹并将三个目录复制到其中:

在此输入图像描述

建立并享受乐趣!(记得用你的app id和app_hash填写org.telegram.messenger.BuildVars类中的变量.在这里阅读更多内容)


sir*_*gid 1

只需删除目标文件即可。此错误很可能是在先前的构建中断并且目标文件未完全生成之后出现的。 在此输入图像描述