今の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"); } } }
コメントをかく