IntelベースのAndroidデバイス用のFMOD、Cocos2D-x、OpenAL、およびOpenSSLライブラリの準備

サードパーティのライブラリがなければ、本格的なAndroidプロジェクトはできません。 ターゲットアーキテクチャに適した形式で見つかることもあれば、見つからないこともあります。 次に、たとえばソースコードからコンパイルするなど、ライブラリを自分で準備する必要があります。



このハウツーガイドでは、x86ベースのAndroidデバイス用のFMOD、Cocos2D-x、OpenAL、およびOpenSSLライブラリについて学習します。 特に最初の3つは、ゲームやマルチメディアアプリケーションを開発する人にとって有用です。 つまり、Androidアプリケーションでそれらを構成、コンパイル、使用する方法について説明します。

事前準備


始める前に、何かを準備する必要があります。 すでにAndroid用のアプリケーションを開発している場合、議論されている内容のほとんどを既に持っている可能性があります。 ただし、この場合、提案されたリストを表示すると便利です。

つまり、次のソフトウェアツールが必要になります。


これらすべてを取得したら、環境変数を編集する必要があります。 または、少なくとも、上記のツールのインストール中に、一部のツールが既に必要な状態になっている可能性があるため、それらをチェックアウトします。

  1. インストールされたJava JDKへのパスをJAVA_HOME環境変数に書き込みます。 私たちの場合、これ– C:\Program Files\Java\jdk1.7.0_45

  2. Android SDKフォルダーへのフルパスをANDROID_SDK_ROOT変数に書き込みます。 たとえば、このケースでは、Android開発者パッケージがフォルダーD:\android\に解凍されたため、パスD:\android\adt-bundle-windows-x86-20131030\sdkがこの変数に書き込まれました

  3. NDK_ROOT変数に、NDKファイルが置かれているフォルダーへの絶対パスを書き込みます。 私たちの場合、これはフォルダーD:\android\android-ndk-r9bです。

  4. Path変数は、次のパスを含む状態にする必要があります。

    -JDKフォルダーへのパス。
    -bin JDKフォルダーへのパス。
    -NDKフォルダーへのパス。
    -Cygwin binフォルダーへのパス。
    -bin ANTフォルダーへのパス。
    -Android SDKのツールフォルダーへのパス。
    -platform-tools Android SDKフォルダーへのパス。

これらのパスはセミコロン(;)で区切る必要があります。 この場合、この変数の内容は次のようになります。

 D:\cygwin64\bin;C:\Program Files\Java\jdk1.7.0_40\bin;D:\android\adt-bundle-windows-x86_64-20131030\sdk\tools;D:\android\adt-bundle-windows-x86_64-20131030\sdk\platform-tools;%JAVA_HOME%\bin;%ANT_HOME%\bin 

目的のフォルダへのパスの末尾には、「/」や「 '」などの特殊文字を使用しないでください。

FMOD


FMODは商用オーディオライブラリです。 これは、さまざまなオペレーティングシステムで動作するツールのセットであり、さまざまな形式のサウンドファイルを再生できます。 ゲームおよびマルチメディアアプリケーションのサウンドコンポーネントの実装で使用されます。

以下は、Eclipse IDEを使用してx86ベースのAndroidアプリケーションにFMODライブラリを統合するためのステップバイステップガイドです。

最初にFMODダウンロードする必要があります 。 特に、FMOD Ex Programmer's APIのAndroidバージョンに関心があります。


FMOD Exをダウンロード

FMODのインストールでは、ダウンロードしたアーカイブを開発者のコ​​ンピューターのローカルフォルダーに解凍します。

Android NDKでビルドする


FMOD Ex APIを介してサウンドを操作するには、適切なC / C ++ライブラリをアプリケーションに含め、jniメカニズムを使用してそれにアクセスする必要があります。

FMOD機能は、JNIからアクセスできるC / C ++ライブラリの形式で実装されており、開発したアプリケーションのC / C ++コンポーネントから操作できます。


FMOD Exライブラリは、android-3の場合はarmeabiおよびarmeabi-v7aビルドとして、android-9の場合はx86ビルドとして提供されます。 これらのアセンブリは次の方法で見つけることができます。

 {$FMOD INSTALLED PATH}\api\lib\$(ABI) 

