LoginSignup
2
2

More than 5 years have passed since last update.

Gomobileで作ったAARをばらしてShared LibraryだけをUnityで動かしてみた

Last updated at Posted at 2016-09-10

昨日投稿した「GomobileからAARを作ってUnityで動かしてみた」からShared Libraryだけで動くよね?ということでやってみた。

前回作ったライブラリ

hoge.go
package hoge 

func GetInt() int {
    return 10
}
$ gomobile bind -target=android .

$ unzip -Z1 hoge.aar 
AndroidManifest.xml
proguard.txt
classes.jar
jni/armeabi-v7a/libgojni.so
jni/arm64-v8a/libgojni.so
jni/x86/libgojni.so
jni/x86_64/libgojni.so
R.txt
res/

今回の対応

libgojni.soの中身を見る。
Java_go_hoge_Hoge_getIntが使えそうだ。

$ nm libgojni.so | grep -i getint 
0000000000195760 T Java_go_hoge_Hoge_getInt
00000000001353e0 t _/var/folders/9b/3xn807qd3y9955mt2qwl58mc0000gn/T/gomobile-work-060054096/gomobile_bind._cgoexpwrap_6a40b88305f8_proxyhoge__GetInt
0000000000230b68 d _/var/folders/9b/3xn807qd3y9955mt2qwl58mc0000gn/T/gomobile-work-060054096/gomobile_bind._cgoexpwrap_6a40b88305f8_proxyhoge__GetInt.f
00000000001353a0 T _cgoexp_6a40b88305f8_proxyhoge__GetInt
0000000000195540 T proxyhoge__GetInt

hoge.aarのjni配下をUnityに配置する

hoge.aarを解凍して、下記二つをUnityのAssets/Plugins/Android/libsに配置する。
x86_64arm64-v8aはビルド時に拒否られた。何か設定必要?

  • Plugins/Android/libs/armeabi-v7a/libgojni.so
  • Plugins/Android/libs/x86/libgojni.so

気持ちrenameしてみる。
libgojni.so -> libhoge.so

Unityの処理

前回と同じく加算する処理を書いた。

using UnityEngine;
using System.Runtime.InteropServices;

public class ButtonTest : MonoBehaviour {

    int gnum = 0;

    [DllImport("hoge")]
    private static extern int Java_go_hoge_Hoge_getInt();

    public void TestClick()
    {
        int num = Java_go_hoge_Hoge_getInt();
        Debug.Log(num);
        gnum += num;
    }

    void OnGUI(){
        GUI.Label (new Rect (0, 0, 100, 30), gnum.ToString());
    }
}

感想

すごい簡単に使えるようになった。
prefixがうざいので何かいい方法ないのかな?
他は毎回実機にインストールが面倒くさいので、開発時はMac用のShared Libraryを作って置くのが良さそう。

小ネタ: Shared Libraryの容量大きい

% du
3.4M    ./arm64-v8a
2.5M    ./armeabi-v7a
2.4M    ./x86
3.4M    ./x86_64
 12M    .
2
2
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
2
2