2016.07.02

sysbench をとってみた

Raspberry Pi 2, 3、BeagleBone Black、Intel Edison、DragonBoard 410c、HiKey LeMaker version の sysbench をとってみた。
(後者2枚は会社にあったのを使って、会社でデータとったので、ちょっとまずいかも?横領になるよな?まぁ、数分だけだし許してくれるだろう。)
(あと、ラズパイ1はどこにいったんだろう^^;)

HiKey の HiSilicon Kirin 620 が 8 core で圧倒的な速さだった。 これで $109 (先々週あたりは $99 だったはず)なのはコスパ的には最高だね。ラズパイ3の3倍もしない値段で全core使える処理なら30倍近い性能。ラズパイみたいにソースから kernel をビルドできるのか確認できてないけど、96Boards 的にはオープンプラットフォームを謳ってる訳だし、できるんだろうね。(Android なら Reference Board になってるからソースからビルドできる)

条件は揃ってないので、参考程度に。裏で動いてるプロセス殺してから、、とかやってない。普通に起動して、そのまま sysbench を 2 回かけて速い方を記録しただけ。

 

image

| | コメント (0) | トラックバック (0)

2015.12.23

ListView の Height は WRAP_CONTENT を避けるべき

もはや常識なのだろうけど、ListView の Height を WRAP_CONTENT にすると、
http://stackoverflow.com/questions/15232895/same-convertview-instance-is-passed-for-visible-views-in-cursoradapter
この問題が出てしまう。
自分は知らなかったのでメモ。

自分で ListView の Adapter を作る場合、Height を WRAP_CONTENT にすると、複数の position で同じ convertView で呼ばれてしまう。
直後に convertView = null で再度呼ばれるので、新たに view を作ることになり、通常は問題にならないが、画像とか時間かかるのを表示しようとすると、最初に呼ばれた時点で他の position と同じ converView の Pointer を 保持するように Thread を生成して画像取得しにいくので、画像取得後には保持した Pointer の先のを更新してしまい、他の position のを上書いてしまうことになる。 (tag に unique な ID を設定して上書きを避けてても最後に設定した unique ID は重なるので1つは上書いてしまう。)
(java では pointer とは言わないか。参照かな?)

昔から謎で、最初だけの問題なので wait 入れてごまかしていたが、Layout が確定するまでは同じ convertView が渡されてしまうのが仕様っぽいので、WRAP_CONTENT は避けるべき。

MATCH_PARENT なら違う position で同じ contentView で呼ばれることはなかった。

| | コメント (2) | トラックバック (0)

2015.12.18

Nexus 6 Android 6.0.1 (MMB29K) root化

昨日焼いた Android 6.0.1 を root 化してみた。
http://androiding.how/android-6-0-1-root/
ここの通り。

SuperSU v2.61 を落として、push
http://downloadmirror.co/android/KQ/SuperSU-v2.61.zip
ここから落として、
adb push SuperSU-v2.61.zip /sdcard/
で push

■TWRP を落として、起動、Super SU を焼く
https://dl.twrp.me/shamu/
ここから twrp-2.8.7.1-shamu.img を落として、
adb reboot bootloader
して、
fastboot boot twrp-2.8.7.1-shamu.img
で起動。
Install → SuperSU-v2.61.zip → Swipe to Confirm Flash を Swipe
して、リブート。

■root 取れたか確認
adb shell して、su しても、なぜか $ のまま。。
Super SU を起動すると、Play Store か TWRP に誘導されたので、Play Store に行って Update した。(TWRPは焼いてないので。というかさっき焼いた Super SU は古いのか??)
再度、Super SU を起動すると、SU バイナリのアップデートが必要です。と言われて、アップデートを試みたけど失敗。。
でも、adb shell して su すると、# になれたから、root 化はできたっぽい。
今テスト中のアプリの sqlite3 の DB も見れるようになってすごく助かった。
Super SU って素晴らしい!

| | コメント (4) | トラックバック (0)

2015.12.17

Nexus 6 Android 6.0.1 (MMB29K)

