Можете построить для 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)
-
TARGET_ARCH_ABI
- предопределенная переменная (в моем случаеarmeabi-v7a
) -
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:
-
*
GSTREAMER_SDK_ROOT_ANDROID
не определен! - Я не могу заставить Eclipse забрать эту переменную - если я жестко кодирую переменную в файл make, я получаю
/bin/sh: pkg-config: command not found
- pkg-config установлен и работает через CLI
Я считаю, что некоторые из проблем связаны с Android вопрос 33788 и я попытался решить их с помощью CDT 8.0.2 вместо CDT 8.10, но он не решил ни один из вышеперечисленных проблемы.
я работал вокруг проблемы на данный момент, делая следующее:
- отключено здание CDT для моего проекта
- построение кода NDK с помощью CLI ndk-build
- создание и развертывание приложения на моем устройстве через 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:
- на
Windows->preferences->c/c++->build->Environment
- клик
Add
кнопка в правой части окна - в поле " Имя " введите "
GSTREAMER_SDK_ROOT_ANDROID
" - на
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
- щелкните правой кнопкой мыши на 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" />