「ネイティブ」Android OpenSLオーディオインターフェースは、デフォルトで、それをサポートするデバイス(android-9)でオーディオを再生するために使用されます。 そのようなデバイスでは、操作に追加のファイルは必要ありません。 OpenSLがサポートしていないデバイスの場合、オーディオトラックオーディオ出力モードを使用する必要があります。 これを行うには、FMOD jarファイルが必要です。 FMODを介して初期化とオーディオ出力を実行するには、このファイルをJavaアプリケーションに追加する必要があります。

 fmodex.jar 

これについては以下で説明します。

デモアプリケーションはライブラリの一部であることに注意してください。 ここには彼のコードを含めません。 代わりに、FMODを操作するために必要な一連のアクションを示し、アプリケーションプロジェクトファイルに加える必要がある変更について説明します。

Javaドライバーの初期化


オーディオトラックメソッドを使用してサウンドを出力するには、アプリケーションプロジェクトにFMODオーディオドライバー(Javaで実装)を含めて初期化する必要があります。 OpenSL出力モードを使用する場合、これは必要ありません。

ドライバーを接続するには、 fmodex.jarファイルをプロジェクトに追加し、 org.fmod.FMODAudioDeviceパッケージをインポートするorg.fmod.FMODAudioDeviceます。 Javaドライバーが機能するには、アプリケーションがfmodexライブラリーをロードする必要があります。

FMODAudioDeviceクラスには、サウンド再生システムを初期化してオフにするために呼び出す必要があるstart ()stop () 2つの関数があります。 いつでもどこでも呼び出すことができますが、プロジェクトのオーバーライドされているActivity onStart()およびonStop()クラスのオブジェクトのライフサイクルメソッドでstart ()およびstop ()関数を呼び出すことをお勧めします。

x86ベースのAndroidデバイス用のサンプルアプリケーション


このアプリケーションの作成は、Android用のNDKアプリケーションの作成と同じです。 次のアドレスにあるデモアプリケーションを使用する例を見てください。

 {$FMOD INSTALLED PATH}\examples\playsound 

このフォルダーを{$ PROJECT DIRECTORY}と呼びます。 ただし、ビルドする前に、デモアプリケーションにいくつかの変更を加える必要があります。

  1. {$PROJECT DIRECTORY}/jniし、 Application.mkファイルを開きます。

  2. このコードを変更します。

     APP_ABI := armeabi armeabi-v7a 

    これに:

     APP_ABI := x86 

Cygwinを開き、次のタスクを実行してアプリケーションをビルドします。

  1. CygwinのPATH変数を更新します。

     export PATH=.:/cygdrive/{$PATH TO NDK}:$PATH 

  2. プロジェクトフォルダに行きましょう:

     cd /cygdrive/{$PROJECT DIRECTORY} 

  3. コマンドを実行して、アプリケーションをビルドします。

     ndk-build 

プロジェクトが組み立てられ、展開の準備が整います。

ここで、フォルダーパスを指定するときにWindowsで使用される「\」文字が、GNU形式のパスで使用される「/」文字に置き換えられることに注意してください。

Cygwinウィンドウでプロジェクトを正常にビルドすると、次のメッセージが表示されます。

 [x86] Prebuilt : libfmodex.so <= jni/../../../api/lib/x86/ [x86] Install : libfmodex.so => libs/x86/libfmodex.so [x86] Cygwin : Generating dependency file converter script [x86] Compile : main <= main.c [x86] SharedLibrary : libmain.so [x86] Install : libmain.so => libs/x86/libmain.so 

これで、プロジェクトを正常にビルドした後、Eclipseにインポートして、Androidデバイスでの起動の準備をすることができます。

Eclipse IDEでのアプリケーションの準備と実行


Eclipse IDEを使用して起動するアプリケーションを準備するには、次の手順に従う必要があります。

1. Eclipseを起動し、コマンド[ファイル]> [インポート]を実行します


Eclipseのインポートコマンド

2. [既存のAndroid ...]オプションを選択し、[次へ]をクリックします。


インポートするソースタイプを選択

3.プロジェクトのルートフォルダー(つまり、 {$PROJECT DIRECTORY}フォルダー)に移動し、[プロジェクトのコピー...]フラグがオフになっていることを確認して、[完了]をクリックします。


