android - 我已经从 GitHub 下载了电报开源代码
问题描述
构建命令失败。
Error while executing process /Users/nyame/Library/Android/sdk/ndk/21.1.6352462/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/nyame/Documents/androidProjects/Telegram-FOSS/TMessagesProj/jni/Android.mk NDK_APPLICATION_MK=/Users/nyame/Documents/androidProjects/Telegram-FOSS/TMessagesProj/jni/Application.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=armeabi-v7a NDK_DEBUG=1 APP_PLATFORM=android-16 NDK_OUT=/Users/nyame/Documents/androidProjects/Telegram-FOSS/TMessagesProj/build/intermediates/ndkBuild/afatDebug/obj NDK_LIBS_OUT=/Users/nyame/Documents/androidProjects/Telegram-FOSS/TMessagesProj/build/intermediates/ndkBuild/afatDebug/lib NDK_APPLICATION_MK:=jni/Application.mk APP_PLATFORM:=android-16 --jobs=16 APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -n}
Android NDK: ERROR:/Users/nyame/Documents/androidProjects/Telegram-FOSS/TMessagesProj/jni/Android.mk:avutil: LOCAL_SRC_FILES points to a missing file
Android NDK: Check that /Users/nyame/Documents/androidProjects/Telegram-FOSS/TMessagesProj/jni/./ffmpeg/build/armv7-a/lib/libavutil.a exists or that its path is correct
fcntl(): Bad file descriptor
/Users/nyame/Library/Android/sdk/ndk/21.1.6352462/build/core/prebuilt-library.mk:45: *** Android NDK: Aborting . Stop.
这些是我尝试过但对我不起作用的步骤:
- libtgvoip 文件夹中的 git submodule update --init --recursive
- 研究,但看起来我的问题有所不同。
这是我的 android.mk 文件,它似乎无法提供 libavutil.a 文件的文件路径
MY_LOCAL_PATH := $(call my-dir)
LOCAL_PATH := $(MY_LOCAL_PATH)
LOCAL_MODULE := avutil
LOCAL_SHORT_COMMANDS := true
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
FFMPEG_INCLUDE_PATH := $(LOCAL_PATH)/ffmpeg/build/armv7-a/include
LOCAL_SRC_FILES := ./ffmpeg/build/armv7-a/lib/libavutil.a
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
FFMPEG_INCLUDE_PATH := $(LOCAL_PATH)/ffmpeg/build/arm64-v8a/include
LOCAL_SRC_FILES := ./ffmpeg/build/arm64-v8a/lib/libavutil.a
else ifeq ($(TARGET_ARCH_ABI),x86)
FFMPEG_INCLUDE_PATH := $(LOCAL_PATH)/ffmpeg/build/i686/include
LOCAL_SRC_FILES := ./ffmpeg/build/i686/lib/libavutil.a
else ifeq ($(TARGET_ARCH_ABI),x86_64)
FFMPEG_INCLUDE_PATH := $(LOCAL_PATH)/ffmpeg/build/x86_64/include
LOCAL_SRC_FILES := ./ffmpeg/build/x86_64/lib/libavutil.a
endif
......
解决方案
电报源使用一些带有原生语言(如 C 和 C++)的代码,所以 android studio gradle 需要 NDK(原生开发工具包)来构建项目,我认为你的系统上没有 NKD。
推荐阅读
- javascript - 关闭 Materialize CSS Modal 后,“modal-overlay”仍然存在 - 我们如何在不触摸覆盖的情况下关闭它?
- python-3.x - 打开 cv 比较两个人脸嵌入
- python-3.x - Windows 上的 Python3 多处理使在 Linux 上运行的 ZeroMQ 代码崩溃
- sql-server - 如何将因“数据库错误”而被拒绝的行加载到关系表中
- javascript - 如何通过 ajax 和 MVC 控制器正确填充下拉列表
- unit-testing - 开玩笑的单元测试问题:“找不到模块”
- c# - 如果分配了新集合,是否有必要取消订阅 ObservableCollection 中项目的事件?
- cypress - 如何使用 cypress 进行拖放
- python-3.x - Cython 将 python 数组转换为向量[char]
- kubernetes - 如何从节点通过 ClusterIP 访问 Openshift 服务