LoginSignup
33
29

More than 5 years have passed since last update.

Unity 2018で.javaもビルドされるようになった話

Posted at

Unity2018.2のリリースノートを見ていて
他サイトとかであんまり紹介されてなかったけど便利だなと思った機能

image.png
Android:UnityプロジェクトでプラグインとしてJavaソースファイルを使用するためのサポートが追加されました。
これらのファイルはコンパイルされ、APKに組み込まれます。

iOS用プラグインみたいにソースコード入れておけば.aar、.jarを一々作らなくてもすみますよ。

ってことですかね。

地味にパッケージ名の設定とかが面倒で基盤化するのが面倒だったんだけど
これのおかげでわりと気楽に(?)できるようになるかな

ためしてガッテン

一度適当にAndroid向けでExportする
image.png

Assets/Plugins/Androidにエクスポートしたフォルダのsrc/main/AndroidManifest.xmlをコピペする
image.png

同一フォルダに
https://docs.unity3d.com/Manual/AndroidUnityPlayerActivity.html
のと同じもの作っとく

ぶっちゃけそれだけだと味気ないのでトーストでも入れとく

OverrideExample.java
package 【自プロのパッケージ名】;
import com.unity3d.player.UnityPlayerActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast; 追加

public class OverrideExample extends UnityPlayerActivity {
  protected void onCreate(Bundle savedInstanceState) {
    // call UnityPlayerActivity.onCreate()
    super.onCreate(savedInstanceState);
    // print debug message to logcat
    Log.d("OverrideActivity", "onCreate called!");
  }
  public void onBackPressed()
  {
    Toast.makeText(this, "テスト", Toast.LENGTH_LONG).show(); ←追加
  }
}

起動時にログ出力、バックキーでトースト表示するだけ。

配置が終わったらAndroidManifest.xmlを開く
5行目あたりに <activity android:label="@string/app_name"~~ってのがあってその一番うしろに

android:name="【パッケ名】.UnityPlayerActivity">

というのがあるのでそこを

android:name=".OverrideExample">

に変更
OverrideExampleはjavaのクラス名

そして普通にビルドする

実機に転送してバックキーを押すとトースト表示さる!
image.png

ちなみに
PluginsのフォルダがAssets直下じゃなかったり
Manifestの書式変だったりするとちゃんと動かないので注意
あと地味にjavaコードのpackage のところを間違ってたりするのでそこも注意

おわり

結局ソースにpackage名を入れてあげないといけないので完全に基盤として分離は難しそうだね
ただ エディタ拡張でその部分だけパッケージ名に差し替えてからビルドするようにすれば問題はなさそう

jar作るの面倒だったからこれは本当に助かる機能。

33
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
29