Visual Studio Community 2015 の Androidアプリ開発でのDXライブラリの使い方


 Visual Studio Community 2015 を使用してDXライブラリを使った Androidアプリを製作するには以下のような手順を踏みます。

1.DXライブラリを使うために必要なものを揃える

2.プロジェクトの作成

3.DXライブラリを使用するためのプロジェクトの設定を行う

4.プログラムを組む

5.Androidエミュレーターの準備

6.プロジェクトのビルド、実行



1.DXライブラリを使うために必要なものを揃える

Visual Studio Community 2015 でDXライブラリを使用して Androidアプリを製作するには以下のものが必要です。

    ・Visual Studio Community 2015
    ・DXライブラリ Android版

 まず Visual Studio Community 2015 は、プログラムをコンパイルして実行可能な Androidアプリを作成する為のメインとなるソフトです。
 こちらはマイクロソフトのこちらのページ『2015』と書かれている箇所をクリックすると表示される
『Visual Studio 2015 およびその他の製品』 と書かれている項目の『ダウンロード』から
無償で入手することができますので、ありがたくダウンロード&インストールさせてもらって下さい。
( ただ、ダウンロードするためには無償サービスの Microsoft Dev Essentials に登録する必要があります )

 二つ目の DXライブラリ Android版は本サイトのこちらのページからダウンロードすることができます。
これがないとDXライブラリを使うことができませんので、まだダウンロードされていない方は
DXライブラリ Android版』をダウンロードしておいてください。



2.プロジェクトの作成

 Androidアプリを開発するためのソフトの準備ができましたので、早速一つ簡単な Androidアプリを作ってみましょう。
 ここでは『画面の中心に四角形を表示する』という動作をするアプリを作る手順を記したいと思います。
 Visual Studio Community 2015 で Androidアプリを作るにはまず『プロジェクト』を作成する必要があるので以下にその方法を記します。

   ① Visual Studio Community 2015 のメニューの『ファイル』→
         『新規作成』→『プロジェクト』を選んで『新しいプロジェクト』ダイアログを表示します。

   ② ダイアログ左側の項目から『インストール済み』→『テンプレート』→
                       『Visual C++』→『クロス プラットフォーム』を選びます。

   ③ ダイアログ右側に『Android support for C++ (Update 3) のインストール』という項目が
    表示されていたら、それを選択してから『OK』ボタンをクリックします。
    Androidアプリを開発するために必要な機能をインストールするかどうかを訊ねられますので、
    『インストール』をクリックして、機能をインストールします。
    インストールには Visual Studio Community 2015 を一度終了する必要がありますので、
    インストールが完了したら手順①からやり直してください。

    『Android support for C++ (Update 3) のインストール』という項目が無ければ④に進んでください。

   ④ ダイアログ左側の項目から『インストール済み』→『テンプレート』→
                  『Visual C++』→『クロスプラットフォーム』→『Android』を選びます。

   ⑤ ダイアログ右側の項目から『Native-Activityアプリケーション(Android)』を選びます。

   ⑥ 次にプロジェクトを作成するフォルダパスを『場所(L)』で設定します。

   ⑦ 次にプロジェクトの名前を『名前(N)』に入力します。ここでは仮に『test』とします。

   ⑧ 『ソリューションのディレクトリを作成』にチェックを付けてから『OK』をクリックします。

 これでプロジェクトの作成は完了です。



3.DXライブラリを使用するためのプロジェクトの設定を行う

 早速プログラムを組みたいところですが、作成したプロジェクトでDXライブラリを使用するための設定をする必要があります。
 ちょっと操作の数が多くてうんざりしますが、プロジェクト一つにつき一回だけなので、根気よく手順を追ってください。

  1. 『ソリューションエクスプローラー』と書かれているリストに表示されている
    『(プロジェクト名).NativeActivity(android-19)』を右クリックして、プルダウンメニューから
    『プロパティ』をクリックして『(プロジェクト名).NativeActivity プロパティページ』を表示します。
    ( (プロジェクト名)の部分は、今回は『test』になっている筈です )

  2. 次にダイアログの左上にある『構成(C)』と
    書かれている項目を『アクティブ(Debug)』から『すべての構成』に変更します。

  3. 次にダイアログの左上にある『構成(C)』の右側にある『プラットフォーム(P)』と
    書かれている項目を『ARM』に変更します。

  4. 次に左側のリストから『構成プロパティ』→『C/C++』→『全般』を選びます。

  5. 次に右側に表示されている『追加のインクルード ディレクトリ』の項目にDXライブラリのパッケージ内に
    入っている『Lib_VisualStudio\armeabi-v7a』フォルダのパスを追加してから、
    再度ダイアログ右下にある『適用』ボタンを押します。
    ( 追加するパスは、例えばダウンロードした『DXライブラリAndroid版』のパッケージを Cドライブの直下に展開した場合は
              C:\DxLib_Android\Lib_VisualStudio\armeabi-v7a;
             ( パスの末端に次のパスとの区切りとなるセミコロン『;』も書きます )

      となります。
      尚、DXライブラリをマイドキュメントフォルダに入れるとこれらのパス指定が面倒になりますので
      DXライブラリはなるべく浅いフォルダに入れておくことをお勧めします )

  6. 次に左側のリストから『構成プロパティ』→『リンカー』→『全般』を選びます。

  7. 次に右側に表示されている『追加のライブラリ ディレクトリ』の項目に手順5と全く同じパス( DXライブラリの
    パッケージ内に入っている『Lib_VisualStudio\armeabi-v7a』フォルダのパス )を
    追加してから、再度ダイアログ右下にある『適用(A)』ボタンを押します。

  8. 次にダイアログの上部にある『プラットフォーム(P):』を今度は『x86』に変更して、
    4~7の手順を再度行います、但し、入力するパスは『Lib_VisualStudio\armeabi-v7a』ではなく、
    『Lib_VisualStudio\x86』となります。( armeabi-v7a が x86 になっています )

  9. 次に手順8と同じようにダイアログの上部にある『プラットフォーム(P):』を今度は『ARM64』に変更して、
    4~7の手順を再度行います、但し、入力するパスは『Lib_VisualStudio\armeabi-v7a』ではなく、
    『Lib_VisualStudio\arm64-v8a』となります。( armeabi-v7a が arm64-v8a になっています )

  10. 更に手順8と同じようにダイアログの上部にある『プラットフォーム(P):』を今度は『x64』に変更して、
    4~7の手順を再度行います、但し、入力するパスは『Lib_VisualStudio\armeabi-v7a』ではなく、
    『Lib_VisualStudio\x86_64』となります。( armeabi-v7a が x86_64 になっています )

  11. 次にダイアログの上部にある『プラットフォーム(P):』を今度は『すべてのプラットフォーム』に変更します。

  12. 次に左側のリストから『構成プロパティ』→『全般』を選び、
     ダイアログ右側に表示されている『プラットフォーム ツールセット』の項目を『Clang 5.0』に変更します。

  13. 次に左側のリストから『構成プロパティ』→『C/C++』→『言語』を選び、
     ダイアログ右側に表示されている『C++ 言語標準』の項目を『C++14 (-std=c++1y)』に変更します。

  14. 次に左側のリストから『構成プロパティ』→『C/C++』→『プリコンパイル済みヘッダー』を選び、

    ダイアログ右側に表示されている『プリコンパイル済みヘッダー』の項目を『使用』から
    『プリコンパイル済みヘッダーを使用しない』に変更した後、ダイアログ右下にある『適用(A)』ボタンを押します。

  15. 次に左側のリストから『構成プロパティ』→『リンカー』→『入力』を選びます。

  16. ダイアログ右側に表示されている『ライブラリの依存ファイル』の項目には

%(LibraryDependencies);GLESv1_CM;EGL;

    と書かれていると思いますが、ここに追記して以下のように

%(LibraryDependencies);GLESv1_CM;EGL;stdc++;GLESv2;OpenSLES;m;DxLib;DxUseCLib;jpeg;png;zlib;tiff;theora_static;vorbis_static;vorbisfile_static;ogg_static;bullet;opus

    変更したあと、ダイアログ右下にある『OK』ボタンを押してダイアログを閉じます。

  17. 次に『ソリューションエクスプローラー』と書かれているリストに表示されている以下のファイルを

    android_native_app_glue.c
    android_native_app_glue.h
    pch.h

    右クリックして、表示されるプルダウンメニューから『削除』をクリックして削除します。
    それぞれのファイルで

    『'android_native_app_glue.c'を'test.NativeActivity'から除外する場合には、[除外]を選んでください。
     'android_native_app_glue.c'を完全に削除する場合には、[削除]を選んでください。』

    のように訊ねられますので、『削除(D)』を選んでファイルを削除してください。

  18. 次に『ソリューションエクスプローラー』と書かれているリストに表示されている
    『AndroidManifest.xml』というファイルをダブルクリックして内容を表示します。
    その内容は以下のようになっていると思いますが、
<?xml version="1.0" encoding="utf-8"?> <!-- Changes made to Package Name should also be reflected in the Debugging - Package Name property, in the Property Pages --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.$(ApplicationName)" android:versionCode="1" android:versionName="1.0"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19"/> <!-- This .apk has no Java code itself, so set hasCode to false. --> <application android:label="@string/app_name" android:hasCode="false"> <!-- Our activity is the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="android.app.NativeActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="$(AndroidAppLibName)"/> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
    これを以下のように変更します。(色が緑の部分が変更箇所や追加箇所で、4箇所です)
<?xml version="1.0" encoding="utf-8"?> <!-- Changes made to Package Name should also be reflected in the Debugging - Package Name property, in the Property Pages --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.$(ApplicationName)" android:versionCode="1" android:versionName="1.0"> <!-- This is the platform API where NativeActivity was introduced. --> <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="26"/> <!-- This .apk has no Java code itself, so set hasCode to false. --> <application android:label="@string/app_name" android:hasCode="false" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> <!-- Our activity is the built-in NativeActivity framework class. This will take care of integrating with our NDK code. --> <activity android:name="android.app.NativeActivity" android:label="@string/app_name" android:configChanges="orientation|screenSize" android:launchMode="singleInstance"> <!-- Tell NativeActivity the name of our .so --> <meta-data android:name="android.app.lib_name" android:value="$(AndroidAppLibName)"/> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> </manifest>
    変更が完了したらメニューから『ファイル(F)』→『AndroidManifest.xml の保存(S)』を選択して保存します。

 プロジェクトの設定は以上です、お疲れ様でした。



4.プログラムを組む

 長いプロジェクトの設定が終わったので、漸くプログラムを組めます。
 『ソリューションエクスプローラー』と書かれているリストにある『main.cpp』をダブルクリックして内容を表示すると
最初から約300行のプログラムが書かれていますので、まずこれをすべて削除します。
( メニューから『編集(E)』→『すべて選択(A)』を選択した後、再度メニューから『編集(E)』→『削除(D)』
 選択するとすべて削除することができます )

 あと、プロジェクト作成後の初期状態では『main.cpp』の文字コード形式は『シフトJIS』なのですが Androidアプリの
コンパイラは『シフトJIS』には対応していないので、以下の手順で文字コードを『UTF-8』に変更します。

  ① 『ソリューションエクスプローラー』と書かれているリストにある『main.cpp』をダブルクリックして内容を
    表示した状態でメニューから『ファイル(F)』→『保存オプションの詳細設定(V)...』を選択して
    『保存オプションの詳細設定』ダイアログを表示します。

  ② 『保存オプションの詳細設定』ダイアログの『エンコード(E):』の項目を『日本語(シフトJIS) - コードページ 932』から
    『Unicode(UTF-8 シグネチャ付き) - コードページ 65001』に変更して『OK』ボタンを押します。

 これで『main.cpp』の文字コード形式が『UTF-8』になります。
 因みに cppファイルや hファイルを新規作成した場合も、初期状態では『シフトJIS』となっていますので、
ソースファイルを新規作成した際もこの操作を行って文字コード形式を『シフトJIS』から『UTF-8』に変更
するようにしてください。

 さて、気を取り直して何もプログラムに書かれていない状態になった main.cpp に、以下のプログラムを入力します。

#include "DxLib.h" // プログラムは android_main から始まります int android_main( void ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } DrawBox( 220, 140, 420, 340, GetColor( 255,255,255 ), TRUE ) ; // 四角形を描画する WaitKey() ; // キー入力待ち DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }



 プログラムはこれだけです、どの部分が何をしているのか簡単に説明します。
 まず最初の1行はDXライブラリを使用するために必要なファイル( DxLib.h )をインクルードしています。
 次の『int android_main( void )はDXライブラリを使用した Androidアプリのプログラムのスタート地点となる関数の宣言です。
( 因みにDXライブラリを使用しない Androidアプリのスタート地点も android_main ですが、戻り値や引数が異なります… )
 中括弧内の最初の文『if( DxLib_Init() == -1 ){ return -1 ; }』はDXライブラリを初期化して使える状態にするために必要な関数『DxLib_Init』を呼んでいます。
この関数はDXライブラリを使うプログラムを組む際には例外を除いてまず最初に呼び出す必要があります。
因みに『if(...』と書かれているのは初期化が失敗したらその時点でソフトを終了させるという処理を行うための物です。
 『DrawBox』は関数名そのまま四角形を描画するための関数です。
 その次の『WaitKey』はキーボードのキーが押されるまで処理を止める関数です。( Androidアプリでもキーボードを接続すればキーボードを使うことができます )
 最後の『DxLib_End() ;』は注釈にも書いてある通りDXライブラリの使用を終了する処理を行う関数を呼んでいる文です。
DXライブラリを使用しているプログラムは最後に必ずこの関数を呼ばなくてはなりません。



5.Androidエミュレーターの準備

 プログラムの入力も終わったので、早速実行!
 と、行きたいところですが、その前に『Windows上で動作する Android端末のエミュレーター』を用意する必要があります。
 Android のスマートフォンやタブレットを所持している場合は、その端末上で実行することもできるのですが
開発中は主に Androidエミュレーターでプログラムを実行することになるので、下記の手順を踏んでエミュレーターの準備を行います。

  ① Visual Studio Community 2015 のメニューの『ビルド(B)』→『構成マネージャー(O)』を選択して
    構成マネージャーダイアログを開きます。

  ② 構成マネージャーダイアログの右上にある『アクティブ ソリューション プラットフォーム』の項目を
    『ARM』に変更したあと、『閉じる』ボタンでダイアログを閉じます。

  ③ ダイアログを閉じた後には、画面上部に『使用可能なデバイスが存在しません。』と表示されている箇所がありますので、
    その少し右側にある下向きの小さい三角『▼』をクリックしてプルダウンメニューを表示します。
    そしてプルダウンメニューの中にある『Android 仮想デバイス マネージャー...』をクリックして
    『Android Virtual Device(AVD) Manager』を起動します。

  ④ 『Android Virtual Device(AVD) Manager』のリストには最初は何も仮想デバイスが登録されていませんので、
    まず『Create...』のボタンを押して『Create new Android Virtual Device (AVD)』のダイアログを表示します。

     もし最初からリストに『AVD_GalaxyNexus_ToolsForApacheCordova』等の仮想デバイスが登録されていた場合は、
    それをクリックして選択した後、ウインドウの右側にある『Edit...』ボタンを押して、仮想デバイスの
    設定ダイアログ『Edit Android Virtual Device(AVD)』を開き、沢山ある設定の中の下のほうにある
    『Use Host GPU』というチェックボックスにチェックを入れるだけの変更を行った後、『OK』ボタンを押して
    設定ダイアログを閉じます。
     そして⑤は何も仮想デバイスが登録されていなかった場合の解説なので、⑥に進んでください。

  ⑤ 『Create new Android Virtual Device (AVD)』には設定項目が沢山ありますが、それぞれを以下のように入力してください。

      AVD Name: AVD_GalaxyNexus_ToolsForApacheCordova
      Device: Galaxy Nexus (4.65", 720 x 1280: xhdpi)
      Target: Android 4.4.2 - API Level 19
      CPU/ABI: ARM (armeabi-v7a)
      Keyboard: (チェックを入れる)Hardware keyboard present
      Skin: WVGA800
      Front Camera: None
      Back Camera: None
      Memory Options: RAM: 768  VM Heap: 64
      Internal Storage: 200 MiB
      SD Card 200 MiB
      Emulation Options: (チェック入れず)SnapShot  (チェック入れる)Use Host GPU













     入力が完了したら、『Create new Android Virtual Device (AVD)』ダイアログの下の方にある『OK』ボタンを
    押して、仮想デバイスを作成します。

  ⑥ 次に改めてリストから『AVD_GalaxyNexus_ToolsForApacheCordova』を選択して、今度は『Start...』ボタンを押します。

  ⑦ すると『Launch Options』というダイアログを表示されますので、特に設定は変更せずに『Launch』ボタンを押して
    仮想デバイス( エミュレーター )を起動します。
    起動には時間が掛かりますので、仮想デバイス画面上の『android』という文字が光っている表示が消えるまで暫く待ってください。

  ⑧ 仮想デバイス画面上の『android』という文字が光っている表示が消え、仮想デバイス( エミュレーター )が起動したら
    Visual Studio Community 2015 の画面に戻ってみてください、『使用可能なデバイスが存在しません。』と表示されていた箇所が
    『AVD_GalaxyNexus_ToolsForApacheCordova(armeabiv7a - emulator-5554)』のような表示に変化していると思います。

 これで Androidエミュレーターの準備は完了です。



6.プロジェクトのビルド、実行

 エミュレーターの準備が完了したところで早速プログラムを実行してみましょう。実行するためには

  ① Visual Studio Community 2015 のメニューから『デバッグ』→『デバッグの開始』

  ② すると『これらのプロジェクトは変更されています(T): ビルドしますか?』と表示されるので『はい』を押します。

  ③ エラーがなければプログラムが実行されます。エラーがあった場合は画面下のウインドウ
     にエラー内容が出てきますので指示にしたがって問題を修正してください。

 仮想デバイス( エミュレーター )でのプログラムの実行は時間が掛かるので、数十秒待ってみてください。
…画面の中心に四角形が表示されたでしょうか?
 仮想デバイス( エミュレーター )や Visual Studio Community 2015 の Android対応はまだ安定していないのか、
プログラム実行直後にエラーが表示されてプログラムのデバッグ実行が停止してしまったり、
仮想デバイス( エミュレーター )がフリーズして強制終了しなければならなくなったりすることが
ちょくちょく発生しますので、その際は仮想デバイスの再起動や、『デバッグの開始』を再度行うなどしてください。
 あと、プログラムを終了する場合は Visual Studio Community 2015 のメニューから
『デバッグ』→『デバッグの停止』を選択します。

 さてできあがった Androidアプリのパッケージファイルですが、それはプロジェクトのフォルダの中の
『test\test.Packaging\ARM\Debug』の中に『test.apk』というファイル名で作成されます。
( プロジェクト名を『test』以外にした場合は、『test』の代わりに付けたプロジェクト名となります )

この apk ファイルを Android端末にインストールすれば Visual Studio Community 2015 を介さなくても作成したアプリが動作します。
( Android の Playストアに提出するファイルも、この apk ファイルとなります )

 これでDXライブラリを使っての Androidアプリ開発の方法はわかりました。後は好きにプログラムを組んで
ゲームを作るだけです。ですがまだDXライブラリの機能は初期化と終了とドットを描画する関数しかわかっていません。
 この他の関数は DXライブラリ関数リファレンスのページ で解説されていますのでそちらを参照して下さい。

 あと、Androidアプリの開発に関する基礎的な情報や注意点を Androidアプリ開発の基礎的な情報や注意点など
解説していますので、こちらも併せてご覧ください。




戻る