gstreamer-sdk-android-arm-debug-2013.6
번들로 제공되는 자습서를 작성하려고합니다. src/jni
디렉토리 (자습서 1 프로젝트)에있는 Android.mk
파일은 GSTREAMER_SDK_ROOT
과 같은 환경 변수를 참조합니다. 내가 읽은 것부터, Android Studio는 환경 변수를 빌드 스크립트에 사용/전달하지 않습니다. makefile을 수정하고 빌드 스크립트에 필요한 키/값 쌍을 정의/검색하는 모범 사례가 있습니까?Android Studio를 사용하여 GStreamer 자습서를 만들 수 없습니다.
5
A
답변
4
좋아, 나는 해결책이있다. 환경 변수를 ndk-build
(또는 gradle Exec에 의해 생성 된 다른 프로세스)으로 전달할 수 있습니다. 필자의 경우, clean
및 build
작업에 대해이 값을 설정하려고했습니다. 이는 tasks.withType(Exec)
을 사용하여 수행됩니다. 환경 매개 변수는 모든 Exec 작업에 대해 여기에서 설정됩니다. GSTREAMER_SDK_ROOT
를 들어
, 나는 local.properties
에 항목을 추가 :
gst.dir=/Users/svenyonson/sdk/gstreamer-sdk-android-arm-debug-2013.6
는 PATH
를 들어, 내가 생성 된 프로세스의 기본을 사용하고 내가 필요한 것을 추가.
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'
}
}
}
이 프로젝트는 이제 빌드 및 실행 : 여기
는 build.gradle
의 작업 버전입니다.
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
를 사용하여 구축하지 않습니다 당신이 할 필요가있을 경우에만 다른 것들은 local.properties에 ndk.dir
를 추가합니다. android-ndk-r9d
을 사용해야합니다.
Android Studio에서 Makefile을 사용할 수 없으므로 텍스트 편집기 이상으로 사용하려면 Gradle 빌드 파일을 설정해야합니다. –
mupdf와 같은 다른 프로젝트의 ndk 구성 요소에 Android Studio와 함께 makefile을 사용하고 있는데 제대로 작동합니다. 내가 볼 수있는 유일한 문제는 Android.mk에서 GStreamer 자습서에 사용되는 환경 변수입니다. Android.mk 파일의 값을 하드 코딩 할 수 있으며 빌드가 가능할 것이라고 확신합니다. 그러나 더 나은 방법이 있다고 생각합니다. – svenyonson
그렇다면이 자습서를 Gradle 빌드 파일 만 사용하도록 변환 할 수있는 방법이 있다면 그 부분 만 활용할 수 있습니다. 그러나 시작할 위치를 모르겠습니다. – svenyonson