2017-07-11 29 views
5

私はここでは例を参照、彼らのチュートリアル以下、GStreamerのは、Androidのスタジオでの作業を取得しようとしている:のGStreamerのAndroid Studioの例

https://gstreamer.freedesktop.org/documentation/tutorials/android/link-against-gstreamer.html

しかし、最新のAndroidのスタジオで何JNI /アンドロイドはありません.mk。どこのコードをそのWebページの最後に置くのですか?

CMakeLists.txtに入れる必要がありますか?それとも別の何かがそこに入るか?

Android.mkファイルを作成しますか?その場合は、どこにjniフォルダがないので、cppフォルダのみを作成しますか?アンドロイドスタジオにAndroid.mkファイルの場所を教えてもらうにはどうすればいいですか?

ありがとうございます!

+0

私の答えが助けられたら、それを受け入れてください。ありがとうございました –

答えて

7

私はGstreamerのサイト作業からすべてのチュートリアルを作成しましたが、非常に難しかったです。他の人を助けるために私はそれを文書化しました。ここではlinux(ubuntu)のチュートリアルですが、質問がある場合は窓でもうまくいくかもしれません:)...私はAndroidスタジオで実行できるようにgitlabからプロジェクトをリンクします:
(チュートリアル 申し訳ありませんが、あなたが持っている:プロジェクトにはGStreamerを理解し、統合するための最良の方法は、このサイトでチュートリアルをやっているのAndroidメーカー

でライブラリを使用した5) https://gitlab.com/eduardoprado/gstreamer-tutorial5.git
(チュートリアル2)https://gitlab.com/eduardoprado/gstreamer-tutorial2.git

あなた自身でリンクを見つけるために、私は直接リンクを投稿する評判がありません

しかしこれらのチュートリアルは古く、Androidのメーカーと連携するためには、Eclipseで動作するように作られたがする必要がある:

1.インポートのAndroid Studioのインポート]オプションを使用してチュートリアル。
2. NDKを使用するようにAndroidスタジオを設定します。
3. "Android.mk"ファイル内に変数を設定します。
4. Gradleを設定すると、一部のアーキテクチャのみがコンパイルされます。
5. Gstreamerクラスを正しいパスにコピーします。
6. Androidスタジオから「インスタント実行」を無効にします。

:これらの各命令は、次のセクションで説明する
7.修正「リンカー金引数」(編集のみ2017年11月28日、Windowsユーザーを作った)

(編集は2017年10月27日を作りました)アンドロイドStudioのインポートオプション

のAndroid Studioを使用して

1.インポートチュートリアルは、別のIDEからプロジェクトをインポートするオプションがあります。 EclipseにGstreamerのプロジェクトをインポートするには、次の手順に従います。
1. gitからすべてのチュートリアルをダウンロードします。
2. Android Studioで、[ファイル] - > [新規プロジェクトをインポート]に移動します。
3.新しいブラウザのファイル画面で、 "gst-docs"に移動して、希望のプロジェクト(私の場合はチュートリアル5) "android-tutorial-5"を選択し、 "OK"を押します。NDK

を使用するようにAndroidのメーカーを設定し

Selecting Project

2.今、プロジェクトがインポートされたこと、プロジェクトがNDKフレームワークを使用しているAndroidのメーカーに通知するために必要とされています。したがって、Gradleはすべての依存関係をインポートして処理できます。右「のGradleとリンクC++プロジェクト」
で、左側のナビゲーションタブで「アプリ」で
2.をクリックし
1.: は、我々は(すでにチュートリアルフォルダ内の)ファイルAndroid.mkをリンクする必要があり、これを行うために、新しいウィンドウで 3:

  • 変更 "「...」で「NDKビルド」に「CMakeの」から
  • をクリックし、「システムの構築」とAndroid.mkの場所を参照/AndroidStudioProjects/android-studio-5/app/src/jni/Android.mk "
  • ヒットOK今外部ファイルは、プロジェクトの左側のタブに表示されますビルドし

。いくつかのエラーも表示されますが、それは正常であり、次のセクションで修正されます。

「Android.mk」ファイル内の変数を設定し

3.

「Android.mkは」GStreamerのが抽出された場所へのパスを見つけることができませんので、最後のセクションのエラーが発生します。したがって、GSTREAMER_ROOT_ANDROIDをGStreamerが抽出されたパスに設定してみましょう。 これを達成するには
1.左側のタブを参照して、[外部ビルドファイル]を展開します。
2. Android.mkをダブルクリックしてファイルを開きます。ライン10において
3、タイプ、 "$(BUILD_SHARED_LIBRARY)を含む" 下:
- "GSTREAMER_ROOT_ANDROID:= パス"
- NO引用符
- パスは、(明らかに)GStreamerのパスであります抽出された。
Gradleが同期し、エラー "*** Target arch ABI not supported:mips。Stop"が表示されます。

