SlideShare a Scribd company logo
1 of 55
Download to read offline
Android のリカバリシステム
(Android のシステムアップデート )
横浜 Android and モバイル OS
プラットフォーム部
第 37 回勉強会
2015/2/22
@l_b__
今日の内容
●
ABS2012 の Intel Andrew Boie 氏のセッショ
ン、“ Android Software Updates” をベース
に Android の OTA アップデート / リカバリシス
テムの解説をします
●
Lollipop で の 新 機 能 、 SecureBoot/Block-
Oriented OTA についても少々
自己紹介
●
Twitter ID:@l_b__
●
PF 部の司会進行役 兼 懇親会手配役 兼 配信
係 兼 雑用係
●
フレームワーク周りが好物です
●
BeOS 好きだったのと Java-er なので Be 関係者
が多い ( 多かった )Android に惹かれました
●
仕事は某 SIer で Android フレームワーク修正か
らアプリ作成までやっていましたが最近は
Android やっていません
Android リカバリシステムの概要
OTA アップデートの手順
OS ビルド・ OTA ファイル作成
OTA ファイル配布
アップデート更新通知
OTA ファイルダウンロード OTA アップデート アップデート完了
AOSP で対応しているのは?
OS ビルド・ OTA ファイル作成
OTA ファイル配布
アップデート更新通知
OTA ファイルダウンロード OTA アップデート アップデート完了
ブロックで書くと
OTA ファイル作成
サーバへデプロイ
アップデート
存在チェック
OTA ファイル
ダウンロード
OTA ファイル
署名検証
リカバリ再起動
RecoveryConsole
起動
OTA ファイル
署名検証
OTA ファイル
展開
Updater 起動
アップデート適用
再起動し完了
配布側処理 Android
Recovery
Console
OTA ファイル内
Updater
RecoveryOS
赤線枠内が
AOSP 対応部分
AOSP 内コンポーネントその1
●
Releasetools
– Target-files-package(TFP) からデジタル署名さ
れた OTA アップデートファイルを生成するツール
– build/tools/releasetools 配下
●
Android.os.RecoverySystem API
– アップデートファイルの検証・インストールとファクト
リーデータリセットのための Android フレーム
ワーク API
– frameworks/base/core/java/android/os/Recov
erySystem.java
AOSP 内コンポーネントその2
●
Recovery Console (RC)
– Android 内の別ブート環境
– システムアップデート処理を起動
– ファクトリデータリセットを実行
– bootable/recovery 配下
●
Updater
– アップデートファイル内のアップデートロジックと実
行形式バイナリ
– RC から起動され、 Edify と呼ばれる独自スクリプ
トで実行
– bootable/recovery 配下
AOSP に無い機能
●
アップデートファイル配布サーバ側
●
システムアップデート更新チェックとダウンロード
処理
●
更新の通知 UI
– android.settings.SYSTEM_UPDATE_SETTING
S のインテントを受け付けて設定画面から起動
するようにする
リカバリシステムの制限事項
●
再パーティショニングは出来ない
– /system が足りなくなったり boot 、 recovery
パーティションが足りなくなっても増やせないの
で最初に余裕を持った設定をする必要あり
– cache パーティションは system の 2/3 程度あれ
ば安全
●
1 度に出来るのは 1 アップデート
●
アップデート中はデバイスの通常使用は出来な
い
ファイルシステムの設定
Android のパーティションレイアウト
●
boot
– Linux カーネルと root ファイルシステムになる
RAM ディスク
– init をはじめとした、 /system をマウントし
Android を起動するためのツールが含まれる
●
system
– 全ての Android のシステムアプリとライブラリを含
む
– OTA アップデート時以外は常に Read-only でマ
ウントされる
●
※Lollipop では OTA アップデート時も Read-only
でマウント ( 後述 )
Android のパーティションレイアウト
●
data
– ダウンロードしたアプリ格納
– アプリデータ格納
– DalvikVM のキャッシュ
– OTA アップデートでは何も変更されない
– ファクトリデータリセットで消去される
Android のパーティションレイアウト
●
recovery
– リカバリ OS( 互換起動イメージ ) 格納
– RecoveryConsole(RC) の実装をはじめとした
recovery 機能を含む RAM ディスク
●
misc
– ファイルシステムを含まない非常に小さな領域
●
Bootloader Control Block(BCB) と呼ばれ、ブ
ロックデバイスとして直接読み書きされる
– RC と Bootloader 、カーネル間のやり取りに使わ
れる
Android のパーティションレイアウト
●
cache
– 一時的なファイル置き場
– 特殊な権限 (uid:system) を持つアプリによる一
時ストレージやダウンロード領域として使用され
る
– OTA アップデートファイルもここに置かれる
– applypatch が一時ストレージとして使用する
– ファクトリデータリセットで消去される
Android Boot イメージ
●
メタデータ (boot header) 、カーネルイメー
ジ、 RAM ディスク、 2nd ブートローダー ( オプ
ション ) を格納したコンテナファイルフォーマット
●
system/core/mkbootimg を使って生成
– ファイルフォーマットは
system/core/mkbootimg/bootimg.h で定義
– 通常ビルド時と OTA アップデートファイル生成時
に使用される
recovery.fstab
●
デバイス上の全ファイルシステムを定義したファイ
ル
– パーティションの定義ではない
●
RC と Releasetools が使用
●
デバイスノードのマウントポイントとファイルシステ
ムタイプを記述
Releasetools による
アップデートファイル生成
Targer-Files-Package(TFP)
●
'make target-files-package' で生成
– out/target/product/
[device]/obj/PACKAGING/target_files_inte
rmediates/ に生成
●
OTA アップデートファイル生成に必要な全てが含
まれた zip アーカイブ
– フルイメージでのアップデートの場合は TFP は 1
つだけ必要
– 差分アップデートの場合は差分の元となる TFP が
2 つ必要
Targer-Files-Package(TFP)
●
”radio ファイル”としてデバイス固有 blob を追加
可能
– 必ずしも無線に関する機能追加だけではない
●
bootloader 等
– AndroidBoard.mk に以下を追加
●
$(call add-radio-file,myblob.dat)
– ただ、最近の Nexus デバイスでは使われていないよ
う
– デバイス向けの Releasetools 追加定義で扱う
Android セキュリティ
●
全ての APK は電子署名される
– 同じアプリのバージョンアップとして扱われるには
同じ証明書で署名される必要がある
– 複数のアプリで同じユーザー ID を共有するのにも
それらのアプリが同じ証明書で署名される必要
がある
– LOCAL_CERTIFICATE として定義された証明書
を使用。
●
デフォルトでは testkey を使用
Android セキュリティ
●
AOSP は build/target/product/security に以
下の 4 つの証明書キーを持っている
– testkey:APK 署名のデフォルトキー
– platform: コアプラットフォーム署名向け
– shared: ホームと連絡先アプリのプロセス間で共
有されるプロバイダ向け
– media: メディア / ダウンロードプロバイダ向け
Android セキュリティ
●
AOSP のキーでは製品版としては使えない
– CTS を含む開発時のみ使用
– Releasetools に含まれる
sign_target_files_apks を使って TFP 内の
APK を製品用キーで再署名する必要がある
●
RC 内の OTA 検証キーも製品用キーに変換される
ota_from_target_files
●
TFP から OTA アップデートファイルを生成するた
めの Python スクリプト
– ota_from_target_files [flags]
input_target_files output_ota_package
– (--incremental_from) <file>
●
差分アップデート時に差分の元となる TFP を指定
– (--wipe_user_data)
●
OTA で /data を消去
– (--package_key) <key>
●
パッケージ署名に使うキーを指定
– デフォルトは testkey
ota_from_target_files
●
Python の拡張としてデバイス独自のアップデー
トタスクを追加可能
●
全てのアップデートに必要なイメージ、 Updater
実行バイナリ、アップデート時に使用される
edify スクリプトを含むパッケージを生成
アップデートファイル生成まとめ
Android ビルド
TFP
( Test Key 使用)
APK 再署名 TFP
差分アップデート
元 TFP
アップデート
ファイル生成
アップデート
ファイル
make target-files-package
sign_target_files_apks
ota_from_target_files
差分アップデート
ファイルの生成場合必要
Releasetools 拡張
●
Releasetools を拡張するには以下のファンクショ
ンを実装した Python モジュールを作成する必
要がある
– FullOTA_Assertion()
– FullOTA_InstallEnd()
– IncrementalOTA_Assertion()
– IncrementalOTA_VerifyEnd()
– IncrementalOTA_InstallEnd()
●
モジュールを置いたパスを BoardConfig.mk に
TARGET_RELEASETOOLS_EXTENSIONS と
して記述する
その他の Releasetools
●
img_from_target_files
– 'fastboot update' 向けの zip アーカイブを生成
●
check_target_files_signature
– TFP に含まれるパッケージの署名をチェックする
– 差分アップデート用の 2 つの TFP の互換性チェッ
クに使用
RecoverySystem API
RecoverySystem API
●
android.os.RecoverySystem としてアプリから
使用可能な API
– REBOOT のパーミッションが必要
– /cache の読み書き権限も必要なので system
ユーザー向け API
●
/cache/recovery/command にコマンド (OTA
アップデート / ファクトリデータリセット ) 、アップ
デートファイルパスを書き込み、 OS 再起動後に
Recovery Console へ伝える
●
アップデートファイルの検証を実行
– /system/etc/security/otacerts.zip をデフォル
トでは検証に使用
Recovery Console (RC)
Recovery Console
●
リカバリ用の起動イメージ
– シェルから’ reboot recovery’ で起動
– RecoverySystem API から起動
– ベンダーが実装するブートローダーからの操作と
して起動
●
UI は画像ベース、ローカライゼーションにも対応
●
手動操作向けの隠しメニュー
– ファクトリデータリセット
– SD カードからのアップデート
– UI プラグインでデバイス固有の機能追加可能
Recovery Console
●
ログは /cache/recovery に保存される
– RC と Updater の標準出力・エラーの出力先
– Edify の ui_print() コマンド出力先
Recovery Console の制御
●
RC 起動時は以下をコマンドライン引数として
チェックする
– recovery コマンドの引数 デバッグ用途のみ
– BCB の recovery パラメータ
– /cache/recovery/command ファイル
(RecoverySystem API が書き込み )
●
起動時に引数を BCB に常に保存
– アップデート中の不意の電源断時に再度ブート
ローダーがリカバリ OS を起動するようにする
Recovery Console の制御
●
finish_recovery()
– アップデート、ファクトリデータリセットなど処理が
成功 / 失敗に関わらず終了する時に実行
– BCB をクリアして Android を起動するようにする
– ログを /cache/recovery にコピー
ブートローダーとの調整
●
カーネルは reboot() の引数とし
て” recovery” が与えられたら、 BCB の
command パラメータに” boot-recovery” を
書き、 recovery パラメータを 0 クリアする
– ドライバの register_reboot_notifier() で実装す
る
●
ブートローダーは起動イメージを BCB の
command パラメータで判断する
– RC が command パラメータを消去するまでは RC
を起動
– command が消去されていれば通常の Android
起動
Recovery Console UI プラグイン
●
RC へデバイス固有の拡張を追加可能
– BoardConfig.mk の
TARGET_RECOVERY_UI_LIB にライブラリの
$(LOCAL_MODULE) を定義する
– bootable/recovery/device.h で定義される
Device クラスを実装することで独自拡張可能
– device/htc/fugu/recovery 以下に実装サンプ
ルあり
Recovery 画面
●
GUI は画像ベース
●
bootable/recovery/ 配下の res-mdpi 〜 res-
xxxhdpi に標準の画像があり、差し替え可能
– RGB/RGBA フォーマットの 8bit PNG ファイル
– ファイル名は同じままにしておく
●
bootable/recovery/interlace-frames.py とし
てアニメーションの作成に使えるスクリプトが準
備されている
– ベース画像とオーバーレイする複数フレームを一
枚画像にする
Updater
Updater 実行バイナリ
●
アップデートファイル内に含まれる
– zip ファイルに含まれることで、アップデートの実装
コードが既存に存在している必要が無くなる
●
必ずしも AOSP の Updater 実装を使用する必要
はない
– RC は Updater を fork()/exec() で実行し、 pipe
で通信する
– RC は引数を 3 つ渡す
●
Android.mk で定義された RC API バージョン
(Android2.2 〜 5.0 でバージョン 3)
●
pipe のファイルディスクリプタ
●
アップデート zip ファイルパス
Updater 実行バイナリ
– Updater は画面 ( 進捗表示 ) 表示制御や文字表
示、 cache 消去などの文字列コマンドを pipe
経由で RC に送信する
●
bootable/recovery/install.cpp 参照
●
AOSP 実装 Updater はアップデートファイル内の
Edify で記述されたスクリプトを実行する
●
デバイス固有の Updater 機能はプラグインとし
て実装可能
●
Updater の中断処理には注意 ! 正しく実装しな
いと文鎮化してしまう
起動からのリカバリ処理
●
RC 自体は OTA アップデートの処理中はアップ
デートされない
– 不意の電源断後も同じ RC が使用されることを確
実にするため
●
flash_recovery
– init.rc の oneshot service として実行
– /system/etc/install-recovery.sh を実行
– recovery イメージの SHA1 ハッシュをチェックして
パッチを当てる必要があるか判断
– 必要があれば recovery パーティションの起動イ
メージにパッチを当てる
Applypatch
●
差分アップデート時に /system のファイルと
boot イメージにパッチを当てるのに使用
●
bootable/recovery/applypatch 配下
●
差分作成は bsdiff を使用
●
安全に ( 望むタイミングまで元ファイルは touch
されない ) 、冪等に (1 回操作を行っても何度
行っても同じ結果になる ) なるよう処理される
Edify スクリプト
●
OTA アップデートのためのスクリプト言語
●
bootable/recovery/edify 配下
●
文法など詳細は README ファイル参照
●
全ての関数は C で実装、 Edify では関数定義出
来ない
●
組み込み関数
は /bootable/recovery/updater/install.c
に実装、プラグインとして関数追加可能
Updater プラグイン
●
ライブラリとして複数の追加定義が可能
– Static ライブラリとして作成
– BoardConfig.mk に
TARGET_RECOVERY_UPDATE_LIBS として
ライブラリ名を定義
– サンプル実装として
device/asus/fugu/recovery を参照
– TARGET_RECOVERY_UPDATE_EXTRA_LIBS
として Static ライブラリのバイナリ ( サポートライ
ブラリ ) を追加定義可能
製品化タスク
●
recovery.fstab の定義作成
●
デバイス独自 blob を” radio ファイル”として
AndroidBoard.mk に追加
●
RC UI プラグイン実装
– リカバリ時の画像を必要なら差し替え
●
Updater プラグイン実装
製品化タスク
●
Releasetools 拡張実装
– OTA アップデートファイルへの RADIO イメージの
追加・パッチのロジックを追加
– イメージを扱う Edify コマンドの Updater スクリプ
トへの追加
– 必要ならアサーション・ベリフィケーション処理を追
加
●
BoardConfig.mk にプラグイン、拡張、サポートラ
イブラリの定義を追加
●
設定アプリから IntentFilter で OTA アップデート
ファイルダウンロード処理を呼べるようを実装
製品化タスク
●
ブートローダーとカーネルで BCB を介してやり取
りできるよう実装
●
製品用証明書キー生成
●
Android フレームワー
ク、 build/core 、 bootable/recovery は変更
の必要なし
●
良い継続的なテストを計画しましょう
Lollipop での新機能
Secureboot
●
読み取り専用パーティションの整合性を保証する
機能が Lollipop から有効化
– Linux カーネルの DM-Verity を使用
– パーティションを 4k バイトブロックに分け、各ブロッ
クのハッシュ値からハッシュツリーを生成
DM-Verity
●
パーティションへの書き込み要求がある毎にカー
ネルモジュールがブロック単位でハッシュを
チェック、不整合が発生したら I/O エラーを返
すことでパーティションを保護
●
/system と /vendor に適用されている
●
system/extras/verity にユーティリティが追加
●
詳細は
https://source.android.com/devices/tec
h/security/secureboot/index.html
リカバリシステムへの影響
●
リカバリ OS はファイルシステム経由で /system
を書き換える
– →DM-Verity が有効だと書き換えにより不整合が
発生
– → 文鎮化
●
解決方法としてブロック指向の OTA(block-
oriented OTAs) を導入
ブロック指向 OTA
●
ファイルの差分ではなくブロックの差分を使用
●
ファイルシステムを介さず、ブロックデバイスを直
接書き換える (MTD デバイスなら MTD サブシ
ステム経由 )
●
ファイルシステムを介さない分処理も高速化
●
リカバリ OS でも /system は Read-only としてマ
ウントされるようになり、書き込み直前にアンマ
ウントされるよう変更されている
参考資料
●
Android Builders Summit 2012 ”Android*
Software Updates”
– https://events.linuxfoundation.org/images/s
tories/pdf/lf_abs12_boie.pdf
– http://free-electrons.com/blog/abs-2012-v
ideos/
●
Android Open Source Project “Android Core
Technologies Secure Boot”
– https://source.android.com/devices/tech/s
ecurity/secureboot/index.html
●
Android ソースコード検索サービス
– https://sites.google.com/site/devcollaborati
on/codesearch