プロジェクトのインポートプロセスの完了

4.この時点で、プロジェクトエクスプローラーで、インポートされたプロジェクトに赤い感嘆符が表示されます。


Project Explorerの感嘆符

5.このサインが指す問題を解決するために、ウィンドウ>設定コマンドを実行して、設定ウィンドウを呼び出します。 ウィンドウで、Classpath Variablesプリセットに移動します。


設定ウィンドウ

6. [クラスパス変数]ページで、[新規...]ボタンをクリックすると、新しい変数を設定するためのウィンドウが表示されます。 図に示す形式にする必要があります。


新しい変数のパラメーター設定ウィンドウ

7.「名前」フィールドに、 FMOD_LIBと入力しFMOD_LIB

8. [パス]フィールドに入力するには、[ファイル]ボタンをクリックして、次のファイルを見つけます。

 {$FMOD INSTALLED PATH}/api/lib/fmodex.jar 

9. [OK]をクリックします。

10.次に、もう一度[OK]をクリックすると、次のウィンドウが表示されます。 その中のはいボタンをクリックします。


プロジェクトの完全な再構築の確認

11.これで赤い感嘆符が消え、問題は解決します。

12.コマンドProject> Propertiesを実行します。


プロジェクトのプロパティにアクセスするコマンドを実行する

13.表示されるウィンドウの[C / C ++ Build> Environment]セクションで、[Add]ボタンをクリックします。


ワークスペース設定ウィンドウ

14.表示されるウィンドウの[名前]フィールドに、[値]フィールドにANDROID_NDK_ROOTと入力します。これは、コンピューターにインストールされているNDKへのフルパスで、[OK]をクリックします。


NDKを指す変数の設定

15.「適用」ボタンをクリックしてから、「OK」ボタンをクリックします。


NDKパス情報の保存

これで、Androidデバイスでアプリケーションを実行できます。 すべてがfmodに機能するためには、まずSDカードのルートディレクトリにあるはずのfmodフォルダーに2セットのデモファイルをコピーする必要があります。

 {$FMOD INSTALLED PATH}\examples\media\* {$FMOD INSTALLED PATH}\fmoddesignerapi\examples\media\* 

このアプリケーションは、Androidエミュレーターで起動しない場合があります。

X86固有の設定


x86プラットフォーム向けに設計されたアプリケーションを構築する場合、プロジェクトに次の変更を加えることが非常に重要です。 これは、ライブラリが構築される前に行われることに注意してください。


建設後に得られる材料


アセンブリ中に取得した材料は、 {$PROJECT DIRECTORY}\フォルダーに配置されます。 つまり、ライブラリlibmain.solibfmodex.so{$PROJECT DIRECTORY}\libs\x86フォルダーにあります。 生成されたオブジェクトファイルは{$PROJECT DIRECTORY}\objフォルダーに分類されます。

既知のバグと問題


NDKを使用してプロジェクトの構築中にエラーメッセージが表示された場合、ファイルにアクセスするためのアクセス許可を構成する必要があります。 つまり、「全員」グループの許可を「フルコントロール」に変更します。

さらに、問題のライブラリを使用するアプリケーションがエミュレータで起動しない場合があることに注意してください。 物理デバイスでの通常の操作では、フォルダー{$FMOD INSTALLED PATH}\examples\media\*および{$FMOD INSTALLED PATH}\fmoddesignerapi\examples\media\fmodフォルダーにfmodする必要があることに注意してください。デバイスのSDカードのルートディレクトリにあります。

Fmod Studio API、Android Studioで動作


Fmodは、Fmod Exライブラリに加えて、コンピューターゲームのサウンドを準備するために設計されたFmod Studio製品と、Fmod Studioプロジェクトで作業できるさまざまなプラットフォームに対応するライブラリを提供します。 これはすべてここからダウンロードできます

AndroidでFmod Studio APIを使用する実用的な例をすばやく取得するために、GitHub Fmod Sample 3Dでプロジェクトを使用できます。 特に、プロジェクトにはx86アーキテクチャ用に設計されたライブラリがあります。 IDE、たとえばAndroid Studioにインポートできます。 インポート中にNDK integration is deprecated…というエラーが発生した場合は、修正するために、プロジェクトルートフォルダーにgradle.propertiesファイルを作成し、行にandroid.useDeprecatedNdk=trueを記述します。


