这里你面临两个问题
1.GSTREAMER_SDK_ROOT_ANDROID未定义
通过set就可以轻松解决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
- 预定义变量release
or debug
在你的情况下GSTREAMER_SDK_ROOT
当然会有所不同,但是如果您需要支持多个架构,那么使用预定义的变量会有很大帮助
2. your pkg-confing
不在PATH
正如您可能会看到的,默认情况下使用sh
壳
/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
To fix PATH
你可以指定自己的shell
SHELL := PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /bin/bash
这不是完美的解决方案,但它有效
针对 Gradle 用户的更新
Since 2.2.0-alpha3
gradle android 插件支持像这样的外部构建系统(将其添加到build.gradle
inside android
定义)
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