おもちゃバコ

中身スカスカ♡

Android Studio: C++を使用してAndroidアプリ開発環境を整備する

こんにちは

夏から秋に切り替わる季節は憂鬱になりますね(自分だけ?).

Androidアプリの開発環境をAndroid StudioC++で整備したときの備忘録です.



事の始まり

C++Androidアプリのゲーム開発をしたいな」

「DxlibがAndroid対応じゃん!!」

Visual Studioでaab出力の仕方がわからないから,リリース出来なかった...」

「純正開発環境使うか~」←ココ


参考文献

今回は感でやったのでありません.


開発環境

Android Studio

Android Studio Arctic Fox | 2020.3.1 Patch 2
Build #AI-203.7717.56.2031.7678000, built on August 27, 2021
Runtime version: 11.0.10+0-b96-7249189 amd64
VM: OpenJDK 64-Bit Server VM by Oracle Corporation
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 1280M
Cores: 4
Registry: external.system.auto.import.disabled=true

環境整備

  1. Android Studioをインストール
     必要に応じて,Javaやその他いろいろをインストール(丸投げ).
  2. Android Studioでプロジェクトを作成
     1. New Project
     2. Template: Native C++
     3. Language: Java
      プロジェクト名やAndroidバージョンはお好きに.
     4. 新規プロジェクト作成時の自動ビルド待ち.
      この時に足りないものをインストールしてねと言われる.
      とりあえず全部インストールするのがオススメ.
     5. Androidエミュレータを作成
      AVD Managerからお好きに作成.
      APIレベルは高ければいいと思います(適当).
     6. エミュで実行.
      とりあえず動作確認してみる.
     7. ソースコード確認
      後述.

動作確認

実行結果

f:id:lambda410:20210920105426p:plain

ソースコード

C++でライブラリを作成して,Javaで呼んでいるみたいだね.

ここで少し改良を加えてみる.
OpenGLESのAPI呼び出しを試してみた.

ソースコードは感で書いてインテリセンスに任せたモノを使用しました.
当然,シェーダはnullptrなので動作しません.

CMakeList.txtの修正も必要っぽいです.
おそらく新規ファイルなどもここに追加かな?

target_link_libraries( # Specifies the target library.
        myapplication
        GLESv3 // これを追加

        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

コンパイル通って実行できたのでヨシッ!!!


考察

C++とOpenGLESでAndroidアプリ開発したかったけど,これならJavaでやった方が早そう.
それか,Visual StudioのNative C++でaab出力の方法を探した方が良さそう.


まとめ

公式推奨の方法が色々な意味で一番だと思いました.
それ以外は修羅の道を歩む覚悟が必要なので,面倒くさがりはやめた方が良いと感じます.