読者です 読者をやめる 読者になる 読者になる

Unityでjarライブラリを利用する

皆さん、初めまして。
アドウェイズエンジニアの山川です。

今回はUnityでjarライブラリを利用する方法をサクッと紹介させて頂きます。

ではさっそくネタバレをしますと以下の2ステップで終わってしまいます。
  1. jarファイルを{UnityProject}/Plugins/Android/に配置する
  2. AndroidJavaClass/AndroidJavaObjectクラスを使ってjarライブラリのメソッドを呼びだす
これで終わりです、やったね!



…これで本当に終わると、向かいの席で天使のような笑みを浮かべている菊池編集長に申し訳が立たないので、もう少しご説明させて頂きます。

手元にoreore.jarがあったのでこれをUnityのProjectに配置します。
oreore


では実際にC#のコードからjarライブラリのメソッドを呼び出してみましょう。

//Oreoreクラスのコンストラクタを叩き、fugaメソッドを呼び出し文字列を受け取る
AndroidJavaObject oreoreInstatnce = new AndroidJavaObject("net.adways.yamakawa.Oreore");
String fuga = oreoreInstatnce .Call<String>("fuga");
Debug.Log(fuga); //out put "FUGA!!"

//Oreoreクラスのhogeメソッドを呼び出し文字列を受け取る
AndroidJavaClass oreore = new AndroidJavaClass("net.adways.yamakawa.Oreore");
String hoge = oreore.CallStatic<String>("hoge");
Debug.Log(hoge); //out put "HOGE!"

ちなみにOreoreクラスのJavaコードはこんな感じです。
(こんなクラスを作って編集長から怒られないか心配になってきました…
package net.adways.yamakawa;

public class Oreore {
   
    public Oreore() {
    }

    public static String hoge() {
        return "HOGE!";
    }
   
    public String fuga() {
        return "FUGA!!";
    }
}

裏側ではJNIがごにょごにょ動いてるのですが、直接AndroidJNIクラスから叩き始めるといちいちクラスやメソッドなどのポインタを取得したり、引数や戻り値のシグネチャを指定しないといけないので非常に面倒です。


呼び出す際の注意としては、UnityのGameプレビューなどで動かすとJNIがエラーを吐き出すので(アプリはクラッシュしません)、実際にアプリをビルドしてから動作を確認するようにして下さい。


というわけで結局とても簡単な内容で終わってしまいましたが、「Unityでjarライブラリを利用する方法」は以上となります。
方法は他にもありますので、また余裕が出たら記事を書かせて頂くかもしれません。
ではまたの機会に!!

Let's enjoy coding!!