首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android错误:尝试运行Gstreamer教程时为ndkBuild执行外部本机构建

Android错误:尝试运行Gstreamer教程时为ndkBuild执行外部本机构建
EN

Stack Overflow用户
提问于 2019-09-09 13:51:27
回答 6查看 20.1K关注 0票数 11

我试图在AndroidSudio3.5中运行gstreamer教程-5 (https://gitlab.freedesktop.org/gstreamer/gst-docs/tree/master/examples/tutorials/android)(https://gitlab.com/eduardoprado/gstreamer-tutorial5),但得到以下错误:

代码语言:javascript
复制
ERROR: Cause: executing external native build for ndkBuild C:\Users\Downloads\gst_docs_master_examples_tutorials_android\examples\tutorials\android\android-tutorial-1\jni\Android.mk. 

我一直在跟踪gstreamer网站上的gstreamer教程以及堆栈溢出线程Gstreamer examples in Android Studio

第一个目标是让gstreamer在android上运行。

有些线程的错误与路径目录中的空格有关,但我已经检查过了,所有文件夹都没有空白。下面是一些文件,我一直在使用和调整,以使本教程运行。

我还将windows环境变量GSTREAMER_ROOT_ANDROID设置为已解压缩的gstreamer二进制文件,并将其设置在android.mk文件中。

local.properties文件

代码语言:javascript
复制
## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Mon Sep 09 08:16:12 EDT 2019
sdk.dir=C\:\\Users\\AppData\\Local\\Android\\Sdk
ndk.dir=C\:\\Users\\AppData\\Local\\Android\\Sdk\\ndk\\20.0.5594570

Android.mk

代码语言:javascript
复制
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := tutorial-5
LOCAL_SRC_FILES := tutorial-5.c
LOCAL_SHARED_LIBRARIES := gstreamer_android
LOCAL_LDLIBS := -llog -landroid
include $(BUILD_SHARED_LIBRARY)

GSTREAMER_ROOT_ANDROID := C\:\\gstreamer_android_binaries

ifndef GSTREAMER_ROOT_ANDROID
$(error GSTREAMER_ROOT_ANDROID is not defined!)
endif

ifeq ($(TARGET_ARCH_ABI),armeabi)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/arm
else ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/armv7
else ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/arm64
else ifeq ($(TARGET_ARCH_ABI),x86)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/x86
else ifeq ($(TARGET_ARCH_ABI),x86_64)
GSTREAMER_ROOT        := $(GSTREAMER_ROOT_ANDROID)/x86_64
else
$(error Target arch ABI not supported: $(TARGET_ARCH_ABI))
endif

GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_ROOT)/share/gst-android/ndk-build/
include $(GSTREAMER_NDK_BUILD_PATH)/plugins.mk
GSTREAMER_PLUGINS         := $(GSTREAMER_PLUGINS_CORE) $(GSTREAMER_PLUGINS_PLAYBACK) $(GSTREAMER_PLUGINS_CODECS) $(GSTREAMER_PLUGINS_NET) $(GSTREAMER_PLUGINS_SYS)
G_IO_MODULES              := gnutls
GSTREAMER_EXTRA_DEPS      := gstreamer-video-1.0
include $(GSTREAMER_NDK_BUILD_PATH)/gstreamer-1.0.mk

build.gradle (app)

代码语言:javascript
复制
apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "26.0.3"

    defaultConfig {
        applicationId "com.gst_sdk_tutorials.tutorial_5"
        minSdkVersion 14
        targetSdkVersion 29

        externalNativeBuild {
            ndkBuild {
                arguments "V=1"
            }
        }

        ndk {
            moduleName "tutorial-5"
            abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    externalNativeBuild {
        ndkBuild {
            path 'src/main/jni/Android.mk'
        }
    }
}

build.gradle (项目)

代码语言:javascript
复制
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

gradle-wrapper.properties

代码语言:javascript
复制
#Mon Sep 09 14:10:17 EDT 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

UPDATE将参数"V=1“添加到ndkBuild部分,并收到相同的错误:

代码语言:javascript
复制
ERROR: Cause: executing external native build for ndkBuild C:\Users\Downloads\gstreamer-tutorial5-master\app\src\main\jni\Android.mk
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-10-02 18:15:28

  1. 下载整个教程目录(https://gitlab.freedesktop.org/gstreamer/gst-docs/)

2)打开Android ->打开现有的Android项目

  1. 将整个android教程目录examples/tutorials/android作为一个项目打开

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

  1. 右键单击local.properties文件附近的->新->文件
  2. 创建一个名为gradle.properties的新文件
  3. 在新的gradle.properties文件中复制并粘贴以下代码。
代码语言:javascript
复制
# 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二进制文件并解压缩它们的文件路径。https://gstreamer.freedesktop.org/data/pkg/android/可以从这里下载Gstreamer。

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

9)这将下载最新的NDK版本。但是,gstreamer目前不会使用最新的NDK构建。我们需要下载NDK修订版18b (releases),如果您不使用NDK版本18,您可能会得到一个错误Android NDK: Assertion failure: SYSROOT_LINK is not defined . Stop. Open File

  1. 解压缩下载的NDK18b目录。
  2. 将解压缩的android-ndk-r18b目录移到ndk文件夹位于AppData\Local\Android\Sdk\ndk下的位置。
  3. 您现在应该在Android\Sdk\ndk中有两个文件夹。20.0.5594570 (or latest version)android-ndk-r18b
  4. 在android中,转到File ->项目结构
  5. 在Android位置下,指向NDK 18目录。示例:C:\Users\AppData\Local\Android\Sdk\ndk\android-ndk-r18b
  6. 连接一个电话与USB调试和运行!
  7. 如果您在电话中出现错误,说明这是用于较旧版本的android。回到Android,切换到屏幕左侧的Android View。在Gradle Scripts下,为适当的教程选择build.gradle。更改compileSdkVersion 29minSDKVersion 15targetSDKVersion 29
票数 4
EN

Stack Overflow用户

发布于 2021-07-05 09:45:51

只需将项目移动到路径而不带空格

/Users/myuser/Documents/android-project-folder示例

它帮助了我

票数 6
EN

Stack Overflow用户

发布于 2020-05-29 12:10:22

请在build.gradle (App)上发表评论:

代码语言:javascript
复制
externalNativeBuild {
         ndkBuild {
             path 'src/main/jni/Android.mk'
         }
     }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57855409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档