📱
【Unity × Android】Jarプラグインの作成方法
UnityでAndroidのネイティブ機能を利用する際、Androidネイティブプラグインを作成する方法は主に以下の4種類があります。
- Android Library プロジェクト(.aarプラグイン)
- JARプラグイン
- Android用ネイティブプラグイン(C/C++利用)
- Java/Kotlinのソースプラグイン
それぞれの方法に特徴がありますが、Jarプラグインで、バッテリー残量を表示する簡単なサンプルを解説します。
手順概要
-
空のプロジェクトを作成する
Android Studioで「No Activity」を選択して新しいプロジェクトを作成します。
-
ライブラリモジュールを追加する
- 「File → New → New Module」を選択します。
- 「Java or Kotlin Library」を選び、モジュール名を入力します(例:
mylibrary
)。
-
不要なappモジュールを削除する
- プロジェクト構成のシンプル化のために、デフォルトで生成される
app
モジュールを削除します。
- プロジェクト構成のシンプル化のために、デフォルトで生成される
-
Kotlinコードを追加する
以下のコードを作成して、JARプラグインの機能を実装します。
Kotlinコード
package com.example.mylibrary
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.BatteryManager
class BatteryHelper {
fun getBatteryLevel(context: Context): Int {
val batteryIntent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
val level = batteryIntent?.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) ?: -1
val scale = batteryIntent?.getIntExtra(BatteryManager.EXTRA_SCALE, -1) ?: -1
return if (level != -1 && scale != -1) {
(level * 100) / scale
} else {
-1
}
}
}
-
Run → Edit Configurations → createJarFileを追加する
- Android Studioの上部メニューから「Run → Edit Configurations」を開きます。
- 新しいGradleタスクを追加し、名前を
createJarFile
に設定します。
-
myLibraryをビルドする
- 「Build → Make Project」を実行します。
- この操作により、
tmp
フォルダにkotlin-classes
ディレクトリが生成され、コンパイル済みのクラスファイルが保存されます。
-
createJarFileタスクを実行する
- Gradleタスク
createJarFile
を実行して、JARファイルを生成します。
- Gradleタスク
Gradle設定
以下のように、mylibrary/build.gradle
ファイルを設定します。
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.8.10'
}
group 'com.example'
version '1.0'
repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.10"
}
tasks.register("createJarFile", Jar) {
archiveBaseName.set("BatteryPlugin") // 出力ファイル名
archiveVersion.set("1.0")
from {
fileTree(dir: layout.buildDirectory.dir("tmp/kotlin-classes/debug"), includes: ["**/*.class"])
}
manifest {
attributes("Implementation-Title": "BatteryPlugin", "Implementation-Version": "1.0")
}
}
JARファイルの生成
-
Android Studio右側の「Gradleタブ」を開き、
createJarFile
タスクを選択します。 -
実行後、以下のパスに
.jar
ファイルが生成されます:build/libs/BatteryPlugin-1.0.jar
Unityへのインポートと呼び出し
-
Unityにインポート
-
生成された
.jar
ファイルを以下のフォルダにコピーします:Assets/Plugins/Android/
-
-
C#コードを作成して呼び出し
UnityからJARプラグインの機能を呼び出すために、C#でラッパークラスを作成します。
C#コード例
using UnityEngine;
public class JarPluginWrapper
{
private const string PluginClassName = "com.example.mylibrary.BatteryHelper";
public int GetBatteryLevel()
{
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
using (AndroidJavaObject batteryHelper = new AndroidJavaObject(PluginClassName))
{
return batteryHelper.Call<int>("getBatteryLevel", currentActivity);
}
}
}
}
}
実行と確認
-
Unityでボタンを作成
- 以下のスクリプトをボタンにアタッチして、バッテリーを表示します。
public class BatteryDisplay : MonoBehaviour
{
public Text batteryText;
void Update()
{
BatteryPluginWrapper batteryPlugin = new BatteryPluginWrapper();
int batteryLevel = batteryPlugin.GetBatteryLevel();
batteryText.text = "Battery Level: " + batteryLevel + "%";
}
}
-
ビルドしてAndroidデバイスで実行
- バッテリーが表示されます。
- バッテリーが表示されます。
Discussion