GStreamer Android教程构建失败

时间:2019-02-27 17:27:31

标签: java android android-ndk gstreamer

尝试在Windows上运行GStreamer Android教程时遇到许多问题。我是Android NDK的新手,所以这可能是一个非常简单的问题,但我不知道如何解决。

这些是我尝试构建项目时的构建错误消息

  

构建命令失败。

     

执行过程时出错   D:\ gstreamer \ android-ndk-r19b-windows-x86_64 \ android-ndk-r19b \ ndk-build.cmd   带有参数{NDK_PROJECT_PATH = null   APP_BUILD_SCRIPT = C:\ xxx \ xxx \ gst-docs-master \ examples \ tutorials \ android \ android-tutorial-1 \ jni \ Android.mk   NDK_APPLICATION_MK = C:\ xxx \ xxx \ gst-docs-master \ examples \ tutorials \ android \ android-tutorial-1 \ jni \ Application.mk   APP_ABI = armeabi-v7a NDK_ALL_ABIS = armeabi-v7a NDK_DEBUG = 0   APP_PLATFORM = android-16   NDK_OUT = C:/ xxx / xxx / gst-docs-master / examples / tutorials / android / android-tutorial-1 / build / intermediates / ndkBuild / release / obj   NDK_LIBS_OUT = C:\ xxx \ xxx \ gst-docs-master \ examples \ tutorials \ android \ android-tutorial-1 \ build \ intermediates \ ndkBuild \ release \ lib   NDK_APPLICATION_MK = jni / Application.mk GSTREAMER_JAVA_SRC_DIR = src   GSTREAMER_ROOT_ANDROID = D:/gstreamer/gstreamer-1.0-android-universal-1.15.1   GSTREAMER_ASSETS_DIR = src /资产APP_SHORT_COMMANDS = false   LOCAL_SHORT_COMMANDS = false -B -n}

     

process_begin:CreateProcess(NULL,“”,...)失败。

     

*** Android NDK:断言失败:SYSROOT_LINK未定义。停止。打开文件

当我单击“打开文件”时,它已将我发送到gstreamer-1.0.mk文件和下面的行。

  

ifdef SYSROOT       SYSROOT_GST_INC:= $(SYSROOT)       SYSROOT_GST_LINK:= $(SYSROOT)

     

其他       ifdef SYSROOT_INC           $(调用断言定义,SYSROOT_LINK)           ifdef SYSROOT_LINK               SYSROOT_GST_INC:= $(SYSROOT_INC)               SYSROOT_GST_LINK:= $(SYSROOT_LINK)           万一       其他           SYSROOT_GST_INC:= $(NDK_PLATFORMS_ROOT)/ $(TARGET_PLATFORM)/ arch-$(TARGET_ARCH)           SYSROOT_GST_LINK:= $(SYSROOT_GST_INC)       endif endif

我认为问题与错误消息中提到的SYS_ROOT有关,但我不知道“ SYS_ROOT”或“ NDK_PROJECT_PATH”是什么意思。

我已经将gstAndroidRoot添加到gradle.properties中,因此在构建时不会有问题。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,原因是 D:/gstreamer/gstreamer-1.0-android-universal-1.15.1/ {正在使用的Arch} / share / gst-android / ndk-build / gstreamer-1.0.mk 正在调用在第168行中未定义的 SYSROOT_LINK ,因此我在该行中添加了注释。

ifdef SYSROOT
    SYSROOT_GST_INC := $(SYSROOT)
    SYSROOT_GST_LINK := $(SYSROOT)
else
    ifdef SYSROOT_INC
        # $(call assert-defined, SYSROOT_LINK) <-- COMMENT THIS!
        ifdef SYSROOT_LINK
            SYSROOT_GST_INC := $(SYSROOT_INC)
            SYSROOT_GST_LINK := $(SYSROOT_LINK)
        endif
    else
        SYSROOT_GST_INC := $(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-$(TARGET_ARCH)
        SYSROOT_GST_LINK := $(SYSROOT_GST_INC)
    endif
endif

$(call assert-defined, SYSROOT_LINK)可能出于某种原因在那儿,所以也许这不是一个合适的解决方案,但它可以工作。

答案 1 :(得分:0)

对于Windows 10,是Android Studio 3.5。这对我有用。

  1. here下载整个gstreamer android studio教程目录。

  2. 打开Android Studio->打开现有的Android Studio项目

  3. 打开整个Android教程目录examples/tutorials/android作为项目

  4. 打开项目后,将屏幕左侧的视图更改为Project

  5. 右键单击local.properties附近。右键单击->文件->新建->文件

  6. 创建一个名为gradle.properties

  7. 的新文件
  8. 在新的gradle.properties文件中复制并粘贴以下代码。

    # gstAndroidRoot can be set to point to the unpacked GStreamer android top-level directory
    # containing each architecture in subdirectories, or else set the GSTREAMER_ROOT_ANDROID
    # environment variable to that location
    gstAndroidRoot=/gstreamer_android_binaries
    

    注意:将gstAndroidRoot变量更改为下载gstreamer二进制文件并解压缩它们的文件路径。可以从here下载Android版Gstreamer。

  9. 现在我们需要设置NDK目录。确保下载并在SDK工具下启用了NDK。

  10. 这将下载最新的NDK版本。但是,gstreamer当前无法使用最新的NDK构建。我们需要从here下载NDK修订版18b。如果您不使用NDK版本18,则可能会收到错误Android NDK: Assertion failure: SYSROOT_LINK is not defined . Stop. Open File

  11. 解压缩下载的NDK 18b目录。

  12. 采用解压缩的android-ndk-r18b目录并将其移动到ndk文件夹在AppData\Local\Android\Sdk\ndk下的位置

  13. 您现在应该在Android\Sdk\ndk中有两个文件夹。 20.0.5594570 (or latest version)android-ndk-r18b

  14. 在android studio中,转到“文件”->“项目结构”

  15. 在Android NDK位置下,指向NDK 18目录。示例:C:\Users\AppData\Local\Android\Sdk\ndk\android-ndk-r18b

  16. 通过USB调试连接手机并运行!

  17. 如果您在手机上收到错误消息,指出它是针对较旧版本的android的。返回Android Studio,然后切换到屏幕左侧的Android View。在Gradle Scripts下,为相应的教程选择build.gradle。更改compileSdkVersion 29minSDKVersion 15targetSDKVersion 29