Developer's memo

開発メモ

Android

【Android】【NDK】JNIのパッケージ名、クラス名に_(アンダースコア)がある場合

JNIの関数名は以下の命名規約があります。 関数名規約 "Java_パッケージ名_クラス名_メソッド名" それぞれを_(アンダースコア)でつなぐわけですが、 そもそもパッケージ名、クラス名に_(アンダースコア)があったらどうなるんだろう? ということで試してみま…

【Android】【NDK】コンパイルオプションだけでとりあえず性能を出す方法

NDKでコードを変えたく無いけど性能は上げたい…という場合は 以下のオプションで性能が上がるかもしれません。 $ ndk-build NDK_DEBUG=0 NDKで作成したCプログラムをデバッグするで紹介したデバッグオプションを 0 にしています。 このオプションで gcc の最…

【Android】【NDK】ndk-buildでコンパイルオプションを出力する方法

ndk-buildのgccでどんなオプションがついているのか知りたかったので コンパイルオプションを見る方法を調べてみた。 $ ndk-build V=1 これでバッチリ出力されます!

【Android】実行時間を計る

実行時間を計ってログに出力する方法。 よく使うのでメモメモ。 long start = System.currentTimeMillis(); (処理) long stop = System.currentTimeMillis(); Log.d("タグ", "処理時間:" + (stop - start) + " msec");

【Android】【NDK】NDKで作成したCプログラムをデバッグする

NDKで作成したCプログラムをgdbでデバッグする方法です。 ■デバッグするためにやっておくこと AndroidManifest.xmlにandroid:debuggable="true"を設定 ndk-build NDK_DEBUG=1 でビルドする ※デバッグビルドをした場合、最適化が行われないため性能劣化する…

【Android】【NDK】複数の静的ライブラリを結合する

複数の静的ライブラリ(.a)を一つのモジュールにする場合、Android.mk には 以下のように記述する。 生成するモジュール: aaa.so 結合する静的ライブラリ: libbbb.a libccc.a LOCAL_MODULE := aaa LOCAL_SRC_FILES := aaa.cpp LOCAL_LDLIBS := -L[ライブラ…

【Android】【NDK】ndk-buildで静的ライブラリを作る

ndk-buildで静的ライブラリを作るにはmakeファイルを 変更する必要がある。 ①Android.mk hello-jni などで include $(BUILD_SHARED_LIBRARY) となっている箇所を include $(BUILD_STATIC_LIBRARY) にする。 ②Application.mk Android.mkと同じディレクトリに…

【Android】【NDK】NDKがjava.lang.UnsatisfiedLinkErrorで動かない

サンプルの hello-jni から卒業して、自作のNDKを動かそうとしたところ、 アプリが強制終了してしまった。ddmsには以下のエラー文が。 java.lang.UnsatisfiedLinkError:[JNIメソッド名] エラー内容を調べてみると、 「loadLibraryの呼び出し忘れか、指定さ…

【Android】【NDK】1からJNIプロジェクト作成する方法

NDKのサンプルプロジェクトを直接インポートして実行する方法は わかりましたが、実際自分のアプリをNDKを使って作りたい場合に 最初どういう手順が必要なのか疑問だったので調べました。 以下手順。 ※Eclipseは日本語済みの解説 ①通常通りにAndroidプロジェ…