IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
Solarisの例: % cc -G -I /usr/java/include -I /usr/java/include/solaris JniJikken.c -o libJniJikken.so Solarisでのmakefileの例: all: libJniJikken.so lib%.so: %.c %.h cc -G $< -I /usr/java/include -I /usr/java/include/solaris -o $@ %.h: %.class javah $* %.class: %.java javac $< ↑この例の場合、javaのコンパイル・javahでの生成まで含んでいる。 VC++の例: インクルードパスの追加方法参照。 ↓JDK1.6の場合 C:\Program Files\Java\jdk1.6.0\include,C:\Program Files\
JNIのC言語/C++側のコーディング C言語とC++の違い コーディング例 JNI関数の概要 プリミティブ型・参照型(JavaオブジェクトのC/C++での扱い) String型 [/2006-11-09] 配列型 クラスの取得・インスタンス生成 [/2008-02-02] オブジェクトのメソッド呼び出し [/2008-02-07] オブジェクトのフィールド操作 ローカル参照の終了 [2006-11-09] 例外処理 [/2007-10-13] jni.hの中でC言語/C++で使える構造体 (クラス)が定義されているが、 コンパイラーがC言語の場合とC++の場合では定義のされ方が異なり、使い方も少し異なる。 JniJikken.c: JniJikken.cpp: #include "JniJikken.h" JNIEXPORT jbyteArray JNICALL Java_JniJikk
Prolog Before I get into the rest of the post, here is a link to a .zip of the Eclipse project files if you just want to skip ahead. The Rest Of The Post Native software development on Android using its JNI capabilities is incredibly frustrating without proper visibility into the causes of native code errors. Here is an example project and some background info that shows how to get gdb and gdbserv
前回の<その1>ではどこのサイトでもAndroid SDKをインストールする解説と同じですが、最後の方は面倒になったので端折ってしまいました。まぁ、あまり細かく書いても初心者さんが見ることはあまりないのでは?って思っていますので。 私(だけなのかもしれません)が今まで作業した方法は、JNIのC部分を別プロジェクトとして作成し、コマンドラインからCコンパイル後、Javaに取り込んで連携させる方法でした。EclipseにCDTをインストールしても、エディタ程度にしか使えないのであまり意味が無いと思っていました。 久しぶりにJNIを本気で取り組むことになり、何か方法が無いかと思い調査を繰り返してたどり着いたので、備忘録的に記載します。因みに参考としましたのが、CDT AndroidというYouTube動画(英語)です。そのままではNDKバージョン、Eclipseバージョン等が異なり環境もCygw
以下はAndroidのJNIをgdbでデバッグする方法である。 要するに、Androidの単なるユーザーや一般のAndroidアプリケーション開発者には関係ない。 したがってそういう人たちは安心して無視してほしい。 例としてAndroid NDKに含まれるサンプルプログラムであるHelloJNIを使用する。 Android SDKやAndroid NDK、Androidソースコードの取得・構築・起動、はたまたgdbの使い方についての情報は省略する。 この文書はすでにそういった情報を必要としない人たちのためにある。 筆者はUbuntuを使用したが、内容はプラットフォームに依存しないため、よそでも同様のはず(無保証)。 HelloJNIの構築後、Androidソースコードのトップディレクトリに移動したところから出発する。HelloJNIのlibsの下にあるlibhello-jni.soがJNI
Java Native Interface(JNI)とは、Javaの1レイヤーである。JNIを用いると、Java Virtual Machine(JVM)上で動作しているJavaのコードから、CやC++、アセンブリのような他の言語で記述されたネイティブなアプリケーションやライブラリを呼び出すことが可能になる。また、逆にそれらのネイティブなコードからJavaのコードを呼び出すことも可能だ。 JNIは、アプリケーションのコードをすべてJavaで記述することが不可能な場合に、ネイティブなメソッドを呼び出してその問題を回避する目的で使用される。具体的には、たとえばJavaの標準クラスライブラリがプラットフォーム依存の機能やプログラムライブラリをサポートしていないような場合には、JNIが用いられる。また、他の言語で書かれている既存のアプリケーションを改修し、Javaからアクセスできるようにする目的で
2. 必要なもの • Android SDK – 1.1_r1で試してます • Eclipse • android.git.kernel.org より – toolchain • C コンパイラ arm-eabi-gcc など – bionic • C ライブラリ / ヘッダファイル • glibc でない • Dynamic Linker / Loader も独自 – dalvik • jni.h 3. 準備 • Android のソースを取得してビルド – 手順は次の URL に詳しく書いてあります – http://source.android.com/download – 実行環境に合わせてブランチを選んでね • 2009.3.14頃の master で試してます • ビルドされたモノは /xxx/out に出来る – /xxx は Android ソースを置いたディレクトリ –
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く