无法为Android教程构建GStreamer

我在尝试构建GStreamer Android教程时遇到了很多问题.

我的环境是:

> Mac OS X 7
> Android SDK版本17
> Android NDK 8d

我能够在Eclipse和命令行中构建和运行NDK示例.

我已经下载了http://cdn.gstreamer.com/android/arm/gstreamer-sdk-android-arm-debug-2012.11.tar.bz2并将GSTREAMER_SDK_ROOT_ANDROID环境变量添加到我的.bash_profile中.

当我尝试通过Eclipse构建android-tutorial-1时,我收到以下错误

12:12:05 **** Incremental Build of configuration Default for project Tutorial1 ****
/apps/tools/android-ndk-r8d/ndk-build all 
jni/Android.mk:13: *** GSTREAMER_SDK_ROOT_ANDROID is not defined!.  Stop.

12:12:05 Build Finished (took 104ms)

我已经尝试将GSTREAMER_SDK_ROOT_ANDROID添加到Eclispe中的C构建变量,但它没有任何区别.

当我尝试通过命令行构建时,我收到以下错误

/bin/sh: pkg-config: command not found
/bin/sh: pkg-config: command not found
/bin/sh: pkg-config: command not found
GStreamer      : [GEN] => gst-build/gstreamer_android.c
GStreamer      : [COMPILE] => gst-build/gstreamer_android.c
gst-build/gstreamer_android.c:2:21: Fatal error: gst/gst.h: No such file or directory
compilation terminated.
make: *** [gst-build/gstreamer_android.o] Error 1

我无法弄清楚是gst / gst.h无法解决

解决方法

在这里你遇到了两个问题

1.未定义GSTREAMER_SDK_ROOT_ANDROID

可以通过设置GSTREAMER_SDK_ROOT_ANDROID环境变量(在eclipse或Android.mk文件中)轻松解决我的情况我已经指定了这样的变量

GSTREAMER_VERSION   := 1.4.1
GSTREAMER_SDK_ROOT  := /Volumes/Data/Developers/Library/gstreamer-1.0-sdk-android/$(TARGET_ARCH_ABI)-$(APP_OPTIM)-$(GSTREAMER_VERSION)

> TARGET_ARCH_ABI – 预定义变量(在我的例子中是armeabi-v7a)
> APP_OPTIM – 预定义的变量发布或调试

在您的情况下,GSTREAMER_SDK_ROOT当然会有所不同,但如果您需要支持多个拱门,使用预定义的变量可以提供很多帮助

2.你的pkg-confing不在PATH中

正如您在认情况下看到的那样,使用sh shell

/bin/sh: pkg-config: command not found
/bin/sh: pkg-config: command not found
/bin/sh: pkg-config: command not found

它找不到pkg-config,因为最初PATH = /usr/bin:/ bin:/usr/sbin:/ sbin.如果您在OSX上通过brew安装pkg-config,它已被放置到/usr/local / bin

bash-3.2$which pkg-config
/usr/local/bin/pkg-config

要修复PATH,您可以指定自己的shell

SHELL := PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /bin/bash

这不是完美的解决方案,但它有效

Gradle用户的更新

由于2.2.0-alpha3 gradle android插件支持这样的外部构建系统(在android定义中的build.gradle中添加)

android { 
    ...
    externalNativeBuild {
        ndkBuild {
            path "${projectDir.absolutePath}/src/main/jni/Android.mk"
        }
    }
}

不要忘记清理jni.srcDirs,因为坏的插件会先启动,在运行时清理jni.srcDirs

android { 
    ...
    task disableDefaultNdkBuild << {
        android.sourceSets.main.jni.srcDirs = []
        android.sourceSets.main.jniLibs.srcDir 'src/main/libs'
    }

    preBuild.dependsOn disableDefaultNdkBuild
}

官方指南现已发布https://gstreamer.freedesktop.org/documentation/tutorials/android/link-against-gstreamer.html

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...