Setting GSTREAMER_ROOT_ANDROID

4.設定Gradleのグレードが異なるアーキテクチャ用にビルドしようとしますが、それはMIPSに構築するためのファイルを見つけることができませんので

最後のセクションでエラーが発生した場合にのみ、いくつかのアーキテクチャをコンパイル。この問題を解決するために、MIPSを除いて構築するアーキテクチャを指定します。
1.左のブラウザタブで、[スクリプトの展開]を展開します。
2. "build.gradle(Module:app)"をダブルクリックしてください
3。"moduleNameの" タイプ下の行に:
(チュートリアル5を実行する)
- abiFilters 'のx86'、 'armeabi'、 'armeabi-v7a'、 'arm64-v8a'
(チュートリアル2を実行する)
- 64ビットの64ビットデバイスでは、ライブストリーミングが表示されません。これを解決するには、次のようにします。あまりにarm64-v8a」)正しいpまで

enter image description here

5.コピーGStreamerのクラスath。

最後に必要な設定は、Mainクラスのパッケージのインポートに関するものです。

Class import error

エラーにはGStreamerのクラスは「.INIT」機能を取得することがないために発生する上記示しました。あなたはGStreamerのを抽出したファイルに、お使いのシステムからのファイルマネージャを使用して、

  1. ブラウズ:これを解決するために、我々は、それが指定されたパスに抽出し、過去されたファイルからクラスのGStreamerをコピーする必要があります。
  2. 抽出されたファイルから、GStreamerクラスの場所を参照します。これは/arm/share/gst-android/ndk-build/GStreamer.javaにあります コピーGStreamer.java
  3. Androidスタジオに戻り、メインクラスがアクセスしようとしているインポートパスを/左側のブラウザタブにapp/javaと入力します。したがって、上記の画像に、我々はそれにGStreamer.javaをパスorg.freedesktop.gstreamerを作成し、ファイルを貼り付ける必要があります。javaフォルダ
  4. 新規作成>パッケージ
  5. タイプorg.freedesktopで
  6. 右クリック.gstreamer
  7. org.freedesktop.gstreamerを右クリックして貼り付け 5.インポートエラーが解決されましたが、新しいクラスにエラーがあります。それらを解決するには、コピーしたクラス「@」とその間にあるすべてのものを消去するだけです。 Androidのメーカーから

6.無効 "Instanteファイル名を指定して実行"。
Android Studioのこの機能は、プロジェクトを実行しようとすると問題を引き起こす可能性があるので、無効にすることをお勧めします。 "Instanteファイル名を指定して実行" を無効に


1. Androidのスタジオで "ファイル" に行く - > "設定..."(Ctrlキー+ Altキー+ S)
2 "展開を実行を構築します" - > "インスタントファイル名を指定して実行」
3.チェックを外し 『が展開上のホットスワップコード/リソースの変更への即時実行(デフォルトは有効)』
4.ヒットを 『有効

7』適用。修正「リンカー金引数」(Windowsユーザーのみ)

Windowsにしようとするときは、エラーを取得します:
Error:error: invalid linker name in argument '-fuse-ld=gold'
はそれを修正する:
1. [Android NDK Linker (GStreamer) - invalid linker name -fuse-ld=gold
2にアントワーヌをフォローしますZambelliの回答指示。

+1

これは、Androidスタジオでgstreamerチュートリアルを作成するための素晴らしいリファレンスです!それが公式文書の一部であることを望みます。 Windows上のAndroid Studioでは、引数 '-fuse-ld = gold' *に無効なリンカー名を指定する必要がありました[1]。また、リンカの再配置のオーバーフローエラーのために、armeabiターゲットを削除する必要がありました。 [1]:https://stackoverflow.com/questions/44650470/android-ndk-linker-gstreamer-invalid-linker-name-fuse-ld-gold – Glenn

+0

肯定的なフィードバックありがとうございます、それはいつも良いですステップバイステップが働いていて、別の人が成功していることを知ってください。チュートリアルを編集したチュートリアルは、チュートリアルがLinux用に作成されていることを示しています(Windows上で作成したために生じたエラーかもしれません)。チュートリアル2と3を試してみるとフィルターからarmeabiを削除する情報を追加しました。あなたがあなたの問題を解決するために使用したリンクを含む別のステップを追加します。 –

+0

@EduardoFernandoこれはWindowsの一般的な問題ですか?[GStreamer](https://gstreamer.freedesktop.org/documentation/installing/for-android-development.html)の「Windowsリンケージの問題」を参照してください。そのページは私のために働かなかった(したがって、リンクされた質問への私の答え)を提供する。 –