access logger

家庭用コンピュータ環境の模索 >Nexus7(2013) 設定と Hack 方法まとめ >DEVELOP

TOOLS

Android SDK のインストール

(2014-02-08)

開発ツールなのだが、その中の adb, fastboot などのツールが必要。ツール(ADT)だけインストールする方法もある。

fastboot 使い方メモ

(2014-11-19)

用語の定義

fastbootプロトコル
PC上のfastbootコマンドとAndroid bootloader が通信するプロトコル。
fastbootモード
Android bootloader が fastboot プロトコルを受け付ける状態。fastboot モードに入った bootloader は開腹ドロイドが表示される(Nexus7 2013の場合)。
fastbootコマンド
PC上からfastbootプロトコルを送信するコマンド(プログラム)。
fastbootドライバ
PC上からfastbootプロトコルで接続するためのデバイスドライバ。adbドライバや、MTPドライバとは異なる。

fastbootモードへの入り方

  1. pc 上の adb コマンドを使って。
    $ adb reboot fastboot
  2. デバイスの、ボリュームダウンと電源を同時押しで起動。

fastbootコマンドの使い方

usage: fastboot [ <option> ] <command>

commands:
  update <filename>                        reflash device from update.zip
  flashall                                 flash boot + recovery + system
  flash <partition> [ <filename> ]         write a file to a flash partition
  erase <partition>                        erase a flash partition
  format <partition>                       format a flash partition 
  getvar <variable>                        display a bootloader variable
  boot <kernel> [ <ramdisk> ]              download and boot kernel
  flash:raw boot <kernel> [ <ramdisk> ]    create bootimage and flash it
  devices                                  list all connected devices
  continue                                 continue with autoboot
  reboot                                   reboot device normally
  reboot-bootloader                        reboot device into bootloader
  help                                     show this help message

options:
  -w                                       erase userdata and cache (and format
                                           if supported by partition type)
  -u                                       do not first erase partition before
                                           formatting
  -s <specific device>                     specify device serial number
                                           or path to device port
  -l                                       with "devices", lists device paths
  -p <product>                             specify product name
  -c <cmdline>                             override kernel commandline
  -i <vendor id>                           specify a custom USB vendor id
  -b <base_addr>                           specify a custom kernel base address. default: 0x10000000
  -n <page size>                           specify the nand page size. default: 2048
  -S <size>[K|M|G]                         automatically sparse files greater than size.  0 to disable
fastboot flash <partition> <filename>
<filename> をFlashの<partition> に書き込む。<filename>は、*.img などである。
partitionfilename
modem
sbl1
sbl1bak
rpm
rpmbak
tzTrustZone
tzbak
aboot
abootbak
bootboot.imgLinuxカーネル
systemsystem.img/system OSやシステムが用意したアプリ
persistpersist.img/persist
cache/cache
userdata/data ユーザがインストールしたアプリや、ユーザ用のデータ(/sdcard)
sysprop/sysprop
recoveryrecovery.imgリカバリー用
fastboot reboot <モード>
<モード>で再起動する。モードは、recovery, bootloader など。
fastboot boot <イメージファイル>
端末上の boot 領域からではなく、PC上の<イメージファイル>を使って起動する。ラムディスクを指定したり、-c オプションでカーネルオプションを与えることもできる。
fastboot oem unlock
端末のブートローダをアンロックする。未署名のファームウエアでも起動できるようになる。端末は工場出荷状態にされる。

adb 使い方メモ

(2014-02-08)

root の adb shell を使う
# 端末の adbd を root 権限で起動しなおす。
$ ./adb root
# 一般ユーザ権限で shell を起動する。
$ ./adb shell
shell@flo:/ $ id
uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats) context=u:r:shell:s0
shell@flo:/ $ 
# unix と同じように su コマンドを実行する。
shell@flo:/ $ su
# このとき、SuperSU のダイアログが出てきて、root 権限の許可を求めるので、了承する。
root@flo:/ #
# root 権限が得られている。
root@flo:/ # id
uid=0(root) gid=0(root) context=u:r:init:s0
root@flo:/ #
wlan 経由で adb shell を使う
http://komugi.net/archives/2010/08/22212755
# USB接続で IPアドレスを調べておく。
nkon(10308)~/Android/sdk/platform-tools % ./adb shell
shell@flo:/ $ ifconfig wlan0
wlan0: ip 192.168.1.35 mask 255.255.255.0 flags [up broadcast running multicast]
shell@flo:/ $ exit
# 5555 ポートでサーバを起動しておく。
nkon(10334)~/Android/sdk/platform-tools % ./adb tcpip 5555
restarting in TCP mode port: 5555
# ここでUSBケーブルを外し、WiFi接続にする。
# 接続方法を決める
~/Android/sdk/platform-tools % ./adb connect 192.168.1.35:5555
connected to 192.168.1.35:5555
# 接続方法が tcpip になっている。
nkon(10338)~/Android/sdk/platform-tools % ./adb devices
List of devices attached 
192.168.1.35:5555	device
# あとは、普通に adb コマンドを実行すれば、それが WiFi接続で実行される。
~/Android/sdk/platform-tools % ./adb shell
shell@flo:/ $ id
uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats) context=u:r:shell:s0
shell@flo:/ $ exit
nkon(10339)~/Android/sdk/platform-tools % 
ケーブルを接続しなくても良いのは便利。ただし、節電ツールなどを使っていると、すぐにスリープしたり接続が切れたりする(USBデバッグ中は電源を切らない、というオプションがあるのに対して)。あまり実用的ではないかもしれない。Qiで給電していれば実用的なのだろうか。

MultiROMの仕組みメモ

(2014-11-19)

Flashable Zipの仕組みメモ

(2014-02-15)

TWRPなどのリカバリで焼くことのできる zip ファイルの仕組みを調べたメモです。

アプリの仕組みメモ

(2014-02-15)

SDKとNDK
Android のアプリは通常、Java で開発される。これは、いろいろなデバイスごとにCPUが異なっていても、Java の中間コードを配布すれば実行できるからである。Java による開発をするためのツールキットが SDK である。Eclipse ベースで android 向けの開発ができるように改造されている。
一方、ネイティブコードを作成・実行する仕組みが NDK である。言語は C/C++など、なんでも良い。主要部分を *.so ライブラリとして作成し、JNI(Java Native Interface)経由で Java VM 上で動作させるものらしい。ツールチェインとしては、llvm+clang ベースのものがソースで配布されているので、まずはクロスコンパイラのビルドから。といっても、ターゲットをビルドするときにツールチェインも自動でビルドされる。
アプリとプロセスとファイルシステム
  • アプリは、*.apk形式で配布される。
  • インストール時に、アプリそれぞれに uid が割り当てられる。
  • それぞれのアプリは、自分のファイルのみ読み書きできる。その制御は UID ベースで行われる。
  • と書いたが、PureSpeedX の場合は、全て root 権限で動作しているようだ。(危険!)
  • 複数のアプリでデータを共有する場合(電話帳など)は、データ配信サーバを起動して、そのサーバと通信するアーキテクチャを構成する。
  • ディレクトリの使い方
    /data/data/APP_NAME/
    アプリケーションのディレクトリ

SL4A(Scripting Layer for Android)

(2014-02-09)

(2014-02-24)

App Inventor

(2014-03-28)

2014-03-28 時点でのバージョンは Beta 2。英語版のみ。

Open Blocks のブロックをブラウザ上で組み合わせる。→ Android で動作するアプリが出来上がる。

AOSPビルド環境の構築

FirefoxOSビルド環境の構築



近藤靖浩
Last modified: Sat Mar 29 14:12:28 JST 2014