Можете построить для GStreamer для Android учебники

я сталкиваюсь с рядом проблем, пытающихся построить учебники GStreamer Android.

мое окружение:

  • Mac OS X 7
  • Android SDK версии 17
  • Android NDK 8d

Я могу создавать и запускать образцы NDK как в Eclipse, так и из командной строки.

Я загрузил http://cdn.gstreamer.com/android/arm/gstreamer-sdk-android-arm-debug-2012.11.tar.bz2 и добавлена переменная среды GSTREAMER_SDK_ROOT_ANDROID в my .файл.

когда я пытаюсь построить android-tutorial-1 через Eclipse, я получаю следующую ошибку:

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 в переменные сборки C++ в Eclispe, но это не имеет значения.

когда я пытаюсь построить через командную строку, я получаю следующую ошибку:

/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 не может быть решена?

6 ответов


здесь вы столкнулись с двумя проблемами

1. GSTREAMER_SDK_ROOT_ANDROID не определен

можно легко решить с помощью set GSTREAMER_SDK_ROOT_ANDROID переменная окружения (в eclipse или Android.mk file) в моем случае я указал эту переменную, как это

GSTREAMER_VERSION   := 1.4.1
GSTREAMER_SDK_ROOT  := /Volumes/Data/Developers/Library/gstreamer-1.0-sdk-android/$(TARGET_ARCH_ABI)-$(APP_OPTIM)-$(GSTREAMER_VERSION)
  1. TARGET_ARCH_ABI - предопределенная переменная (в моем случае armeabi-v7a)
  2. APP_OPTIM - предопределенная переменная release или debug

в вашем случае GSTREAMER_SDK_ROOT будет конечно, разные, но использование предопределенных vars помогает много, если вам нужна поддержка нескольких archs

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. В случае, когда вы установили pkg-config by brew на OSX он был помещен в /usr/local/bin

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

исправить PATH вы можете задать собственные Шелл!--29-->

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

это не идеальное решение, но это работает

обновление для пользователей Gradle

С 2.2.0-alpha3 Gradle Android плагин поддерживает внешние системы сборки, как это (добавить его в build.gradle внутри android определения)

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

не забудьте cleanup 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


я разместил вышеуказанный вопрос в списке рассылки GStreamer Android и получил следующий ответ:

Привет, К сожалению, мы забыли включить pkg-config в этом выпуске для Mac OS X. Вы можете скачать его здесь: http://macpkg.sourceforge.net/

я использовал homebrew для установки pkg-config и смог построить все учебники для Android через командную строку с помощью ndk-build.

у меня еще есть ряд вопросов в Eclipse:

  1. * GSTREAMER_SDK_ROOT_ANDROID не определен! - Я не могу заставить Eclipse забрать эту переменную
  2. если я жестко кодирую переменную в файл make, я получаю /bin/sh: pkg-config: command not found - pkg-config установлен и работает через CLI

Я считаю, что некоторые из проблем связаны с Android вопрос 33788 и я попытался решить их с помощью CDT 8.0.2 вместо CDT 8.10, но он не решил ни один из вышеперечисленных проблемы.

я работал вокруг проблемы на данный момент, делая следующее:

  1. отключено здание CDT для моего проекта
  2. построение кода NDK с помощью CLI ndk-build
  3. создание и развертывание приложения на моем устройстве через Eclipse как обычно

для error1: JNI, у/Андроид.МК:13: * GSTREAMER_SDK_ROOT_ANDROID не определен!. Остановка.

вы можете defind GSTREAMER_SDK_ROOT_ANDROID: = XXXXX(ваш путь Gstreamer_Android_SDK) в вашем Android.МК файлы!

для error2: фатальная ошибка: НДС/ГСТ.ч: нет такого файла или каталога

вы можете включить (путь Gstreamer_Android_SDK) / include / gstreamer0.10 / В C / C++ General - > пути и символы - > inlude!

надеюсь, что поможет:)


Я использую ADT с Eclipse, и, возможно, вы можете определить gstreamer_sdk_root_android как переменную среды проекта, выполнив следующие шаги:

Project -> Properties -> C/C++ Build -> Environment -> Add

вместо того, чтобы определить его .файл МК.


я столкнулся с той же проблемой, но не нашел ничего четкого в интернете. Но каким-то образом детальное изучение проблемы привело меня к ее решению.

чтобы решить его, вам нужно сделать следующие шаги в eclipse:

  1. на Windows->preferences->c/c++->build->Environment
  2. клик Add кнопка в правой части окна
  3. в поле " Имя " введите "GSTREAMER_SDK_ROOT_ANDROID"
  4. на Value поле Введите расположение пакета SDK GStreamer. В моем случае это было "C:\GStreamer_SDK". ВОТ PROBLEMMMM.... вам нужно использовать косую черту"/" вместо отсталой "\", чтобы заставить его работать правильно. таким образом, мое местоположение GStreamer SDK будет выглядеть следующим образом "C:/GStreamer_SDK"

как только вы закончите с ним. Вам нужно сделать некоторые изменения в Android.mk файл вашего проекта.

перейти к следующей строке

GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build/

и удалите конечную косую черту из строки кода. так это вроде будет выглядеть этот.

GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build

сохраните его, и вы сделали с ним!

если вы не удалите косую черту, она создаст путь во время сборки, как это

c:/GStreamer_SDK/share/gst-android/ndk-build//gstreamer.mk

двойные косые черты являются проблемой во время сборки.

теперь щелкните правой кнопкой мыши на project->clean проект

теперь построить его правой кнопкой мыши .

если eclipse зависает во время строительства, просто перейдите в Диспетчер задач и убейте make.exe сервис два раз.

запустите проект на устройстве или эмуляторе. Получайте удовольствие!


@CAMOBAP Спасибо за ваш пост. Это действительно помогает мне. Я могу построить пример Android в eclipse. Главной проблемой было:

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

Fo GSTREAMER_SDK_ROOT_ANDROID

  1. щелкните правой кнопкой мыши на Project- > Properties - >C / C++ Build - >Environment Добавить - > имя: GSTREAMER_SDK_ROOT_ANDROID Значение: / пользователи / ваш / путь/к / GStreamer-sdk-android-arm-release-2013.6 Добавьте его также для переменных сборки.

Далее: вам не нужно удалять конечную косую черту из строки кода в MAC и вам не нужно добавлять Includes в Eclipse. Эти зависимости будут решены автоматически после первой сборки. Убедитесь, что ваш Android SDK и NDK хорошо работают в Eclipse. Я также добавил пути SDK и NDK к:

nano .bash_profile

это работает на MAC. Я также изменил файл манифеста на:

    android:minSdkVersion="xx"
    android:targetSdkVersion="xx" />

для учебника 5 от Android Gstreamer вам нужно добавить разрешение sdcard:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />