<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="
false"
android:theme="@style/Theme.Test"
android:hasCode="false"
tools:targetApi="31">
<activity
android:name="
android.app.NativeActivity"
android:exported="true">
<meta-data android:name="android.app.lib_name"
android:value="native-lib" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
</application>
</manifest>
2. 次に画面左側のリストから『app』→『cpp』の中にある『CMakeLists.txt』を
ダブルクリックして内容を表示します。
その内容は以下のようになっていると思いますが、
# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html
# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.18.1)
# Declares and names the project.
project("test")
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
add_library( # Sets the name of the library.
test
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
native-lib.cpp)
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log)
# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
target_link_libraries( # Specifies the target library.
test
# Links the target library to the log library
# included in the NDK.
${log-lib})
これを以下のように変更します。( 色が緑や赤の部分が変更箇所や追加箇所です )
# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html
# Sets the minimum version of CMake required to build the native library.
cmake_minimum_required(VERSION 3.18.1)
# Declares and names the project.
include_directories( DXライブラリAndroid版パッケージ内の『Lib_AndroidStudio』のフルパス/${ANDROID_ABI} )
link_directories( DXライブラリAndroid版パッケージ内の『Lib_AndroidStudio』のフルパス/${ANDROID_ABI} )
project("test")
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
native-lib.cpp)
# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
find_library( # Sets the name of the path variable.
log-lib
# Specifies the name of the NDK library that
# you want CMake to locate.
log)
# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
target_link_libraries( # Specifies the target library.
native-lib
# Links the target library to the log library
# included in the NDK.
${log-lib}
android
GLESv1_CM
EGL
GLESv2
OpenSLES
m
DxLib
DxUseCLib
jpeg
png
zlib
tiff
theora_static
vorbis_static
vorbisfile_static
ogg_static
bullet
opus )
『DXライブラリAndroid版パッケージ内の『Lib_AndroidStudio』のフルパス』と
書かれている部分は、DXライブラリAndroid版パッケージ内のフォルダ『Lib_AndroidStudio』のパスに
置き換えてください。( 更にディレクトリの区切りは \ ではなく / にする必要があります )
例えばダウンロードした『DXライブラリAndroid版』のパッケージを Cドライブの直下( C:\ )に展開した場合は
C:\DxLib_Android\Lib_AndroidStudio
がフルパスとなりますので、その場合は include_directories と link_directories の2行の記述は
include_directories( C:/DxLib_Android/Lib_AndroidStudio/${ANDROID_ABI} )
link_directories( C:/DxLib_Android/Lib_AndroidStudio/${ANDROID_ABI} )
となります。( \ を / に置き換えるのを忘れないようにしてください )
尚、DXライブラリをダウンロードフォルダやドキュメントフォルダに入れるとこれらのパス指定が面倒になりますので
DXライブラリはなるべく浅いフォルダに入れておくことをお勧めします。
3. 次に画面左側のリストから『Gradle Scripts』の中にある『build.gradle (Module: (プロジェクト名).app)』を
ダブルクリックして内容を表示します。
その内容は以下のようなものになっていると思いますが、
plugins {
id 'com.android.application'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.example.test"
minSdk 26
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ''
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
externalNativeBuild {
cmake {
path file('src/main/cpp/CMakeLists.txt')
version '3.18.1'
}
}
buildFeatures {
viewBinding true
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}
こちらの下から 5行目の
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
こちらの行の下に以下の行を追加します。
implementation "androidx.startup:startup-runtime:1.1.1"
加えて、下から7行目の
implementation 'androidx.appcompat:appcompat:1.6.1'
こちらの行の 1.6.1 の箇所を 1.5.1 に変更します。
implementation 'androidx.appcompat:appcompat:1.5.1'
これらの変更を加えると、画面上部に
『Gradle files have changed since last project sync. A project sync may be necessary for the IDE to work properly.』
という表示がされますので、その文章の右側にある『Sync Now』をクリックして、プロジェクトの同期を行います。
プロジェクトの設定は以上です。
4.プログラムを組む
Android Studio の画面左側のリストの『app』→『cpp』の中にある『native-lib.cpp』をダブルクリックして内容を表示すると
最初から約10行のプログラムが書かれていますので、まずこれをすべて削除します。
そして何もプログラムに書かれていない状態になった native-lib.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エミュレーターでプログラムを実行することになるので、下記の手順を踏んでエミュレーターの準備を行います。
① Android Studio のメニューの『Tools』→『Device Manager』を選択して
『Device Manager』を表示します。
② 最初は何もエミュレーターが作成されていない状態ですので、表示内の『Create Device』をクリックします。
③ 次に『Select Hardware』の画面が表示されますが、最初から作成するデバイスの設定がされていますので、
特に変更はせずに『Next』をクリックします。
④ 次の『System Image』では作成するデバイスで使用する AndroidOS のイメージを選択するのですが、最初はイメージが一つも
無い状態なので、リストの『API Level』が『28』となっている行の『Download』をクリックして、少し古めのシステムのイメージをダウンロードします。
⑤ システムイメージダウンロードダイアログでは最初に『License Agreement』が表示され、下側の選択項目が『Decline』に
なっていますので、こちらを『Accept』に変更してから『Next』をクリックするとダウンロード及びインストールが開始されます。
⑥ システムイメージのダウンロードとインストールが完了したらダイアログ右下の『Finish』をクリックしてダイアログを閉じます。
⑦ すると『System Image』の画面に戻り、且つリストの一番上の行が選択された状態になっていますので、
そのままダイアログ右下側にある『Next』をクリックします。
⑧ 次の『Android Virtual Device (ADV)』の画面では仮想デバイス( エミュレーター )の名前などを変更できますが、
特に変更せずにダイアログ右下の『Finish』をクリックします。
⑨ 次に『Device Manager』の画面になり、作成したエミュレーターが追加されていますので、『Actions』の項目の下に
表示されている右三角マーク( ▶ )をクリックしてエミュレーターを起動します。
⑩ エミュレーターの起動には時間が掛かりますので暫く待ちます。
これで Androidエミュレーターの準備は完了です。
6.プロジェクトのビルド、実行
エミュレーターの準備が完了したところで早速プログラムを実行してみましょう。
① Android Studio のメニューから『Build』→『Make Project』を選択して、プロジェクトをビルドします。
② ビルドが終了したら、次にメニューから『Run』→『Run 'app'』を選択します。
③ エラーがなければプログラムが実行されます。
成功すれば、仮想デバイス( エミュレーター )の画面の中心に四角形が表示されます。
さてできあがった Androidアプリのパッケージファイルですが、それはプロジェクトのフォルダの中の
『test\app\build\outputs\apk\debug』の中に『app-debug.apk』というファイル名で作成されます。
( プロジェクト名を『test』以外にした場合は、『test』の代わりに付けたプロジェクト名となります )
この apk ファイルを Android端末にインストールすれば Android Studio を介さなくても作成したアプリが動作します。
( Android の Playストアに提出するファイルも、この apk ファイルとなります )
これでDXライブラリを使っての Androidアプリ開発の方法はわかりました。後は好きにプログラムを組んで
ゲームを作るだけです。ですがまだDXライブラリの機能は初期化と終了とドットを描画する関数しかわかっていません。
この他の関数は DXライブラリ関数リファレンスのページ で解説されていますのでそちらを参照して下さい。
あと、Androidアプリの開発に関する基礎的な情報や注意点を Androidアプリ開発の基礎的な情報や注意点など で
解説していますので、こちらも併せてご覧ください。
戻る