首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Android构建GStreamer教程

无法使用Android构建GStreamer教程
EN

Stack Overflow用户
提问于 2014-12-17 16:29:49
回答 1查看 4.9K关注 0票数 5

我正在尝试构建与gstreamer-sdk-android-arm-debug-2013.6捆绑在一起的教程。Android.mk目录(教程1项目)中的src/jni文件引用环境变量(如GSTREAMER_SDK_ROOT )。据我所读,Android不使用/传递环境变量到构建脚本。是否存在修改makefile和定义/检索构建脚本所需的键/值对的最佳实践?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-17 22:40:04

好吧,我有个解决办法。您可以将环境变量传递给ndk-build (或gradle Exec生成的任何其他进程)。在我的例子中,我希望为cleanbuild任务设置这些任务。这是使用tasks.withType(Exec)完成的。这里为所有Exec任务设置了环境参数。

对于GSTREAMER_SDK_ROOT,我向local.properties添加了一个条目

gst.dir=/Users/svenyonson/sdk/gstreamer-sdk-android-arm-debug-2013.6

对于PATH,我使用了派生进程的默认设置,并添加了我所需的内容。

下面是build.gradle的工作版本:

代码语言:javascript
复制
apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.gst_sdk_tutorials.tutorial_1"
        minSdkVersion 19
        targetSdkVersion 19
    }

    sourceSets.main {
        jni.srcDirs = []
        jniLibs.srcDir 'src/main/libs'
        java.srcDirs += 'src/main/jni/src'
    }

    tasks.withType(Exec) {

        def localProperties = new Properties()
        localProperties.load(project.rootProject.file('local.properties').newDataInputStream())
        def gstDir = localProperties.getProperty('gst.dir')

        environment = [:]
        environment['PATH'] = System.getenv("PATH")+ ":/usr/local/bin"
        environment['GSTREAMER_SDK_ROOT'] = gstDir
    }


    task buildNative(type: Exec, description: 'Compile JNI source via NDK') {

        def ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder()
        commandLine "$ndkDir/ndk-build",
            '-C', file('src/main/jni').absolutePath,
            '-j', Runtime.runtime.availableProcessors(),
            'all',
            'NDK_DEBUG=1',
            'V=1',
            'APP_PLATFORM=android-19'

    }

    task cleanNative(type: Exec, description: 'Clean JNI object files') {
        def ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder()
        commandLine "$ndkDir/ndk-build",
            '-C', file('src/main/jni').absolutePath,
            'clean'
    }

    clean.dependsOn 'cleanNative'

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn buildNative
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

该项目现在构建并运行。您需要做的唯一其他事情是将ndk.dir添加到local.properties中:

代码语言:javascript
复制
sdk.dir=/Users/svenyonson/sdk/android-sdk
ndk.dir=/Users/svenyonson/sdk/android-ndk-r9d
gst.dir=/Users/svenyonson/sdk/gstreamer-sdk-android-arm-debug-2013.6

还有一点:这些示例不会使用android-ndk-r10d构建。一定要使用android-ndk-r9d

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27530263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档