JNA を Android で使う方法
C言語のライブラリを Java から使うときに便利な https://github.com/twall/jna (JNA) を Android で使う方法のメモです。(追記:JNA 4.0.0 に合わせて大幅に書き換えました)
JNA は 4.0.0 現在、Android に対応していますが、ドキュメントがないです。3.4.0 当時、Android 対応をしようとして、中途半端になっていて、3.5.1 でその残骸が残っていましたが、4.0.0 ではちゃんと対応しています。
手順
- https://github.com/twall/jna/raw/master/dist/android-arm.jar をダウンロードして、解凍して、libjnidispatch.so を取り出します。
- libjnidispatch.so を自分の Android アプリのプロジェクトフォルダの libs/armeabi に置きます。
注意点
注意点は、下記のように Structure にはフィールドの順番を指定しないといけないです。(追記:昔のJNAはこれが必須ではなかったのですが、JNA 3.5.0 からそもそも必須です。)
@Override protected List getFieldOrder() { return Arrays.asList("x", "y"); }