More Related Content

What's hot

Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debugging
Utkarsh Mankad
 
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Opersys inc.
 

What's hot (20)

Learning AOSP - Android Booting Process
Learning AOSP - Android Booting ProcessLearning AOSP - Android Booting Process
Learning AOSP - Android Booting Process
 
Android OTA updates
Android OTA updatesAndroid OTA updates
Android OTA updates
 
LAS16-504: Secure Storage updates in OP-TEE
LAS16-504: Secure Storage updates in OP-TEELAS16-504: Secure Storage updates in OP-TEE
LAS16-504: Secure Storage updates in OP-TEE
 
Customizing AOSP For Different Embedded Devices And Integration at Applicatio...
Customizing AOSP For Different Embedded Devices And Integration at Applicatio...Customizing AOSP For Different Embedded Devices And Integration at Applicatio...
Customizing AOSP For Different Embedded Devices And Integration at Applicatio...
 
Android Internals
Android InternalsAndroid Internals
Android Internals
 
Android booting sequece and setup and debugging
Android booting sequece and setup and debuggingAndroid booting sequece and setup and debugging
Android booting sequece and setup and debugging
 
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介OpenStackを使用したGPU仮想化IaaS環境 事例紹介
OpenStackを使用したGPU仮想化IaaS環境 事例紹介
 
