動機
UnityでAndroidアプリを作ると、言語の違いでどうしても手が届かない所がある。
プラグインをJavaで作ってUnityで呼び出したい。
前置き
まず Android プラグインの開発で eclipse を使うのは止めたほうがいいです。
Eclipse だと最初に Android SDK にパス通してADT Pluginをインストールして必要なjarを拾ってくる必要がある。
そこからバージョン互換性とプラグイン同士の相性でエラーが出まくった挙句に、対応してたら起動しなくなった。
おとなしく Android Studio を使うのが良いと思います。
プラグイン作成手順
プロジェクトの新規作成をしてからモジュール(ライブラリ)の新規作成
Unityをインストールしたところから classes.jar を追加(場所はここに書いてある)
AndroidからProjectに 変えると分かりやすい |
自分の環境だとUnityで以下のエラーが出たので build.gradle を編集する。
1 2 3 4 |
Error building Player: IOException: Failed to Move File / Directory from ... > compile fileTree(dir: 'libs', include: ['*.jar'])を以下に変更 > provided fileTree(dir: 'libs', include: ['*.jar']) |
右側のタブからTasks>build>assembleをダブルクリックしてビルドする。
build > outputs > aar 以下に aarファイルが出来るのでUnityに持って行く。
Unityでの使い方
Assets/Plugins/Android に作成したaarファイルを配置する
コードを書く
1 2 3 4 |
AndroidJavaObject ajo = new AndroidJavaObject( "jp.co.narumium.unitylocalpush.LocalPush"); ajo.Call("sendNotification"); ajo.Call("sendNotification", "arg1", 10, 1); //引数あり ajo.Call<string>("sendNotification", "arg1", 10, 1); //返り値あり |
必要に応じて Assets/Plugins/Android/Manifest.xml を編集する。
(特にレシーバーを使う場合には登録を忘れないように)
やっと出来たー(´-д-)