2011/01/28
Android SDK r9/NDK r5b
更新されていたので install 手順のファイル名を修正。
・Android SDK/NDK install 手順
cygwin を使ってる場合以前の NDK r5 には問題がありました。
具体的には下記の通り。
・コンパイルエラーが発生したときに DOS path のままの依存ファイル(*.d)が残ってしまう
・依存ファイルの cygdrive パス置換 awk script が、1つの行に複数ファイル名が書かれているケースに対応していない
ちょうど ndk の build script を書き換えて対応していたところでしたが
r5b で修正されたようです。
その代わり r5b でそのまま通らなくなったプロジェクトがありました。
cygwin の symbolic link を使っていたためで、高速化のためにパスの扱いが
変更になったようです。
を設定しておくことで従来と同じ動作となりコンパイルが通ります。
・Android SDK/NDK install 手順
cygwin を使ってる場合以前の NDK r5 には問題がありました。
具体的には下記の通り。
・コンパイルエラーが発生したときに DOS path のままの依存ファイル(*.d)が残ってしまう
・依存ファイルの cygdrive パス置換 awk script が、1つの行に複数ファイル名が書かれているケースに対応していない
ちょうど ndk の build script を書き換えて対応していたところでしたが
r5b で修正されたようです。
その代わり r5b でそのまま通らなくなったプロジェクトがありました。
cygwin の symbolic link を使っていたためで、高速化のためにパスの扱いが
変更になったようです。
export NDK_USE_CYGPATH=1
を設定しておくことで従来と同じ動作となりコンパイルが通ります。
2011/01/25
Android SDK/NDK install 手順からサンプル実行まで
Android SDK は install した Version によってフォルダ名などが若干異なって
いるようです。
SDK install 手順から端末の接続、NDK によるサンプル実行まで一番新しいもので
まとめてみました。(たまに更新します)
・Android SDK/NDK install
結構手順が多く iOS のように Xcode 入れて終わりではありません。
その代わり Developer や Device 登録等なしに実機で動作テストできます。
Mac OS X にも Android 開発環境を入れてみましたが、adb ドライバ不要で
あっさりと端末を認識したのでむしろ簡単でした。
iOS と共通の開発環境として良いかもしれません。
NDK も入れているのは OS 2.1 で OpenGL ES 2.0 を使うため。
もうひとつはプラットフォーム間で共通のエンジンやライブラリを構築するためです。
いるようです。
SDK install 手順から端末の接続、NDK によるサンプル実行まで一番新しいもので
まとめてみました。(たまに更新します)
・Android SDK/NDK install
結構手順が多く iOS のように Xcode 入れて終わりではありません。
その代わり Developer や Device 登録等なしに実機で動作テストできます。
Mac OS X にも Android 開発環境を入れてみましたが、adb ドライバ不要で
あっさりと端末を認識したのでむしろ簡単でした。
iOS と共通の開発環境として良いかもしれません。
NDK も入れているのは OS 2.1 で OpenGL ES 2.0 を使うため。
もうひとつはプラットフォーム間で共通のエンジンやライブラリを構築するためです。
2011/01/15
Android 端末のベンチマークテスト (3) IDEOS
IDEOS U8150-B も追加しました。
S21HT と違い IDEOS は ARMv6 世代で最初から Android です。
MSM7225 の CPU core は MSM7201A とほぼ同等だと思っていましたが予想よりも
高い数値が出ています。動作周波数も 528MHz ではなく 600MHz でした。
それでも ARMv7 世代とは比べ物にならず、VFP がないこともあって数倍から
一桁程度の差が付いています。
ただ処理速度と体感的な速度は全くの別物で、パネルの反応や追従性の方が
大きく影響します。
プロセッサは最速だけどタッチに反応しないことがある LuvPad よりも、
遅いはずなのにきちんと操作に反応する IDEOS の方がずっと好印象なのは
面白いところです。
MSM7225 は GPU として 3D アクセラレータが搭載されておらず、
OpenGL ES の API は CPU によるエミュレーションが行われているようです。
ラスタライズはパースペクティブ補正がかからずテクスチャマップが歪みフィルタもなし。
Depth は 16bit のみで Stencil 無しです。
GPU 系のテストは動作しないものが多くなっています。
アプリによってはそこそこ 3D が動くのは解像度が低いせいかもしれません。
比べると S21HT (TouchDiamond) の MSM7201A は解像度が高く非常に遅いものの
GL の描画は正しく行われていました。3D GPU が機能していたことがわかります。
関連エントリ
・各種 Android 端末のベンチマークテスト (2)
・各種 Android 端末のベンチマークテスト
S21HT と違い IDEOS は ARMv6 世代で最初から Android です。
Desire ZenTouch2 ZiiO7 LuvPad ODROID-S S21HT IDEOS ----------------------------------------------------------------------------- Android 2.2 2.1 2.1 2.2 2.2 2.2 2.2 Processor QSD8250 i.MX51 ZMS-08 Tegra250 S5PC110 MSM7201A MSM7225 CPU clock 1GHz 800MHz 1GHz 1GHz x2 1GHz 528MHz 600MHz CPU Arch ARMv7A ARMv7A ARMv7A ARMv7A ARMv7A ARMv6TEJ ARMv6TEJ CPU Scorpion CortexA8 CortexA8 CortexA9 CortexA8 ARM1136EJ ARM1136EJ FPU VFP3,NEON VFP3,NEON VFP3,NEON VFP3 VFP3,NEON --- --- GPU Adreno200 AMD Z430 ZMS-08 Tegra250 PVRSGX540 Adreno130 --- GL ES 2.0 2.0 2.0 2.0 2.0 1.1 1.1 RAM 576MB 256MB? 512MB 512MB 512MB 192MB 256MB Display 800x480 480x320 800x480 1024x600 480x320 640x480 320x240 ----------------------------------------------------------------------------- (1)Graph 28.16 225.21 395.79 293.48 517.90 9.38 21.34 (1)Float 2049.57 432.77 581.37 2816.16 1675.83 128.41 290.60 (1)Memory 339.03 183.67 721.17 516.18 680.16 116.95 153.40 (2)CPU 759ms 1207ms 1038ms 436ms 719ms 4698ms 2971ms (3)GPU Abs 14633 22071 --- --- --- --- --- (3)GPU Rel 11587 26300 --- --- --- --- --- (4)Quadrant 1259 979 1995 1827 1040 434 --- (5)Linpack 32.82 5.66 5.97 36.71 14.03 1.98 3.78 ----------------------------------------------------------------------------- * 値が大きいほうが速い, (2) のみ値が小さいほうが速い
MSM7225 の CPU core は MSM7201A とほぼ同等だと思っていましたが予想よりも
高い数値が出ています。動作周波数も 528MHz ではなく 600MHz でした。
それでも ARMv7 世代とは比べ物にならず、VFP がないこともあって数倍から
一桁程度の差が付いています。
ただ処理速度と体感的な速度は全くの別物で、パネルの反応や追従性の方が
大きく影響します。
プロセッサは最速だけどタッチに反応しないことがある LuvPad よりも、
遅いはずなのにきちんと操作に反応する IDEOS の方がずっと好印象なのは
面白いところです。
MSM7225 は GPU として 3D アクセラレータが搭載されておらず、
OpenGL ES の API は CPU によるエミュレーションが行われているようです。
ラスタライズはパースペクティブ補正がかからずテクスチャマップが歪みフィルタもなし。
Depth は 16bit のみで Stencil 無しです。
GPU 系のテストは動作しないものが多くなっています。
アプリによってはそこそこ 3D が動くのは解像度が低いせいかもしれません。
比べると S21HT (TouchDiamond) の MSM7201A は解像度が高く非常に遅いものの
GL の描画は正しく行われていました。3D GPU が機能していたことがわかります。
関連エントリ
・各種 Android 端末のベンチマークテスト (2)
・各種 Android 端末のベンチマークテスト
2011/01/08
Android とストレージ領域
Android は端末によって SD カードの扱いが結構ばらばらです。
設定画面に表示される用語も端末ごとに異なっています。
上の 内部Flash は /data の容量です。
Android のデータ領域は 2種類あります。
本体内蔵の内部ストレージと取り外し可能な外部ストレージです。
ダウンロードしたアプリケーションは主に内部ストレージにインストールされます。
外部ストレージは主に撮影した写真等のメディアデータが格納されます。
共有しても問題ないデータ、あとから生成する容量の大きいデータはこちらが
使われることが多いようです。
また OS 2.2 からは外部ストレージへインストールできるアプリもあります。
◎内部ストレージ /data
・本体内蔵のフラッシュメモリのうちデータ用の領域
・ダウンロードしたアプリケーションは主にこちらにインストールされる
・USB 接続時に PC から見えない
◎外部ストレージ /sdcard
・共有可能なデータが格納される
・取り外し可能
・OS 2.2 からは対応アプリケーションならインストールできる
・USB 接続時に PC から直接アクセスできる。(一時的に Unmount される)
●SD カードとの関係
iPod touch のように、本体にもメディア用の大容量なフラッシュメモリを
内蔵している場合に少々複雑になります。
内蔵のメディア用フラッシュ領域が /sdcard が割り当てられるものの、
同時に本来の SD カードスロットも存在しているからです。
ZEN Touch 2 / ZiiO 7 は設定画面からも両方の容量を確認可能です。
PC 接続時には内蔵のメディア領域と SDカードの 2つのドライブが作られます。
LuvPad の場合は基本的に内蔵のメディア領域を使うことが前提となっているようです。
SD カード側のマウントには再起動が必要で PC から見えるのも内部の
メディア領域のみです。
大容量の内蔵フラッシュを持たない Desire X06HT の場合はシンプルです。
もともとこのような使われ方を想定していたのだと思われます。
内蔵のメディア領域を持っている場合、外付けの SD カードがなくても運用
できますが容量は固定となります。
SD カードは別領域にマウントされるため /sdcard そのもののは変わりません。
●アプリケーション
端末によっては内部ストレージがかなり小さく、アプリケーションの
インストール時に容量が足りなくなることがあります。
2.2 からは SDカードへもインストールや移動ができるようになりましたが
その対応度はアプリケーションに依存します。
この点においては、取り外し不可能な単一領域の大容量フラッシュを内蔵
している iOS の方が分かりやすく開発側の負担も少なくなっています。
◎アプリケーションを SDカードインストール対応にする方法
AndroidManifest.xml に1行追加。auto または preferExternal
実際に HTC Desire X06HT (2.2 Froyo) で Market から Angry Birds を
ダウンロードしてみると SD カードにインストールされました。
おそらく preferExternal が指定されているのだと思われます。
また前回ベンチマークテストに用いた GPUBench も SD カードに入ります。
このアプリは当初 LuvPad (2.2) や ODROID-S (2.2) にはインストールすることが
出来ずしばらくはまりました。
設定→「SDカードと端末容量」→「SDカードのアンマウント」
でアンマウントしてからだとインストール出来ることがわかりました。
この場合は内部ストレージに入ります。
もしかしたら Market が使えないか、何らかの認証されていないデバイスでは
SD カードにアプリケーションをインストール出来ないのかもしれません。
そのため preferExternal が設定されたアプリケーションはインストールに失敗し、
管理画面からも SD カードに移動出来なくなっていると考えられます。
関連エントリ
・各種 Android 端末のベンチマークテスト (2)
・各種 Android 端末のベンチマークテスト
設定画面に表示される用語も端末ごとに異なっています。
OS 内部Flash 内部メディア領域 SDカード ------------------------------------------------------------------- Desire X06HT 2.2 147MB 無し /sdcard ZEN Touch2(8GB) 2.1 2.95GB 4.10GB /sdcard /extsd ZiiO 7 (8GB) 2.1 1.97GB 4.94GB /sdcard /sdcard/SD_CARD LuvPad AD100 2.2 1.62GB 12.95GB /sdcard /sdcard2
上の 内部Flash は /data の容量です。
Android のデータ領域は 2種類あります。
本体内蔵の内部ストレージと取り外し可能な外部ストレージです。
ダウンロードしたアプリケーションは主に内部ストレージにインストールされます。
外部ストレージは主に撮影した写真等のメディアデータが格納されます。
共有しても問題ないデータ、あとから生成する容量の大きいデータはこちらが
使われることが多いようです。
また OS 2.2 からは外部ストレージへインストールできるアプリもあります。
◎内部ストレージ /data
・本体内蔵のフラッシュメモリのうちデータ用の領域
・ダウンロードしたアプリケーションは主にこちらにインストールされる
・USB 接続時に PC から見えない
◎外部ストレージ /sdcard
・共有可能なデータが格納される
・取り外し可能
・OS 2.2 からは対応アプリケーションならインストールできる
・USB 接続時に PC から直接アクセスできる。(一時的に Unmount される)
●SD カードとの関係
iPod touch のように、本体にもメディア用の大容量なフラッシュメモリを
内蔵している場合に少々複雑になります。
内蔵のメディア用フラッシュ領域が /sdcard が割り当てられるものの、
同時に本来の SD カードスロットも存在しているからです。
ZEN Touch 2 / ZiiO 7 は設定画面からも両方の容量を確認可能です。
PC 接続時には内蔵のメディア領域と SDカードの 2つのドライブが作られます。
LuvPad の場合は基本的に内蔵のメディア領域を使うことが前提となっているようです。
SD カード側のマウントには再起動が必要で PC から見えるのも内部の
メディア領域のみです。
大容量の内蔵フラッシュを持たない Desire X06HT の場合はシンプルです。
もともとこのような使われ方を想定していたのだと思われます。
内蔵のメディア領域を持っている場合、外付けの SD カードがなくても運用
できますが容量は固定となります。
SD カードは別領域にマウントされるため /sdcard そのもののは変わりません。
●アプリケーション
端末によっては内部ストレージがかなり小さく、アプリケーションの
インストール時に容量が足りなくなることがあります。
2.2 からは SDカードへもインストールや移動ができるようになりましたが
その対応度はアプリケーションに依存します。
この点においては、取り外し不可能な単一領域の大容量フラッシュを内蔵
している iOS の方が分かりやすく開発側の負担も少なくなっています。
◎アプリケーションを SDカードインストール対応にする方法
AndroidManifest.xml に1行追加。auto または preferExternal
<manifest ~ android:installLocation="auto" >
実際に HTC Desire X06HT (2.2 Froyo) で Market から Angry Birds を
ダウンロードしてみると SD カードにインストールされました。
おそらく preferExternal が指定されているのだと思われます。
また前回ベンチマークテストに用いた GPUBench も SD カードに入ります。
このアプリは当初 LuvPad (2.2) や ODROID-S (2.2) にはインストールすることが
出来ずしばらくはまりました。
設定→「SDカードと端末容量」→「SDカードのアンマウント」
でアンマウントしてからだとインストール出来ることがわかりました。
この場合は内部ストレージに入ります。
もしかしたら Market が使えないか、何らかの認証されていないデバイスでは
SD カードにアプリケーションをインストール出来ないのかもしれません。
そのため preferExternal が設定されたアプリケーションはインストールに失敗し、
管理画面からも SD カードに移動出来なくなっていると考えられます。
関連エントリ
・各種 Android 端末のベンチマークテスト (2)
・各種 Android 端末のベンチマークテスト
2011/01/07
各種 Android 端末のベンチマークテスト (2)
ARM11 搭載機種ということで TouchDiamond S21HT もテストに加えてみました。
・昨日の結果
HTC Touch Diamond S21HT の MSM7201A は DirectX7/OpenGL ES 1.1 の GPU を
搭載しているので、低速ながらグラフィック系のテストも通りました。
ただし CPU core は VFP 無しの ARM11 なので Float 演算を行うテストの
スコアは大きく落ちています。
また ARMv6 (ARM11) と ARMv7 世代の性能差は大きく、同クロックで比べても
ARMv7 系はかなり高速に動作します。
NDK のバイナリの違いもありますので、ゲームなど高パフォーマンス用途を
考えると ARM v7 系とそれ以外の違いはますます広がることになります。
ODROID-S の Linpack も追加しました。
同じ A8 の ZenTouch2/ZiiO7 と比べて OS 2.2 になった分大幅に高速化されて
いますが Snapdragon や A9 には届きません。
(2) CPU Bench ではむしろ Snapdragon より速いので、やはり A8 の VFP が
原因だと考えられます。
整数: A9 > A8 > Snapdragon1
浮動小数 VFP: A9 > Snapdragon1 >> A8
浮動小数NEON: A8 ≧ Snapdragon1
詳しい数値
・CPU/GPU Benchmark
関連エントリ
・各種 Android 端末のベンチマークテスト
・Android NDK r5 と armeabi, 浮動小数命令の種類
・昨日の結果
Desire ZenTouch2 ZiiO7 LuvPad ODROID-S S21HT -------------------------------------------------------------------------- Android OS 2.2 2.1 2.1 2.2 2.2 2.2 Processor QSD8250 i.MX51 ZMS-08 Tegra250 S5PC110 MSM7201A CPU Hz 1GHz 800MHz 1GHz 1GHz x2 1GHz 528MHz CPU Arch ARMv7A ARMv7A ARMv7A ARMv7A ARMv7A ARMv6TEJ CPU Scorpion CortexA8 CortexA8 CortexA9 CortexA8 ARM1136EJ FPU VFP3,NEON VFP3,NEON VFP3,NEON VFP3 VFP3,NEON --- GPU Adreno200 AMD Z430 ZMS-08 Tegra250 PVRSGX540 Adreno130 OpenGL ES 2.0 2.0 2.0 2.0 2.0 1.1 RAM 576MB 256MB? 512MB 512MB 512MB 192MB Display 800x480 480x320 800x480 1024x600 480x320 640x480 -------------------------------------------------------------------------- (1) Graphcis 28.16 225.21 395.79 293.48 517.90 9.38 (1) CPU Float 2049.57 432.77 581.37 2816.16 1675.83 128.41 (1) Memory 339.03 183.67 721.17 516.18 680.16 116.95 (2) CPU Bench 759ms 1207ms 1038ms 436ms 719ms 4698ms (3) GPU Abs 14633 22071 --- --- --- --- (3) GPU Rel 11587 26300 --- --- --- --- (4) Quadrant 1259 979 1995 1827 1040 434 (5) Linpack 32.82 5.66 5.97 36.71 14.03 1.98 -------------------------------------------------------------------------- * 値が大きいほうが速い, (2) のみ値が小さいほうが速い
HTC Touch Diamond S21HT の MSM7201A は DirectX7/OpenGL ES 1.1 の GPU を
搭載しているので、低速ながらグラフィック系のテストも通りました。
ただし CPU core は VFP 無しの ARM11 なので Float 演算を行うテストの
スコアは大きく落ちています。
また ARMv6 (ARM11) と ARMv7 世代の性能差は大きく、同クロックで比べても
ARMv7 系はかなり高速に動作します。
NDK のバイナリの違いもありますので、ゲームなど高パフォーマンス用途を
考えると ARM v7 系とそれ以外の違いはますます広がることになります。
ODROID-S の Linpack も追加しました。
同じ A8 の ZenTouch2/ZiiO7 と比べて OS 2.2 になった分大幅に高速化されて
いますが Snapdragon や A9 には届きません。
(2) CPU Bench ではむしろ Snapdragon より速いので、やはり A8 の VFP が
原因だと考えられます。
整数: A9 > A8 > Snapdragon1
浮動小数 VFP: A9 > Snapdragon1 >> A8
浮動小数NEON: A8 ≧ Snapdragon1
詳しい数値
・CPU/GPU Benchmark
関連エントリ
・各種 Android 端末のベンチマークテスト
・Android NDK r5 と armeabi, 浮動小数命令の種類
2011/01/06
各種 Android 端末のベンチマークテスト
いろんなプロセッサの端末が揃ったのでベンチマークソフトを走らせてみました。
使用したソフトは下記のとおり。
(1) Benchmark 1.03
(2) CPU Benchmark 1.7.1
(3) GPUBench 1.0.0
(4) Quadrant standard 1.1.5
(5) Linpack 1.1.8
Desire ZenTouch2 ZiiO7 LuvPad ODROID-S --------------------------------------------------------------------- Android OS 2.2 2.1 2.1 2.2 2.2 Processor QSD8250 i.MX51 ZMS-08 Tegra250 S5PC110 CPU Hz 1GHz 800MHz 1GHz 1GHz x2 1GHz --------------------------------------------------------------------- (1) Bench Graphcis 28.16 225.21 395.79 293.48 517.90 (1) Bench CPU Float 2049.57 432.77 581.37 2816.16 1675.83 (1) Bench Memory 339.03 183.67 721.17 516.18 680.16 (2) CPU Benchmark 759ms 1207ms 1038ms 436ms 719ms (3) GPU Absolute 14633 22071 --- --- --- (3) GPU Relative 11587 26300 --- --- --- (4) Quadrant 1259 979 1995 1827 1040 (5) Linpack 32.82 5.66 5.97 36.71 --- ---------------------------------------------------------------------- * (2) のみ値が小さいほうが速い
テスト環境は厳密に合わせたわけではないので結果は参考程度にお願いします。
例えば通信の接続状況とか起動中のサービスなど。
OS の違いを考慮する必要があります。
Android OS 2.2 では JIT が搭載されたため、Java アプリの場合は実行内容に
よっては 2.1 と 2.2 で極端な差が出ます。(1) の CPU や (5) など。
ZEN Touch2 と ZiiO7 で全体的に速度が低いのはそのためです。
GPU Test は OpenGL ES 2.0 ですが、動かないケースが多くあまり比較
できませんでした。
Quadrant は Disk/DB 速度が含まれているのでプロセッサのみの結果では
ないようです。例えば Desire の結果とプリセットされている結果を比べると
OS 2.2 になって 2倍程スコアが上がっていることがわかります。
その分を考慮すると OS 2.1 の ZEN Touch 2 や ZiiO7 はかなり突出した
値が出ているように見えます。原因は不明です。
LuvPad の Tegra は GPU 側をきちんと評価できていませんが、とりあえず
CPU core が高速なことがわかります。おそらく多くのテストは Single Thread
だと思われるので、A9 Dual ならもっと速いのではないでしょうか。
厳密ではなく大雑把な傾向ですがおそらく同クロックの場合
整数: A9 > A8 > Snapdragon1
浮動小数 VFP: A9 > Snapdragon1 > A8
(NEON: A8 ≧ Snapdragon1)
といった印象です。
GPU は残念ながらデータ不足です。
ただ同一と思われた GPU でも違う結果が出ています。
画面サイズやバス速度の差もあるのかもしれません。
結果の詳細はこちら
・CPU/GPU Benchmark
ちなみにベンチマーク結果と実際の使用感、体感速度は全くの別物です。
現状だとほぼ Desire X06HT とそれ以外の 2つに分けられます。
ZEN Touch2/ZiiO7 はパネルにさえ慣れれば反応は良好な方です。
テスト端末
・Desire HTC Desire X06HT Qualcomm Snapdragon QSD8250, Scorpion 1GHz, Adreno 200 Android 2.2 800x480 RAM 576MB ・ZenTouch2 Creative ZEN Touch 2 (8GB) TN-T28G Freescale i.MX51, Cortex-A8 800MHz, AMD Z430 Android 2.1 480x320 RAM 256MB(?) ・ZiiO7 Creative ZiiO 7 (8GB) ZO-7S ZiiLabs ZMS-08 HD, Cortex-A8 1GHz, ZMS-08 Android 2.1 800x480 RAM 512MB ・LuvPad MouseComputer LuvPad AD100 NVIDIA Tegra 250, Cortex-A9 x2 1GHz, Tegra 250 Android 2.2 1024x600 RAM 512MB ・ODROID-S (借り物) HardKernel ODROID-S Sumsung S5PC110, Cortex-A8 1GHz, PowerVR SGX 540 Android 2.2 480x320 RAM 512MB