SFO15-205: OP-TEE Content Decryption with Microsoft PlayReady on ARM
SFO15-205: OP-TEE Content Decryption with Microsoft PlayReady on ARMSFO15-205: OP-TEE Content Decryption with Microsoft PlayReady on ARM
SFO15-205: OP-TEE Content Decryption with Microsoft PlayReady on ARM
 
Q4.11: Porting Android to new Platforms
Q4.11: Porting Android to new PlatformsQ4.11: Porting Android to new Platforms
Q4.11: Porting Android to new Platforms
 
Booting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot imagesBooting Android: bootloaders, fastboot and boot images
Booting Android: bootloaders, fastboot and boot images
 
Introduction to Optee (26 may 2016)
Introduction to Optee (26 may 2016)Introduction to Optee (26 may 2016)
Introduction to Optee (26 may 2016)
 
Embedded Android Workshop with Pie
Embedded Android Workshop with PieEmbedded Android Workshop with Pie
Embedded Android Workshop with Pie
 
U Boot or Universal Bootloader
U Boot or Universal BootloaderU Boot or Universal Bootloader
U Boot or Universal Bootloader
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
 
Linux Kernel MMC Storage driver Overview
Linux Kernel MMC Storage driver OverviewLinux Kernel MMC Storage driver Overview
Linux Kernel MMC Storage driver Overview
 
