android

AndroidのARTでは実行中にプロファイリングを行ってそれに基づいて再コンパイルするようだ

DalvikVMのJIT vs ARTのAOT AndroidのDalvikVMではDEXコードをインタプリタで実行しつつ、プロファイリングを行っていて実行頻度の高い部分をJITコンパイルします。コンパイルはメソッドよりも小さな単位で行われ、コンパイルにかかる時間もメモリも小さいの…

Android AOSPの64bit化の現在の状況

2014/05/03(#yapf)横浜Android and モバイルOSプラットフォーム部第35回勉強会での@hidenorly さんの発表Investigation report on 64 bit support in Android Open Source Projectに触発されて、現在(2014/5/10)のAOSPでarm64とx86_64でビルドしてみました。…

Computer History Museumでは一番最初に日本のソロバンがでてきたぞ

シリコンバレーに行ったときには見に行くといいよと複数の人から薦められていた "Computer History Museum" に行ってきました。 Welcome | Computer History Museum 場所はMountain View。Caltrain/路面電車の駅から3kmくらいのところ。駅でタクシーを捕まえ…

AndroidのRenderScriptのソースでLLVMをつかっているところ

きつねさんのLLVM本を読んで、LLVMのIR(中間表現。bitcodeと等価)に最適化をかけたりネイティブコードに変換するのは"Pass"として実装されていて、それらの"Pass"をたばねるのが"Passmanager"だと知りました。 (ちなみにこの本はコンパイラのことをよく知っ…

Android 4.4のARTのソース解析メモ

チラシの裏に書いておく。gitのタグはandroid-4.4_r1 android-4.4_r1.2でもartに関しては差分なし。 バックエンドの選択 compiler-backendはビルド時に選択する。QuickとPortableの2種類。デフォルトではQuick。 Portableを選択する方法はbuild/Android.comm…

Android 4.4 のARTのコンパイルしたコードを見た感想

前回(Android 4.4 のARTのブートログを見てみた - 組み込みの人。)の続きです。取り出したoatファイルをoatdumpコマンドで見てみます。 $ oatdump --oat-file=system@priv-app@Launcher2.apk@classes.dex > Launcher2.dump Launcher2.dumpの先頭の5000行をこ…

Android 4.4 のARTのブートログを見てみた

前回の記事(Android 4.4に入ったARTのソースを見た感想 - 組み込みの人。)ではソースコードを見ただけで、動かしてはいませんでした。 今回はAndroid 4.4のソースコードを自分でビルドしてemulatorを作り、そのブートログを見て気がついたことを書きます。採…

Android 4.4に入ったARTのソースを見た感想

Android 4.4 (Kitkat) のソースコードが公開されました。話によるとDalvikを置き換えるARTというものが開発者向けに使えるようになっているそうです。面白そうなので調べてみました。以下は全て推測と個人の感想です。 ART とは 公式な情報はこれ https://so…

Ubuntu 12.04LTS Beta2 でAndroid AOSP masterをビルド

Ubuntu 12.04LTS Beta2 でAndroid AOSP masterをビルド。 $ export PATH=/usr/lib/jvm/jdk1.6.0_31/bin:$PATH $ . build/envsetup.sh $ lunch full-eng $ nohup make -k > make.log3 2>&1 & $ tail -F make.log3 以下のようなエラーになりました。 ... host …

Androidのビルドでメモリが不足しているときのvmstat

RAMを1GBしか割り当ててないVMWareの仮想マシンで、無謀にもAOSPのmasterのAndroidをビルドしてみました。 $ nohup make > make.log 2>&1 & $ tail -F make.log 一晩かかる覚悟なので、ログアウトしても続行するように nohup をつけてバックグランドで実行し…

Xvfbを使ってAndroidのemulatorを画面無しで立ち上げる

VPN経由でのsshなど遅い回線からリモートログインしているときにXのクライアントソフトを起動すると、その描画がボトルネックになって非常に遅くなることがあります。そんなとき、もし画面を捨ててしまってもよいならば、Xvfbという仮想フレームバッファのX…

git fetchしている時のvmstat

Androidのソースコードをrepo syncしている間、暇なのでvmstatで見てみました。 psコマンドでみると、git fetchが動作中です。 画面はこんな表示。 Receiving objects: 83% (19179/22951), 1.34 GiB | 3.11 MiB/s この時に、5秒間隔でvmstatを見てみると $ v…

Androidをビルドしているときのvmstat

Androidをビルドしているときのvmstatを見てみました。 $ make -j8 topで見ると、idleは0.2%ですからCPUはフル稼働状態です。 $ top top - 15:01:42 up 3 days, 21:16, 11 users, load average: 7.81, 5.58, 2.74 Tasks: 256 total, 8 running, 247 sleeping…

MIPSのAndroid 4.0のemulatorをビルドしてみた

MIPSのAndroid 4.0のソースコードが公開されたので、emulatorをビルドして動かしてみました。 準備 http://developer.mips.com/android/getting-started-with-android/ に書いてありますが、すでにAndroid 4.0をビルドしたことがあれば飛ばしても大丈夫です…

Android4.0のビルドには冷却能力にも注意を

Android 4.0を full-eng でフルビルドすると make -j8 real 35m52.527s user 263m34.080s sys 14m40.810s dmesgでカーネルのログを見るとこんなメッセージが。 [1482147.551197] CPU5: Temperature above threshold, cpu clock throttled (total events = 47…

emulator-x86をビルドしてみた

twitterで@adakoda さんがビルドしていたので私もやってみました。 ビルドの方法は@adakoda さんが詳しく書いてくれています。 adakoda.com - ビルドのセットアップ $ cd mydroid $ . build/envsetup.sh $ lunch full_x86-eng ビルド時間 $ time make -j8 > …

Android NDKでfork, execは使ってはダメ

Android NDKでfork, execのシステムコールは使ってはダメという話。Google グループNDKの中でforkとexecを使って子プロセスを起動してデーモン的なプログラムを動かした。しばらくうまく動いていたけど、突然SEGVで落ちて、クラッシュダンプもログに出てない…

Google I/O "Android Development Tools"のメモ

このページの動画を見てメモしました。 android-development-tools.html レイアウトエデュタ 最初の40分はADT11プレビュー版のレイアウトエデュタの話。これに関しては5/28のつぶぐだなまでやんざむ先生が説明してくれました。 http://www.ustream.tv/record…

Google I/Oの”Accelerated Android Rendering”のメモ

このページの動画を見てメモしました。 accelerated-android-rendering.htmlGPUによる描画の高速化はすでにゲームアプリやLive Wallpaperで使われているが、Basic UIはまだGPUを利用していない。しかしながら、HoneycombのタブレットからはBasic UIもGPUで高…

UbuntuでSamsung GALAXY Tab 10.1をadbで接続する

Google I/Oの報告会の後で、参加者のもらってきたSamsung GALAXY Tab 10.1をさわらせてもらいました。USBでWindows7のPCにつないでみたけど、WindowsではUSBのドライバが無いといわれます。なんとかという統合開発環境をインストールすれば、その中にUSBのド…

Androidのソースタグ2.3.3_r1.1, 2.3.4_r0.9について

Google グループにてJBQさんから説明。 android-sdk-2.3.4_r1 2.3.4 SDK のリリースのもの。(2.3.4は製品のリリースのもの。ほとんど変わらない。) 2.3.3_r1.1 GRI54。 韓国でのNexus S の出荷版。GRI40とほとんど同じ。 2.3.4_r0.9 GRJ06D。Nexus S 4G。GR…

Windows7 64bit にAndroidのGoogle USB Driverのインストール

Get the Google USB Driver | Android Developers このページを見ながらやったのですが、すんなりいかなかったのでメモを残します。 アクセスが拒否されましたというエラーが出る SDK Managerでダウンロードを開始するとアーカイブを展開する段階でアクセス…

llvm on Android

AndroidのSDK r10をインストールしたら、RenderScript用と思われるllvmのコンパイラが入ってた。 $ cd android-sdk-linux_x86/platform-tools $ ls -l total 19144 -rwxrwxrwx 1 koba koba 3703535 2011-03-24 14:10 aapt -rwxrwxrwx 1 koba koba 362601 201…

Gingerbreadのトリビア: Activity.onPause()

Gingerbreadのandroid.app.Activity.javaのソースを見ていて気がついたことがあります。アプリケーションはActivityを継承して作りますが、onCreateやonStartではその中でsuper.onCreateやsuper.onStartを呼ばなくてはならないルールになっています。それを…

FroyoでのSDメモリカードのマウント

ここで質問した件。 Google グループ/system/etc/vold.fstab を変更したらうまくいきました。元のvold.fstabはこんな感じ。(コメント行は省略。) ####################### ## Regular device mount ## ## Format: dev_mount ## label - Label for the volum…

android-2.2_r1.1の変更点を調べた

今朝Androidのソースリポジトリにandroid-2.2_r1.1のタグができたことをtwitterで知った。 NexusOneのセキュリティアップデートに対応するソースなのかな? さっそく repo sync して差分を調べてみた。repoでtag間のdiffを見る - Android Zaurusの日記を参考…

DalvikVMの内部動作をつぶやいた

DalvikVMの中のうごきについてtwitterてつぶやいたのを@AkioHoshiさんがまとめてくれました。 Androidアプリの内部動作に関する情報(2) - Togetter そのうちキレイな図を描いて... と思いつつできなかったことをこんな形で不完全でも出してしまうというもひ…

Dalvik VMにJIT

Dalvik JIT Compiler http://groups.google.co.jp/group/android-platform/browse_thread/thread/331d5f5636f5f532最新のソースリポジトリのDalvik VMにはJITのコードが追加されたそうです。ただしこれはまだまだ実験の途中のものです。全てのバイトコードを…

Dalvik VMのインタープリタでVFPやarmv7サポート

まだビルドして確かめたわけではありませんが、ソースを見るとDalvikVMのarmのアセンブラ版のソースコードの種類が増えています。 armv4t armv5te armv5te-vfp armv7-a VFP対応とarmv7-aの対応が増えています。 beagleボードとか持っている人はぜひビルドし…

AndroidのJavaScriptエンジンにV8登場

まだソースを眺めただけですが、AndroidのWebkitのJavaScriptエンジンとして V8のソースが入ってきています。webkit/Android.mk をみるとビルド時の環境変数JS_ENGINE がv8になっているとv8が組み込まれるようです。V8はJavaScriptをJITコンパイルして高速に…