Nexus 6 に、Android 6.0.1 (MMB29K) を焼いてみた。
以下、MRA58K(root化したもの)から MMB29K にした手順(root化はこっち
一応、/sdcard/DCIM 以下と /sdcard/Download 以下をバックアップ取ったけど、特に問題はなかった。(encryption は有効な状態)

■Factory Image を落とす
https://developers.google.com/android/nexus/images
6.0.1 (MMB29K)

■全部展開して焼く
いつもどおり焼くだけ
fastboot flash bootloader bootloader-shamu-moto-apq8084-71.15.img
(MRA58Kと同じなので焼く必要ないと思う)
fastboot reboot-bootloader
fastboot flash radio radio-shamu-d4.01-9625-05.32+fsg-9625-02.109.img
fastboot reboot-bootloader
cd image-shamu-mmb29k
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot reboot

■動確
電源ボタン2回押しでカメラが起動するようになった。結構便利^^

| | コメント (0) | トラックバック (0)

2015.10.10

Nexus 6 Android 6.0 root化

Android 6.0 (Marshmallow) では、今までどおり SuperSU を焼くだけではうまくいかず、起動できなくなってしまった。
ぐぐると、kernel も焼きかえる必要があるとのことだったのでメモ。
以下、Google Play 版の Nexus 6 で確認した。1つ前の FOTA はあてずに、2つ前の Factory Image を焼いて root 化した状態から↓をやった。user data は消えずにアップデートできたけど、バックアップはしておくべきだと思う。

■Factory Image を落とす
https://developers.google.com/android/nexus/images
6.0.0 (MRA58K)

■全部展開して焼く
いつもどおり焼くだけ
fastboot flash bootloader bootloader-shamu-moto-apq8084-71.15.img
fastboot reboot-bootloader
fastboot flash radio radio-shamu-d4.01-9625-05.27+fsg-9625-02.104.img
fastboot reboot-bootloader
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot reboot

■kernel を落とす
http://forum.xda-developers.com/nexus-6/development/kernel-stock-kernel-root-color-control-t3218958
これを使わせてもらった。
With encryption (stock) の zip 版を落とす。
kernel-shamu-mra58k-color-root-v2.zip
SuperSU の前に焼く必要あり

hells-Core kernel とかの方がいいかも?

■SuperSU を落とす
http://download.chainfire.eu/740/SuperSU/BETA-SuperSU-v2.49.zip
これより古いのはダメっぽい

2.50 beta も出てるね
https://www.apkmirror.com/apk/chainfire/supersu/supersu-2-50-beta-android-6-0-marshmallow-support-read-notes-android-apk-download/

■TWRP を起動
http://teamw.in/project/twrp2/270/
ここの Download Links: から twrp-2.8.7.1-shamu.img を落とす
fastboot boot twrp-2.8.7.1-shamu.img
で起動する。

fastboot flash recovery twrp-2.8.7.1-shamu.img
で焼いてしまってもいいかもしれない。

■kernel を焼いてから、SuperSU を焼く
kernel-shamu-mra58k-color-root-v2.zip を焼いてから
BETA-SuperSU-v2.49.zip を焼く
順番があってればいいはず。途中でリブートする必要なし。

| | コメント (0) | トラックバック (0)

2014.05.14

モバイルバッテリー

cheero Power Plus 10400mAh DANBOAR Version を買ってみた。
かわいい。おすすめ!

ただ、デザイン分、ちょっと高い気がする。

ANKER Astro M3 モバイルバッテリー 13000mAh の方が、容量多いし、性能(DCDCの効率)も良いみたいだし、充電速度も速そうだし、かつ5V2AのACアダプタも付いてて、コスパ的には最高っぽい。


最近、首都圏で地震が多い気がするし、モバイルバッテリーを持っておいた方がいいと思う。
リチウムイオン二次電池は、残量50%ぐらいで保管するのが劣化が少ないので、地震時に備えるとなると、少しでも容量の大きいのを買って 50% にして置いておくのがよさげ。
ぐぐれば大量に出てくるけど、
http://www.oak-ele.com/column/index5.html
http://gumby0013.blog.so-net.ne.jp/2012-12-15
ここらへんに書かれてる。
自己放電もあるので、定期的に 50% ぐらいになってることの確認は必要。

| | コメント (0) | トラックバック (1)

2013.12.07

Gmail Public Labels API は selection が使えない

The Gmail Public Labels API は、ただの ContentProvider なんだけど、query() するときに第3引数の selection が使えないので注意!

この API を使ってる他のソースをぐぐってみると、Google が作ってるソースが見つかって、(このリンクはいつまで使えるのだろうか?)

    private Cursor openLabelsCursor(String account) {
        try {
            return getContentResolver().query(
                    GmailContract.Labels.getLabelsUri(account),
                    LabelsQuery.PROJECTION,
                    null, // NOTE: the Labels API doesn't allow selections here
                    null,
                    null);
        } catch (SQLException e) {
            // From developer console: "SQLiteException: no such table: labels"
            LOGE(TAG, "Error opening Gmail labels", e);
            return null;
        }
    }
と、"NOTE: the Labels API doesn't allow selections here" と書かれてるのでした。

当然、第4引数の selectionArgs を使って指定してみても使えない。
普通に ContentProvider として公開するなら、selection まで実装してくれよ。30分ぐらいハマったよ。。

| | コメント (0) | トラックバック (0)

2013.12.01

ListView に自作の Adapter を使うときの注意点?

だだのメモ。
いまいちよくわからん動作なのでメモ。

BaseAdapter を継承した Adapter を、ListView#setAdapter() して使っている場合、BaseAdapter#notifyDataSetChanged() を呼ぶと、getView(0, null, xxx) が呼ばれるみたいだ。
ListView 側の ListView#invalidateViews() を呼んでも、同様に呼ばれる。
ListView#invalidate() では呼ばれない。

通常は画面サイズ分の十分な数の View を作ったら、もう新しい View を作る必要はないのだが、BaseAdapter#notifyDataSetChanged() or ListView#invalidateViews() を呼んだ時は position=500 とかを表示してる場合でも、position=0 が呼ばれてから、position=500, 501, 502, .. が呼ばれる。

で、position=500, 501, 502, ...  は以前に作った空いた View が渡されるので、更新すればいいだけなんだけど、position = 0 のは  convertView = null で呼ばれる。
ので、新しい View を作る必要があって、、でも、新しい View を作っても 500 行目を表示してたら使われない。
直後に 0 行目までジャンプしても、position = 0 で convertView = 過去に作った空いたやつ、の方の事が使われてたりして、表示がおかしくなる。。

というのでハマった。

なんか間違ってる??

| | コメント (0) | トラックバック (0)

2013.08.28

BeagleBone Black に Android を入れた

例によって micro SD に入れただけだが。

http://processors.wiki.ti.com/index.php/TI-Android-JB-4.2.2-DevKit-4.1.1_DeveloperGuide
ここの通り。

■ソースの取得。
妙に遅かったから apt-get update & upgrade した。
ら、速くなった。git の version に依るのだろうか?たまたまか?
fatal: early EOF が結構出てたのがなくなった。

mkdir -p work/BBB/android
cd work/BBB/android
repo init -u git://gitorious.org/rowboat/manifest.git -m TI-Android-JB-4.2.2-DevKit-4.1.1.xml
repo sync -j8

sudo apt-get update
sudo apt-get upgrade
repo sync -j8

■u-boot の build

export PATH=~/work/BBB/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
cd ~/work/BBB/android/u-boot
make CROSS_COMPILE=arm-eabi- distclean
make CROSS_COMPILE=arm-eabi- am335x_evm_config
make CROSS_COMPILE=arm-eabi- -j4

■kernel の build

cd ~/work/BBB/android/kernel
make ARCH=arm CROSS_COMPILE=arm-eabi- distclean
make ARCH=arm CROSS_COMPILE=arm-eabi- am335x_evm_android_defconfig
make ARCH=arm CROSS_COMPILE=arm-eabi- uImage -j4

■Android の build

cd ~/work/BBB/android
make TARGET_PRODUCT=beagleboneblack OMAPES=4.x -j4
make TARGET_PRODUCT=beagleboneblack fs_tarball
make TARGET_PRODUCT=beagleboneblack OMAPES=4.x -j4 sdcard_build

sdcard_build を付けて make すれば、u-boot も kernel も全部 build してくれるように書かれてるけど、してくれなかった。ので、u-boot, kernel を build してから、sdcard_build を外して make、fs_tarball を付けて make した後に、sdcard_build を付けて make した。

■micro SD に入れる

cd out/target/product/beagleboneblack/beagleboneblack
sudo LANG=C ./mkmmc-android.sh /dev/sdX

例によって、/dev/sdX は環境に依る。
micro SD が Windows で使ってたものだとうまくいかず、一旦、sudo fdisk /dev/sdX して、d で全部消して w で消した状態のを書き込んでから mkmmc-android.sh を実行する必要があった。script 的に fdisk -l /dev/sdX を実行した結果を grep DISK してて、Windows で使っていたものだと DISK になるところが FAT32 とかになってしまって見つからないみたい。
途中で出る
cp: cannot stat `START_HERE': No such file or directory
というエラーは気にしなくていいはず。START_HERE を指定しておくと、そこからもコピーしてくれるっぽい。

追記:ソースから作れるのはすごい安心感があるけど、ちょっと設定変えると System UI が死ぬのを繰り返すから、Ubuntu の方がいいかも。デフォルトの live wallpaper をただの画像に変えただけで、System UI が死ぬのを繰り返すようになってしまう。。
最初の repo init の時に rowboat-jb.xml を指定すれば最新のを取得できると書かれてるので、後で試してみるか。

さらに追記:rowboat-jb.xml なんてなかった。。 web の説明は古いね。。  ls .repo/manifests で manifest のリストが見れるので、確認して、rowboat-jb-am335x.xml を指定すればうまくいった。けど、こっちのが古いかも??

| | コメント (2) | トラックバック (0)

2013.03.08

Galaxy Nexus に 4.2.2 を焼いた。

Xperia Z を買ったので、Galaxy Nexus は触っていなかったのだが、4.2.2 な reference device が欲しくなったので、
https://developers.google.com/android/nexus/images
ここから、takju の 4.2.2(JDQ39) のを落として焼いた。

落とした、takju-jdq39-factory-5e273f02.tgz を解凍して、
bootloader-maguro-primelc03.img と、
image-takju-jdq39.zip の中身を修正したものだけを焼けばいい。
radio の radio-maguro-i9250xxlj1.img を焼くと SIM unlock にしたのが外れそうだし、docomo の速いところが捕まえられなくなりそうなので焼くのはやめた。
radio は docomo の update が1回あったと思うが、それしか焼いてない。

radio のバージョンが合わないと、image-takju-jdq39.zip が焼けないので、
まず、image-takju-jdq39.zip を展開して、中の android-info.txt を編集して、
require version-baseband=SC04DOMLE3
に変えて、再度圧縮しておく。
ファイル名は適当に image-takju-jdq39_SC04DOMLE3.zip にした。
フォルダごと圧縮するとダメで、複数ファイルを圧縮して zip にする。

あとは、

> adb reboot-boodloader
> fastboot devices   (接続確認)
> fastboot flash bootloader bootloader-maguro-primelc03.img
> fastboot reboot-bootloader

として、bootloader を焼いて、リブート、

> fastboot -w update image-takju-jdq39_SC04DOMLE3.zip

として、焼けば問題なく焼けた。
(android-info.txt を編集しないと、ここでエラーになって焼けない)

焼く前に /sdcard はバックアップしておく必要あり。
factory image なので、完全に出荷状態でまっさらになる。

su も消えるので、
adb push CWM-SuperSU-v0.97.zip /sdcard/
adb reboot bootloader
fastboot boot recovery-clockwork-6.0.2.3-maguro.img
して、CWM-SuperSU-v0.97.zip を焼く。
(もう、1.x.x になっているけど前に使ったのを焼いた)

うまくいったら、
fastboot flash recovery recovery-clockwork-6.0.2.3-maguro.img
で、recovery も焼いておく。

| | コメント (0) | トラックバック (0)

より以前の記事一覧