首页 > 解决方案 > 我已经从 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.

这些是我尝试过但对我不起作用的步骤:

  1. libtgvoip 文件夹中的 git submodule update --init --recursive
  2. 研究,但看起来我的问题有所不同。

这是我的 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

......

标签: androidjava-native-interfacetelegram

解决方案


电报源使用一些带有原生语言(如 C 和 C++)的代码,所以 android studio gradle 需要 NDK(原生开发工具包)来构建项目,我认为你的系统上没有 NKD。


推荐阅读