ORこのページではAndroidアプリ開発関連のメモを書いています。interfaceエミュレータを動作させている開発環境とネットワーク通信を行いたい場合は上記の通り10.0.2.2を参照すれば良いです。NDK(JNI)関連JNIHelpJNIで呼び出される関数名はパッケージ名、クラス名、メソッド名を連結した名前を付ける必要があり可読性を著しく損なう原因となっています。関数を使うと便利です(以下抜粋)。codeFPU(浮動小数点演算ユニット)関連のオプションVFP/NEON関連のオプションです。オプションで指定します。ARMv6)命令を使います。オプションで利用するFPUを指定できます。-mfpu=vfpv3-d16このようにFPU名を明示します。s15NEONを利用したベクトル化ベクトル化のオプションを追加指定します。オプションでQレジスタ(128bitレジスタ)を利用するように指定します。[ip]!これでNEON(ARMv7)命令を使うようになります。値の名前で勘違いしそうですが、浮動小数点演算をエミュレーション実行しているわけではなくハードウェア(FPU)で演算してくれます。Interface)を指定するもので、関数呼び出し時のレジスタの使われ方が異なります。FPUがない(soft)場合との互換性が取れるように、ハードウェアFPUで関数によって演算が実行される場合でも浮動小数点引数は整数レジスタ(r)に渡されます。オプションこれはAndroid特有のものではなくGCC一般の最適化オプションです。このオプションを指定すると次のオプションを一度に指定したことになります。-fno-math-errno-funsafe-math-optimizations-fno-trapping-math-ffinite-math-only-fno-signaling-nans実行速度最適化のためANSIやIEEEの規則や仕様を破ることをGCCに許します。関数の引数が負にならないと仮定したりとか。結果として浮動小数点演算の精度が変わってしまうような最適化でも行うようになります。精度を重視する場合は指定しないようにしましょう。O3オプションを併せて指定されることが多いです。指定すれば確認できます。3.2以前のプロジェクトで動作していたXMLを扱うプログラムが4.0以降では動作しなくなる可能性があります。画像処理を行うAndroidアプリ開発はメモリとの戦いです。scale);画像のデコードに合計32KBしか使えない模様。3.0)未満ではカメラ処理の種類を明示的に指定(android.view.SurfaceHolder#setType)しておかないとアプリが落ちてしまいます。指定すると「バッファに入れられた画像を画面表示する(カメラプレビュー)」という処理になります。Androidについては別ページに。Androidソースコードリーディングまだ殴り書きのメモ段階です、コードリーディングを進めながら整理していきますAndroidのソースコードリーディングを進めています。Bornsteinが自作の仮想マシンに付けたDalvikという名前は、祖先がむかし住んでいたアイスランドの漁村の名に由来している。きっかけ主にNDK(JNI)を用いた開発中、スタックトレースに見慣れない単語(Zygoteなど)が頻発するため中身を知りたいと思ったから。dalvik.system.NativeStart.mainとか、あとは画像処理アプリを作っているときはよくメモリが足りなくてつまづくことが多いです。budgetなどのエラーZygoteAndroidアプリケーションはマルチタスクで実行することができますが、ここではその仕組みを調べます。Androidを起動すると、まずZygote(ザイゴウト)というプロセスが立ち上がります(いわゆるinitプロセス)。このZygoteはすべてのAndroidアプリケーションの親プロセスになっています。子プロセスを作ります。Zygoteは多くのライブラリを含んでいるため起動には時間がかかりますが、その後の子プロセス生成は非常に高速に行うことができます。子プロセスは親プロセスとメモリ領域を共有するためメモリ消費量も節約できます。ここで、Zygoteプロセス起動からのフローを整理します。--start-system-serverinitでサービスを起動します。エントリーポイントは以下のようになっています。中身は以下のようになっています。}続きは調べつつ書きます。Subsystem)Androidにおける共有メモリ用デバイスで、Linuxカーネルに組み込まれています。