androidでJNIを使うケースを調べてみた

プライベート方面と、仕事方面でもandroidに絡むかもしれないことになったので、軽く調査。

androidはSDKのエミュレータを動かしたことしかないので、レイヤ構成とか開発のやり方とかを調査中。

大まかな感じをつかむには以下の記事あたりが良いかも。

[Think IT] 第1回:Androidと組み込み開発 (1/3)

DalvikVM上でのJavaによるアプリの作り方はあちこちに書かれているので良いとしても、今回一番知りたいのは、

  • いろんなハードへの移植(ARMベース)
    • 基本的にはハードに乗っているチップに対応したドライバを探すか書けば良いはず。
  • androidが標準でサポートしていないデバイスのサポート方法
    • ドライバはもちろん、ミドル層、そしてVM上のアプリからどうやって制御するのか?

ざっと調べた感じだと、新規のデバイスはアプリからはJNI経由でnativeで作ったライブラリを呼び出し、ライブラリからLinuxのデバイスファイルを叩く(ドライバは別途)という感じでいいんだろうか。

ただどこかで読んだけどアプリからのJNI経由での制御は、まだ非公式の制御ルートという噂も。

しかも、Androidアプリで高速描画チューニングをするコツ(1/3)-@ITを読むと、JNI経由だとnativeを呼び出す際のオーバーヘッドが馬鹿にならないとも。大量のデータ転送系のデバイスとか大丈夫なんだろうか...?

Android JNI

AndroidでJNIを使う方法 - Android情報-ブリリアントサービス

Androidの実機への移植の実際 Androidの実機への移植の実際

手を付け始めたばかりなので、まだまだ調べることがたくさん。

Linuxでのモジュール・ドライバの開発経験が無いのでその辺も知っておかないといけなさそうな気もするな...。

タイトルとURLをコピーしました