Android™は、Google社が提供するモバイル機器向けのOSです。最新のGUIをオープンソースでターゲットに実装できるため、モバイル機器以外での活用にも注目が高まっています。Androidの魅力の一つにJavaでアプリケーションを開発する環境が整備されていることが挙げられます。パソコン上のエミュレータと統合開発環境のEclipseを使用することで、誰でも気軽にJavaアプリケーションを開発することができます。Eclipseを使ったJavaの開発環境は強力ですが、Javaという言語だけでは処理しきれない問題もあります。例えば、処理スピードや、独自デバイスを直接制御することができないなどの問題が挙げられます。これらの問題を解決するにはJava以外での処理が必要になります。Androidではこのような問題に答えるために、NDKやJNIと呼ばれるJavaからC言語のライブラリをコールするインターフェースが用意されています。JNIを使用すればC言語の処理ルーチンをコールすることができますので、スピードが要求される処理やデバイスの制御をC言語で記述し、Javaで書かれたメインプログラムからそのルーチンを呼び出すということができます。
しかし、ここにはEclipseでJNIからC言語のデバッグをシームレスに行うことができないという更なる問題があります。gdbを使用すればデバッグできなくはないですが、スレッドのデバッグができない、強制ブレークができない、プログラムの先頭からデバッグできない、など初級者にはハードルの高い問題が存在します。また、gdbを使用した場合、コマンド・レベルでのデバッグが強いられますので、gdbのコマンドを理解する必要があります。
このような問題をクリアするため、Linuxのアプリケーションデバッガ「C-Shark」をJNIのアプリケーションデバッグに対応させることに成功しました。この機能を使用すれば、スレッドのデバッグはもとより、強制ブレーク対応やJNIで呼び出されるC言語アプリケーションの先頭からデバッグすることができます。
Androidといえば最新のテクノロジーで動作しているように思われがちですが、そのカーネルにはLinuxをベースにカスタマイズされたものが採用されています。したがって、自社ターゲットにAndroidを搭載するためにはLinuxのポーティングの技術が必要ですし、ドライバ開発にもLinuxの知識が必要です。アプリケーションの開発にはEclipseやC-Sharkで十分ですが、カーネルのポーティングや、ドライバ開発にはICEが必須となります。
当社のICEは、Linuxのデバッグツールとして多くの実績を積んできていますので、Androidカーネルのポーティング、ドライバ開発に威力を発揮します。
カーネル〜ドライバ〜アプリケーション・デバッグ
Androidカーネルのポーティングやドライバのデバッグは以下の製品で可能です。
アプリケーション専用デバッガ
Android NDKのC言語プログラムのデバッグは以下の製品で可能です。
※PALMiCEの機種の違いについてはこちらをクリックしてください