7

GStreamerAndroidチュートリアルを作成しようとすると多くの問題が発生します。

私の環境は次のとおりです。

  • Mac OS X 7
  • AndroidSDKバージョン17
  • Android NDK 8d

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)

EclispeのC++ビルド変数にGSTREAMER_SDK_ROOT_ANDROIDを追加しようとしましたが、違いはありません。

コマンドラインからビルドしようとすると、次のエラーが発生します。

/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

私が理解できないのは、gst / gst.hを解決できないということですか?

4

6 に答える 6

9

ここで2つの問題に直面しました

1. GSTREAMER_SDK_ROOT_ANDROID が定義されていません

環境変数を設定することで簡単に解決でき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)
  1. TARGET_ARCH_ABI- 定義済み変数 (私の場合armeabi-v7a)
  2. APP_OPTIM- 定義済み変数releaseまたはdebug

あなたの場合GSTREAMER_SDK_ROOTはもちろん異なりますが、複数のアーチをサポートする必要がある場合は、定義済みの変数を使用すると非常に役立ちます

2.あなた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-configPATH=/usr/bin:/bin:/usr/sbin:/sbin. OSX でインストールpkg-configした場合は、brew/usr/local/bin

bash-3.2$ which pkg-config
/usr/local/bin/pkg-config

修正PATHするには、独自のシェルを指定できます

SHELL := PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /bin/bash

これは完全な解決策ではありませんが、機能します

Gradle ユーザー向けの更新

2.2.0-alpha3gradle android プラグインはこのような外部ビルド システムをサポートするため (内部build.gradle定義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

于 2014-10-02T10:10:50.543 に答える
5

上記の質問を GStreamer Android メーリング リストに投稿したところ、次のような回答がありました。

こんにちは、残念ながら、この Mac OS X のリリースに含めるのを忘れていましたpkg-config。ここからダウンロードできます: http://macpkg.sourceforge.net/

自作を使用してインストールpkg-configし、コマンドラインを使用してすべての Android チュートリアルをビルドすることができましたndk-build

Eclipse にはまだ多くの問題があります。

  1. * GSTREAMER_SDK_ROOT_ANDROID定義されていません! - Eclipse にこの変数を取得させることができません
  2. 変数をmakeファイルにハードコードすると、取得します/bin/sh: pkg-config: command not found-pkg-configがインストールされ、CLI経由で動作します

一部の問題は Android Issue 33788に関連していると思われ、CDT 8.10 の代わりに CDT 8.0.2 を使用して解決しようとしましたが、上記の問題のいずれも解決しませんでした。

今のところ、次のようにして問題を回避しました。

  1. プロジェクトの CDT ビルドを無効にしました
  2. CLI ndk-build を使用して NDK コードをビルドする
  3. 通常どおり Eclipse 経由でアプリケーションをビルドしてデバイスにデプロイする
于 2013-02-25T22:04:54.740 に答える
0

私は同じ問題に直面していましたが、インターネット上で明確なものは見つかりませんでした。しかし、どういうわけか、問題の詳細な調査により、私はそれを解決することができました。

それを解決するには、Eclipse で次の手順を実行する必要があります。

  1. に行くWindows->preferences->c/c++->build->Environment
  2. Addウィンドウの一番右にあるボタンをクリックします
  3. [名前] フィールドに「GSTREAMER_SDK_ROOT_ANDROID」と入力します
  4. Valueフィールドに GStreamer SDK の場所を入力します。私の場合は「C:\GStreamer_SDK」でした。ここに問題があります....正しく機能させるに/は、バックスラッシュ " " の代わりにスラッシュ " " を使用する必要があります。\したがって、Gstreamer SDK の場所は次のようになります " C:/GStreamer_SDK"

あなたがそれを終えたら。Android.mkプロジェクトのファイルにいくつかの変更を加える必要があります。

次の行に移動します

GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build/

コード行から末尾のスラッシュを削除します。このようになります。

GSTREAMER_NDK_BUILD_PATH  := $(GSTREAMER_SDK_ROOT)/share/gst-android/ndk-build

保存して完了です。

スラッシュを削除しないと、ビルド中にこのようにパスが生成されます

c:/GStreamer_SDK/share/gst-android/ndk-build//gstreamer.mk

ビルド中に二重スラッシュが問題になります。

project->cleanプロジェクトを右クリックします

プロジェクトを右クリックしてビルドしますproject->build

ビルド中にEclipseがハングする場合は、タスクマネージャーに移動してmake.exeサービスを2回強制終了してください。

デバイスまたはエミュレーターでプロジェクトを実行します。楽しむ!

于 2014-05-16T00:09:34.543 に答える
0

私は Eclipse で ADT を使用しています。おそらく、次の手順で GSTREAMER_SDK_ROOT_ANDROID をプロジェクトごとの環境変数として定義できます。

Project -> Properties -> C/C++ Build -> Environment -> Add

.mk ファイルで定義する代わりに。

于 2014-02-26T10:25:12.667 に答える