今のAndroid Studioは直接JavaLibraryを作成する事が出来ないので、最初は「File > New > New Project...」から空のプロジェクトを作成。
「Application name」「Company Domain」「Package name」「Project location」
上記4項目は、何でもいい
ただ、「Minimum SDK」には目的となるバージョンを指定し、「Add an activity to Mobile」は「Add No Activity」以外を選択する事。
「Activity Name」「Layout Name」「Title」「Menu Resource Name」
上記4項目も 何でもいい。最早、デフォルトのままで。
画面左上の「Androidタブ」を「Projectタブ」に変更
Projectエリアの何もない所で右クリック。「New > Module」でCreate New Moduleウィンドウを表示し、「Java Library」を選択してモジュールを作成
「Library name」「Java package name」「Java class name」
上記3項目は、任意の名称を設定する(ここで設定した値にて、Unity側からアクセスするので他と被らない命名を心掛ける事)
ここでは例として、「Library name : androidexampleplugin」「Java package name : com.android.example.plugin」「Java class name : AndroidExamplePlugin」とする
作成したモジュール内にある「build.gradle」を下記の通りに編集する
apply plugin: 'java'
sourceCompatibility = '1.7' // コンパイルSDKのバージョンを指定
jar.baseName = 'AndroidExamplePlugin' // .jarの名称
version = '1.0.0' // .jarのバージョン値
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('/Applications/Unity/Unity.app/Contents/PlaybackEngines/AndroidPlayer/release/bin/classes.jar') /*追記する行,classes.jarを追加する*/
compile files('/Users/ユーザ名/Library/Android/sdk/platforms/android-22/android.jar') /*追記する行,android.jarを追加する*/
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8' // コンパイル時の文字コード指定
}
因みに、追記した行に記されている.jarへのパスはPC環境によって異なる為、絶対にパスの確認を怠らない事
また、上記例でのパスには「/」が使用されているが、これは漢発環境がMacの場合であり、Windowsの場合は代わりに「\\」を使用する事
追記後、AndroidStudioのSync Project with Gradle Filesを実行しておく。

モジュールの.javaファイルを編集
ここでは確認用として、toast表示機能のみを付ける
package com.android.example.plugin;
import android.app.Activity;
import android.widget.Toast;
import com.unity3d.player.UnityPlayer;
public class AndroidExamplePlugin {
// static でないとUnityが呼び出してくれなかった。何故?
public static void showToast() {
final Activity activity = UnityPlayer.currentActivity;
// runOnUiThreadを使わないと怒られるらしい
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(activity, "successful!", Toast.LENGTH_SHORT).show();
}
});
}
}
Assets/Plugins/Android/直下に、先ほど作成した「AndroidExamplePlugin-1.0.0.jar」ファイルを配置
.jarの呼び出しは下記の通り
using UnityEngine;
using System.Collections;
public class Caller : MonoBehaviour {
void Start () {
using ( AndroidJavaClass plugin = new AndroidJavaClass("com.android.example.plugin.AndroidExamplePlugin")){ // 呼び出しは「パッケージ名+クラス名」
plugin.CallStatic("showToast");
}
}
}

コメントをかく