Asus FonePad 8でデモアプリケーションを起動する

Androidプロジェクトでサードパーティライブラリを使用する多くの例は、特にGitHubにあり、Eclipse IDEを使用して作成されています。 これらはAndroid Studioにインポートできますが、インポート中にエラーが発生する場合があります。

たとえば、システムがNDKの検出に失敗した場合-ほとんどの場合、プロジェクト設定でそのパスが誤って指定されています。 これは、プロジェクトのルートディレクトリにあるlocal.propertiesファイルで確認できます。 修正ndk.dir変数に正しいパスを書き込むことにより。

Eclipseプロジェクトに、インポートしたプロジェクトのコピーに関係のない外部ファイルへのリンクが含まれている場合、Android Studioは、そのようなリンクが修正されるまでプロジェクトのインポートを拒否する場合があります。 プロジェクトを正常にインポートするには、そのようなリンク(「 android.library.reference.1= 」など)を含むファイル(例: project.properties )を見つけて、環境に関連するファイルで修正する必要があります。

Cocos2d-x


次に、x86ターゲットプラットフォーム用のCocos2d-xゲームエンジンを使用して、クロスプラットフォームAndroidアプリケーションを作成するプロセスを見てみましょう。

このガイドで使用されているサンプルアプリケーションは、Cocos2d-xをダウンロードするときに利用できる資料の一部です。 このアプリケーションは、 \samples\Cpp\フォルダーにあります。このフォルダーは、この例ではcocos2d-x-2.1.1ディレクトリにあります。

Cocos2d-xは、C ++で記述されたライブラリであり、多くのプラットフォームに移植されています。 その中には、iOS、Android、Windows、Marmalade、Linux、Bada、およびBlackberry 10があります。ゲームエンジンを使用する場合、LuaとJavaScriptがスクリプト言語として使用されます。 エンジンの詳細は、そのドキュメントに記載されています。

Cocos2D-xでの作業を開始する前に、この資料の冒頭で説明したように、必要なものをすべて準備する必要があります。

ダウンロードCocos2d-x


Cocos2d-xの最新バージョンをダウンロードします。 html-5バージョンのエンジンではなく、通常のエンジンが必要です。

Cocos2d-xのインストールと構成


  1. 前の手順でダウンロードしたアーカイブをディスクに解凍します。 この例では、アーカイブはフォルダーD:\Cocos2d-xに抽出されました。

  2. アーカイブの解凍後、記載されているバージョンのエンジンでは、ディレクトリD:\Cocos2d-x\__MACOSXおよびD:\Cocos2d-x\cocos2d-x-2.2.1がターゲットフォルダーにあります。

  3. Cocos2d-xの環境変数を次のように設定します。

    COCOS2DX_ROOT = cocos2d-x-2.2.1フォルダーへのcocos2d-x-2.2.1この場合は、 D:\Cocos2d-x\cocos2d-x-2.2.1.

続行する前に、さまざまなフォルダへのパスを指すいくつかの変数に注意してください。 以下で使用します。


Eclipse IDEでCocos2d-xプロジェクトを構成する


1.実行可能ファイル{$ECLIPSE PATH}\eclipse.exeを使用してEclipseを起動します。

2.ワークスペースを作成します。 図に示すように、 {$WORKSPACE PATH}で作成しました。


Androidプロジェクトワークスペース

3.コマンド[ファイル]> [インポート]を実行します。


輸入チーム

4.図に示すようなウィンドウが表示されます。


インポートウィンドウ

5. [Android]セクションを展開し、[既存のAndroidコードをワークスペースに追加]を選択して、[次へ]をクリックします。

6.次のウィンドウで、下に示すように[参照]ボタンをクリックします。


インポートするプロジェクトルートディレクトリを見つける

7.図に示すように、フォルダー{$ COCOS2D-X PATH} \ samples \ Cpp \ HelloCpp \ proj.androidを見つけて、[OK]をクリックします。


インポートするプロジェクトルートディレクトリの選択