Learning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device DriverLearning AOSP - Android Linux Device Driver
Learning AOSP - Android Linux Device Driver
 
Yocto bspを作ってみた
Yocto bspを作ってみたYocto bspを作ってみた
Yocto bspを作ってみた
 
AvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregateAvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregate
 
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
Native Android Userspace part of the Embedded Android Workshop at Linaro Conn...
 
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime RipardKernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
Kernel Recipes 2017 - An introduction to the Linux DRM subsystem - Maxime Ripard
 

Viewers also liked

Overview of Android binder IPC implementation
Overview of Android binder IPC implementationOverview of Android binder IPC implementation
Overview of Android binder IPC implementation
Chethan Pchethan
 
Binderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroidBinderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroid
l_b__
 
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
Kunimasa Noda
 
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
 

Viewers also liked (17)

Intentの概要
Intentの概要Intentの概要
Intentの概要
 
Android Hacks - Hack57
Android Hacks - Hack57Android Hacks - Hack57
Android Hacks - Hack57
 
Overview of Android binder IPC implementation
Overview of Android binder IPC implementationOverview of Android binder IPC implementation
Overview of Android binder IPC implementation
 
西区勉強会 PCのバックアップ・リストアについて
西区勉強会 PCのバックアップ・リストアについて西区勉強会 PCのバックアップ・リストアについて
西区勉強会 PCのバックアップ・リストアについて
 
