にバンドルされているチュートリアルをビルドしようとしていgstreamer-sdk-android-arm-debug-2013.6
ます。ディレクトリ内のAndroid.mk
ファイルsrc/jni
(チュートリアル 1 プロジェクト) は、GSTREAMER_SDK_ROOT
. 私が読んだことから、Android Studio はビルド スクリプトに環境変数を使用/渡しません。makefile を変更し、ビルド スクリプトに必要なキーと値のペアを定義/取得するためのベスト プラクティスはありますか?
質問する
4864 次
1 に答える
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
、生成されたプロセスのデフォルトを使用し、必要なものを追加しました。
の作業バージョンは次のbuild.gradle
とおりです。
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 への追加だけです。
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
もう 1 つ: これらの例は、 を使用してビルドされませんandroid-ndk-r10d
。必ずご利用くださいandroid-ndk-r9d
。
于 2014-12-17T22:40:04.180 に答える