luc*_*web 7 android gstreamer android-ndk
我遇到了许多试图构建GStreamer Android教程的问题.
我的环境是:
我能够在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)
Run Code Online (Sandbox Code Playgroud)
我已经尝试将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
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚是gst/gst.h无法解决?
在这里你遇到了两个问题
可以通过设置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)
Run Code Online (Sandbox Code Playgroud)
TARGET_ARCH_ABI- 预定义变量(在我的情况下armeabi-v7a)APP_OPTIM- 预定义变量release或debug在你的情况下GSTREAMER_SDK_ROOT,当然会有所不同,但如果你需要支持多个拱门,使用预定义的变量可以提供很多帮助
pkg-confing不在PATH正如您在默认情况下看到的那样,使用shshell
/bin/sh: pkg-config: command not found
/bin/sh: pkg-config: command not found
/bin/sh: pkg-config: command not found
Run Code Online (Sandbox Code Playgroud)
它pkg-config最初找不到PATH=/usr/bin:/bin:/usr/sbin:/sbin.如果您在安装pkg-config的brewOSX上它被放置到/usr/local/bin
bash-3.2$ which pkg-config
/usr/local/bin/pkg-config
Run Code Online (Sandbox Code Playgroud)
要修复,PATH您可以指定自己的shell
SHELL := PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /bin/bash
Run Code Online (Sandbox Code Playgroud)
这不是完美的解决方案,但它有效
由于2.2.0-alpha3gradle android插件支持这样的外部构建系统(在build.gradle内部android定义中添加它)
android {
...
externalNativeBuild {
ndkBuild {
path "${projectDir.absolutePath}/src/main/jni/Android.mk"
}
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记清理,jni.srcDirs因为坏插件将首先启动,jni.srcDirs在运行时添加清理
android {
...
task disableDefaultNdkBuild << {
android.sourceSets.main.jni.srcDirs = []
android.sourceSets.main.jniLibs.srcDir 'src/main/libs'
}
preBuild.dependsOn disableDefaultNdkBuild
}
Run Code Online (Sandbox Code Playgroud)
现已提供官方指南https://gstreamer.freedesktop.org/documentation/tutorials/android/link-against-gstreamer.html
我在GStreamer Android邮件列表上发布了上述问题,得到了以下回复:
嗨,不幸的是我们忘记
pkg-config在此版本中包含Mac OS X.您可以从这里下载:http: //macpkg.sourceforge.net/
我使用自制软件安装pkg-config,并能够通过命令行使用构建所有Android教程ndk-build.
我在Eclipse中仍有许多问题:
GSTREAMER_SDK_ROOT_ANDROID没有定义! - 我无法让Eclipse接收这个变量/bin/sh: pkg-config: command not found- pkg-config已安装并通过CLI工作我相信一些问题与Android 问题33788有关,我试图使用CDT 8.0.2而不是CDT 8.10解决它们,但它没有解决上述任何一个问题.
我现在通过以下方式解决了这个问题:
| 归档时间: |
|
| 查看次数: |
8046 次 |
| 最近记录: |