Androidroot化あれこれ
Androidroot化あれこれAndroidroot化あれこれ
Androidroot化あれこれ
 
はじめてのAndroid開発
はじめてのAndroid開発はじめてのAndroid開発
はじめてのAndroid開発
 
ABTest
ABTestABTest
ABTest
 
Binderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroidBinderのはじめの一歩とAndroid
Binderのはじめの一歩とAndroid
 
Android端末のroot化について
Android端末のroot化についてAndroid端末のroot化について
Android端末のroot化について
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達PF開発に使えるAOSPのツール達
PF開発に使えるAOSPのツール達
 
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
アプリ開発・端末毎の解像度の違いを吸収する方法 Android Bazaar and Conference 2011 Summer
 
Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御Unixカーネルの設計 7 プロセスの制御
Unixカーネルの設計 7 プロセスの制御
 
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPracticeiOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
 
NASAゲーム(コンセンサスゲーム)
NASAゲーム(コンセンサスゲーム)NASAゲーム(コンセンサスゲーム)
NASAゲーム(コンセンサスゲーム)
 
僕らのデータ同期プラクティス
僕らのデータ同期プラクティス僕らのデータ同期プラクティス
僕らのデータ同期プラクティス
 
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
 

Similar to Androidのリカバリシステム (Androidのシステムアップデート)

NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
Naruto TAKAHASHI
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
 

Similar to Androidのリカバリシステム (Androidのシステムアップデート) (20)

NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
LibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATELibreOffice を Windows 上でビルドする UPDATE
LibreOffice を Windows 上でビルドする UPDATE
 
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
 
Agileツール適合化分科会(dev opsツール)
Agileツール適合化分科会(dev opsツール)Agileツール適合化分科会(dev opsツール)
Agileツール適合化分科会(dev opsツール)
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -
 
Try Firefox OS
Try Firefox OSTry Firefox OS
Try Firefox OS
 
Scoop!
Scoop!Scoop!
Scoop!
 
Windows 7 オプショナルツール 一挙紹介
Windows 7 オプショナルツール 一挙紹介Windows 7 オプショナルツール 一挙紹介
Windows 7 オプショナルツール 一挙紹介
 
Build 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansaiBuild 番号の自動更新スクリプトについて #cocoa_kansai
Build 番号の自動更新スクリプトについて #cocoa_kansai
 
Firefox os hackathon
Firefox os hackathonFirefox os hackathon
Firefox os hackathon
 
はじめてのAndroid Things
はじめてのAndroid ThingsはじめてのAndroid Things
はじめてのAndroid Things
 
.NET Coreとツール類の今
.NET Coreとツール類の今.NET Coreとツール類の今
.NET Coreとツール類の今
 
Verilog-HDL Tutorial (15) software
Verilog-HDL Tutorial (15) softwareVerilog-HDL Tutorial (15) software
Verilog-HDL Tutorial (15) software
 
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編KinectとC#を用いた実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
KinectとC#を用いた 実践的VRアプリ開発 第2回 2015/10/13 Github CLI編
 
Houdini 製品概要
Houdini 製品概要 Houdini 製品概要
Houdini 製品概要
 

More from l_b__

Binderのはじめの一歩
Binderのはじめの一歩Binderのはじめの一歩
Binderのはじめの一歩
l_b__
 
Open binder
Open binderOpen binder
Open binder
l_b__
 
Yapf2013
Yapf2013Yapf2013
Yapf2013
l_b__
 

More from l_b__ (12)

Fuchsia概略その1
Fuchsia概略その1Fuchsia概略その1
Fuchsia概略その1
 
Android,Brillo,ChromeOS
Android,Brillo,ChromeOSAndroid,Brillo,ChromeOS
Android,Brillo,ChromeOS
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
ABS2015 のセッション紹介
ABS2015 のセッション紹介ABS2015 のセッション紹介
ABS2015 のセッション紹介
 
Binderのはじめの一歩
Binderのはじめの一歩Binderのはじめの一歩
Binderのはじめの一歩
 
Open binder
Open binderOpen binder
Open binder
 
Eclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグEclipseを使ったandroid nativeデバッグ
Eclipseを使ったandroid nativeデバッグ
 
Android デバッグ小ネタ
Android デバッグ小ネタAndroid デバッグ小ネタ
Android デバッグ小ネタ
 
Yapf2013
Yapf2013Yapf2013
Yapf2013
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門
 
Stagefright入門
Stagefright入門Stagefright入門
Stagefright入門
 

Androidのリカバリシステム (Androidのシステムアップデート)