8.このデモでは、[完了]ボタンをクリックする前に、[プロジェクトをワークスペースにコピー]フラグが設定されていないことを確認します。


プロジェクトをワークスペースにコピーするフラグはオフにする必要があります。

9. Eclipseにインポートした後、エラーメッセージが表示される場合があります。 今のところ、それらを無視して、次の手順に進むことができます。

将来、プロジェクトのソースコードをそのまま残して、プロジェクトコードをワークスペースにインポートしてもその実行に影響がないことが確実な場合は、上記の[プロジェクトをワークスペースにコピー]フラグを設定できます。

10.ここで、手順{$COCOS2D-X PATH}\samples\Cpp\HelloCpp\proj.android繰り返しますが、 {$COCOS2D-X PATH}\samples\Cpp\HelloCpp\proj.androidをインポートする{$COCOS2D-X PATH}\samples\Cpp\HelloCpp\proj.android{$COCOS2D-X PATH}\cocos2dx\platform\androidをインポートする必要があります。以下に示すように。 必要に応じて、[プロジェクトをワークスペースにコピー]フラグを設定します。


別のプロジェクトをインポートする

11.手順8で発生したエラーメッセージが消えない場合は、以下の手順に従って問題を解決します。

12. [パッケージエクスプローラー]タブの左側で、[libcocos2dx]を右クリックし、表示されるメニューから[プロパティ]を選択します。


プロジェクトプロパティウィンドウを開くコマンド

13.表示されるウィンドウで、左の列でAndroidアイテムを選択し、下の図に示すように、「ライブラリー」フラグが設定されているかどうかを確認します。 そうでない場合は、フラグを設定し、「適用」および「OK」をクリックします。


プロジェクトパラメータの設定

14.前述のように、HelloCppプロジェクトのプロパティを開き、図に示すウィンドウに到達します。


HelloCppプロジェクトのプロパティウィンドウ

15.ライブラリセクションから赤い十字のマークが付いているものをすべて削除し、[追加]ボタンをクリックします。

16. libcocos2dxを選択して、「OK」をクリックします。


libcocos2dxプロジェクトを選択します

17.これで、緑のチェックマークが付いたプロジェクトの名前がライブラリセクションに表示されます。 その後、[適用]ボタンをクリックして、[OK]をクリックします。


HelloCppプロジェクトの仕上げ

18.この時点で、Eclipseはプロジェクトを再構築します。 エラーメッセージが表示されない場合は、この手順をスキップしてください。 そうでない場合は、パッケージエクスプローラーパネルからHelloCppプロジェクトを削除します。 [ディスク上のプロジェクトコンテンツを削除...]フラグが設定されていないことに注意してください。 インストールされている場合、このアクションを元に戻すことはできません。 次に、手順3〜8および13〜16を再度実行します。


Project Explorerパネルからプロジェクトを削除する

19.これで、プロジェクトは次の画像のようになります。


さらなる作業の準備ができたプロジェクト

この場所に無事に到着した場合、おめでとうございます! プロジェクトはEclipse IDEで正常に開かれ、すべてのアセンブリの準備ができました。

Eclipse IDEでCocos2d-xプロジェクトを構築する


1. [パッケージエクスプローラー]タブで、ファイルHelloCpp> jni> Application.mkを見つけます。


Application.mkファイル

2. x86プラットフォーム用にビルドするには、次を追加します。

 APP_ABI := x86 

ここで、プロジェクトのメインメニューで、最初に[クリーン...]コマンドを実行し、次に[プロジェクトのビルド]を実行します。


プロジェクトのクリーニングと組み立て

Cygwinを使用してCocos2d-xプロジェクトを開いてビルドする


1. Cygwinを起動し、次のコマンドを使用してHelloCppデモプロジェクトフォルダーを参照します。

 cd /cygdrive/d/Cocos2d-x/cocos2d-x-2.2.1/samples/Cpp/HelloCpp/proj.android 

プロジェクトフォルダへのパスは{$COCOS2D-X PATH}.依存することに注意してください{$COCOS2D-X PATH}.

2.ファイル/jni/Application.mkを開きます。 次の行が含まれている必要があります。

 APP_ABI := x86 

3. /proj.androidフォルダーでプロジェクトをビルドするには、次のコマンドを実行します。

 ./build_native.sh 

