[Android]Unityへ組み込むAndroidライブラリビルド手順解説

Android

 UnityでAndroidのNativeコードを実行したくなった場合、UnityからAndroidのライブラリをコールすることができます。今回はUnityに組み込むためのライブラリ(.aar)をAndroid Studioで生成する手順について説明します。Android Studioのセットアップ手順については前にまとめてありますので、まだの方はご参考にしていただければと思います。

 今回はAndroid NativeコードでAndroidの機能であるToastを表示するサンプルについて解説していきます。なお、作業中、必要なツールのインストールが要求されることがあります。その時はコンソールに案内がでますので、適宜インストールしてください。

Goal

Unity向けAndroidライブラリ(.aar)を生成

https://amzn.to/3bd8XOX




Androidプロジェクトの作成

 ライブラリ用のプロジェクトを作成していきます。まず、Android Studioを起動し、新規プロジェクトを作成していきます。

 プロジェクトのテンプレートを選択する画面になるので、No Activityを選択して次へ進みます。

 すると、プロジェクトのConfig画面になるので、適当に入力します。ここでは以下の用に入力して、説明していきます。LangageはJavaを選択します。Minimum API LevelはデフォルトではLevel 23が選択されています。とりあえず、このままで構いません。入力を終えたらFinishで次に進みます。

 プロジェクトが起動するので、ライブラリのモジュールを追加していきます。メニューからFile>New>New Moduleを選択します。

 モジュールタイプにAndroid Libraryを選んで次に進みます。

 ライブラリ名を入力します。ここでは、ToastLibraryとしておきます。LangageはJava、APIレベルも先ほどと同じで構いません。入力後、Finishを選択して完了します。

 以下のような画面が表示されれば、無事プロジェクトの完成です。

ビルド準備

classes.jarのコピー

 ビルドのためにいくつか準備が必要となります。まず左のウィンドウの表示をProjectに切り替えます。

 ビューが変更されますので、ファイルを展開すると、以下の用になります。最初に作成したプロジェクトが親にいて、ライブラリのプロジェクトが子になっていることがわかります。

 上の図の子プロジェクトのlibフォルダにUnityのclassを定義したファイルを追加します。以下のファイルをコピーして、libのところでペースとします。

Unity Install\Hub\Editor\2019.3.13f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes\classes.jar

 貼り付けると以下のように表示されるのでOKでコピーします。

build.gradleの書き換え

 build.gradleを書き換えます。以下のファイルを開き、後半のdependenciesの書き換えと追加で記述します。

apply plugin: 'com.android.library'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles 'consumer-rules.pro'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

////////////////////ここから変更////////////////////
dependencies {
    compileOnly fileTree(dir: 'libs', include: ['*.jar'])
    compile 'androidx.appcompat:appcompat:1.1.0'
}
///////////ここまで変更////////////////////

ライブラリコードの追加

 ライブラリのコードを追加します。今回はToastを出力するだけの単純なコードになります。まず、以下のフォルダを右クリックしてJava Classを追加します。

 適当にファイル名を入力して進みます。ここではToastLibにしています。

 以下のコードを入力します。outMsgでToastを出力するシンプルなコードです。

package blog.hirokuma.toastlibrary;

import android.content.Context;
import android.widget.Toast;
import com.unity3d.player.UnityPlayer;

/**
 * ToastLib
 */
public class ToastLib {
    Context _context = null;

    public ToastLib(String gameObjName, String callBackName) {
        /* Get current context */
        _context = UnityPlayer.currentActivity.getApplicationContext();
    }

    public void outMsg(String msg) {
        Toast.makeText(_context, msg, Toast.LENGTH_SHORT).show();
    }
}

 入力直後は色々とエラー表示されているかもしれませんが、メニューのFile>Sync Project with Gladle Filesを押すと解消されます。

ビルド

 ライブラリをビルドしていきます。メニューのBuild>Rebuild Projectでビルドします。

 右下のコンソールにBUILD SUCCESSFULが表示されればビルド完了です。

 ライブラリファイル(.aar)は以下に生成されています。

ToastSampe\toastlibrary\build\outputs\aar\toastlibrary-debug.aar
https://amzn.to/3bd8XOX

まとめ

 AndroidのライブラリをUnityからコールするためにはUnity向けにマニフェストにひと手間加える必要があります。これを怠ったせいで、Unity側のビルドが通らなかったり、アプリが起動しなかったりと散々な目にあいました。
 次回はUnityに組み込んで動作させる方法について解説していきます。

コメント