エラーメッセージが表示された場合は、次を確認してください。


アセンブリが正常に完了すると、バイナリはproj.android\obj\local\x86フォルダーに配置されます。 特に、これらは次のファイルです。

 proj.android\obj\local\x86\libhellocpp.so proj.android\obj\local\x86\libcocos2d.a 

OpenAL(オーディオライブラリを開く)


OpenAL(Open Audio Library)は、クロスプラットフォームオーディオAPIです。 このライブラリは、マルチチャンネルサラウンドサウンドを効率的に出力するように設計されています。 APIスタイルとそれに採用されている規則は、意図的にOpenGLに似せて作られています。 バージョン1.1以降、Creativeは実装のためのコードを閉じました。 ただし、 OpenAL Softは広く使用されているオープンソースの代替手段です。 Androidに適応したOpenAL Softのバージョンを使用します。

OpenALを使用するには、前の例で使用したのと同じ環境が必要です。

OpenAL修正コードのダウンロード


OpenALを使用するには、Androidに特別に適合した修正されたソースコードが必要です。 対応するバージョンのOpenALは、Martins MozeikoとChris Robinsonの努力のおかげでリリースされました。 彼らに感謝します! 実験を続けるには、最新バージョンのコードをダウンロードしてください。

Cygwinターミナルを使用して、必要なすべてを別の方法でダウンロードできます。

  1. Cygwinを起動して、次のコマンドを入力します。

     git clone http://repo.or.cz/r/openal-soft/android.git OpenAL 

  2. このコマンドが正常に実行されると、必要なリポジトリがローカルのOpenALフォルダーに複製されます。 私たちの場合、これはフォルダ/home/user001または〜です。

WindowsバージョンのCygwinの場合、 /homeディレクトリはCygwinがインストールされているフォルダーにあることに注意してください。 – D:\cygwin64 .

OpenAL x86


, Android- Hello OpenAL. , – {$PROJECT_DIR} , , : D:\openal_proj\HelloOpenAL .

OpenAL Android, .

1. OpenAL config.h. :

 {$OPENAL_DIR}/android/jni 

:

 {$OPENAL_DIR}/include 

{$OPENAL_DIR} – , OpenAL. ~/openal .

2. , , OpenAL {$PROJECT_DIR}. 。 native- .

3. org_pielot_helloopenal_HelloOpenAL.c «» .

4. native- .

5. make-. – Android.mk Application.mk jni .c .h .

x86, , Application.mk :

 APP_OPTIM := release APP_ABI := x86 

プロジェクトの組み立て


  1. Cygwin {$PROJECT_DIR}:

     cd /cygdrive/{$PROJECT_DIR} 

    {$PROJECT_DIR} . :

     cd /cygdrive/d/openal_proj 

  2. , , NDK PATH Cygwin, :

     export PATH=.:/cygdrive/{$PATH TO NDK}:$PATH 

    , :

     export PATH=.:/cygdrive/d/android/android-ndk-r9b:$PATH 

  3. :

     ndk-build 

    OpenAL x86.

,


, , {$PROJECT_DIR} . , libopenal.so libopenaltest.so {$PROJECT_DIR}\libs\x86 .

{$PROJECT_DIR}\obj .

OpenSSL


OpenSSL Android-, x86.


.

  1. , Windows 7 .

  2. OpenSSL C, Android NDK , - (ARM, x86 ).

OpenSSL Android eighthave guardianproject .

x86


, Android-, Application Binary Interface (ABI). jni/Application.mk :

 APP_ABI := x86 

, , NDK , Android OpenSSL (, C:\openssl-android-master ), .

  1. (cmd.exe).
  2. , OpenSSL Android. , :

x86:

 APP_ABI := x86 

NDK :

 C:\openssl-android-master > ndk-build 

OpenSSL- libssl libcrypto , , , :

 C:\openssl-android-master\libs\x86\libcrypto.so C:\openssl-android-master\libs\x86\libssl.so 

結論


, Android-, x86. – FMOD OpenAL, Cocos2d-x, OpenSSL. , , , x86, FFMPEG, .

, , , , , . !

Source: https://habr.com/ru/post/J271013/


All Articles