Android の新ビルドシステム
横浜 Android and モバイル OS
プラットフォーム部
第 39 回勉強会
2015/9/19
@l_b__
今日の内容
●
AOSP を眺めていると、すでに master ブランチで
採用されているビルドシステムと、現在開発中
のシステムがあるのでその辺りを。
●
AOSP を眺めただけの妄想ベースなので、内容
の保証は ( 参照先のリンク以外は )...
自己紹介
●
Twitter ID:@l_b__
●
PF 部の司会進行役 兼 懇親会手配役 兼 配信
係 兼 雑用係
●
フレームワーク周りが好物です
●
BeOS 好きだったのと Java-er なので Be 関係者
が多い ( 多かった ...
今日のサマリ
●
https://github.com/google/kati と
https://android.googlesource.com/platf
orm/build/soong/+/master-soong/doc.go
を読め...
ではありますが一応解説を
●
現状 master ブランチには kati と呼ばれるビルド
ツールが導入されています
●
また soong というビルドシステムも開発が進んで
いるようです
kati
●
kati is an experimental GNU make clone.
The main goal of this tool is to speed-up
incremental build of Android.
– h...
kati
●
Currently, kati does not offer a faster build
by itself. It instead converts your Makefile
to a ninja file.
●
今はまだ ...
ninja
●
http://martine.github.io/ninja/
●
ファイル間の依存関係を高速に解決することでビ
ルドの高速化を目指しているビルドシステム
●
chromium ですでに make の代わりに採用済み
ninja とは
●
“ninja は chromium ブラウザの開発者が現行
のビルドシステムに嫌気をさして作り始めたビ
ルドシステムです。これまでちょっとしたファイル
の変更であってもビルド開始までに 10 秒掛
かっていたのが 1 秒以...
ninja とは
●
すでにメタビルドシステムの gyp 、 CMake は
ninja に対応済み
– Makefile の代わりに build.ninja を出力
●
LLVM や node.js といったプロジェクトが採用
●
Andro...
kati に戻って
●
Android(master ブランチ ) では /build/kati
●
Go で書かれた kati と C++ で書かれた ckati が
含まれている
– 現状は ckati がメインで使われているっぽい
kati を使ったビルド
●
$ export USE_NINJA=true
●
$ source build/envsetup.sh
●
$ lunch hogehoge
●
$ make
kati を使ったビルド
kati を使ったビルド
●
out/target/product/[ デバイス
名 ]/build.ninja が kati によって作成される
●
後は ninja がよしなに計らってくれる
●
コンパイル、リンクは gcc/llvm cl...
kati についてその他
●
Google 内では export USE_GOMA=true する
ことで社内クラウドコンパイル環境である goma
を使った分散ビルドが出来るよう。
●
kati のメイン開発者は日本人 2 人の模様
– ht...
もうひとつのビルドツール
●
こちらは鋭意開発中のようですが…
soong
●
master-soong ブランチに初出、現在は master
にも一部マージ済み
●
/build/soong 配下の Go で書かれたツール
●
ninja 、 blueprint と合わせてビルドを実行
soong?
●
スタートレックに出てくるアンドロイドであるデータ
少佐の生みの親、ヌニエン・スン博士 (Dr.
Noonien Soong) が命名の由来 ?
– Android をビルドするシステムだからアンドロイド
を作った人物の名前なの...
blueprint
●
blueprint はビルド定義ファイル Android.bp を
読み込んで build.ninja を作るメタビルドツー
ル
●
/build/blueprint
●
Android.bp は Android.mk ...
Android.bp
cc_library(
name = "cmd",
srcs = [
"main.c",
],
deps = [
"libc",
],
)
subdirs = ["subdir1", "subdir2"]
soong
●
soong 自体はどのモジュールをどのようにビルド
するかコントロールする役目の模様。
●
Android.mk を Android.bp に変換するツールを
含む模様
●
どのデバイス向けか、そのデバイスにどのモ
ジュールをイ...
ビルド
●
$ ./bootstrap.bash
●
$ ./soong
●
でビルドできるのではないか ( 手順説明は見当た
らない )
●
ただし、 master-soong ブランチも soong コマン
ドですぐにエラー終了する。
●
...
ビルド
●
初期処理として .bootstrap 配下に
blueprint 、 soong がビルドされる
●
それらを使って各モジュールが .intermediates
配下にビルドされる ( はず )
最後のまとめ
●
中の人たちも開発中のビルド時間には辟易して
いるようです。
●
Chrome との開発統合がこんな形で現れていま
す。
●
Android の Go への浸透はまず周辺ホストツー
ルから。デバイス中に入ってくるのはいつでしょ
...
以上
●
次回以降は Android Marshmallow で何か。
以上
Upcoming SlideShare
Loading in...5
×

Androidの新ビルドシステム

337

Published on

今後採用されそうなAndroidの新ビルドシステム、katiとsoongについて

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
337
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Androidの新ビルドシステム

  1. 1. Android の新ビルドシステム 横浜 Android and モバイル OS プラットフォーム部 第 39 回勉強会 2015/9/19 @l_b__
  2. 2. 今日の内容 ● AOSP を眺めていると、すでに master ブランチで 採用されているビルドシステムと、現在開発中 のシステムがあるのでその辺りを。 ● AOSP を眺めただけの妄想ベースなので、内容 の保証は ( 参照先のリンク以外は ) ちょっと…
  3. 3. 自己紹介 ● Twitter ID:@l_b__ ● PF 部の司会進行役 兼 懇親会手配役 兼 配信 係 兼 雑用係 ● フレームワーク周りが好物です ● BeOS 好きだったのと Java-er なので Be 関係者 が多い ( 多かった )Android に惹かれました ● 仕事は某 SIer で Android フレームワーク修正か らアプリ作成までやっていましたが最近は Android 全く触っていません
  4. 4. 今日のサマリ ● https://github.com/google/kati と https://android.googlesource.com/platf orm/build/soong/+/master-soong/doc.go を読め 以上
  5. 5. ではありますが一応解説を ● 現状 master ブランチには kati と呼ばれるビルド ツールが導入されています ● また soong というビルドシステムも開発が進んで いるようです
  6. 6. kati ● kati is an experimental GNU make clone. The main goal of this tool is to speed-up incremental build of Android. – https://github.com/google/kati/blob/mas ter/README.md ● インクリメンタルビルドの高速化を目標とした make の代替ツール
  7. 7. kati ● Currently, kati does not offer a faster build by itself. It instead converts your Makefile to a ninja file. ● 今はまだ Makefile を ninja 向けに変換するだけ だよ kati
  8. 8. ninja ● http://martine.github.io/ninja/ ● ファイル間の依存関係を高速に解決することでビ ルドの高速化を目指しているビルドシステム ● chromium ですでに make の代わりに採用済み
  9. 9. ninja とは ● “ninja は chromium ブラウザの開発者が現行 のビルドシステムに嫌気をさして作り始めたビ ルドシステムです。これまでちょっとしたファイル の変更であってもビルド開始までに 10 秒掛 かっていたのが 1 秒以下になるとの事で す。 ninja のウリは高速であり、ゴールも高 速。 configure の様な依存から解決するので はなく、現行のファイル構成からソースレベルの 依存情報を解決します。” – 「 Big Sky :: 高速なビルドシステム 「 ninja 」」 http://mattn.kaoriya.net/softwar e/ninja/20140121141906.htm
  10. 10. ninja とは ● すでにメタビルドシステムの gyp 、 CMake は ninja に対応済み – Makefile の代わりに build.ninja を出力 ● LLVM や node.js といったプロジェクトが採用 ● Android(master ブランチ ) で は /prebuilts/ninja にビルド済みバイナリ有り
  11. 11. kati に戻って ● Android(master ブランチ ) では /build/kati ● Go で書かれた kati と C++ で書かれた ckati が 含まれている – 現状は ckati がメインで使われているっぽい
  12. 12. kati を使ったビルド ● $ export USE_NINJA=true ● $ source build/envsetup.sh ● $ lunch hogehoge ● $ make kati を使ったビルド
  13. 13. kati を使ったビルド ● out/target/product/[ デバイス 名 ]/build.ninja が kati によって作成される ● 後は ninja がよしなに計らってくれる ● コンパイル、リンクは gcc/llvm clang が行うの で、初回ビルドが特別に速いということは無さそ う ● ビルド進捗が表示されるのは分かりやすい
  14. 14. kati についてその他 ● Google 内では export USE_GOMA=true する ことで社内クラウドコンパイル環境である goma を使った分散ビルドが出来るよう。 ● kati のメイン開発者は日本人 2 人の模様 – http://shinh.hatenablog.com/ – http://ukai.jp/ ● kati の意味は不明…
  15. 15. もうひとつのビルドツール ● こちらは鋭意開発中のようですが…
  16. 16. soong ● master-soong ブランチに初出、現在は master にも一部マージ済み ● /build/soong 配下の Go で書かれたツール ● ninja 、 blueprint と合わせてビルドを実行
  17. 17. soong? ● スタートレックに出てくるアンドロイドであるデータ 少佐の生みの親、ヌニエン・スン博士 (Dr. Noonien Soong) が命名の由来 ? – Android をビルドするシステムだからアンドロイド を作った人物の名前なのかな – トレッキーでは無いのでよく分かりません
  18. 18. blueprint ● blueprint はビルド定義ファイル Android.bp を 読み込んで build.ninja を作るメタビルドツー ル ● /build/blueprint ● Android.bp は Android.mk の代わりになる Python データライクなフォーマットファイル
  19. 19. Android.bp cc_library( name = "cmd", srcs = [ "main.c", ], deps = [ "libc", ], ) subdirs = ["subdir1", "subdir2"]
  20. 20. soong ● soong 自体はどのモジュールをどのようにビルド するかコントロールする役目の模様。 ● Android.mk を Android.bp に変換するツールを 含む模様 ● どのデバイス向けか、そのデバイスにどのモ ジュールをインストールするか、対象アーキテク チャは何かなどコントロール ● しかし lunch コマンドに該当する処理 や、 AndroidProducts.mk 、 device.mk など に該当するのが何かは不明
  21. 21. ビルド ● $ ./bootstrap.bash ● $ ./soong ● でビルドできるのではないか ( 手順説明は見当た らない ) ● ただし、 master-soong ブランチも soong コマン ドですぐにエラー終了する。 ● Bootstrap.bash は本 体 /build/soong/bootstrap.bash へのシン ボリックリンク ● soong は本体 /build/soong/soong.bash への シンボリックリンク
  22. 22. ビルド ● 初期処理として .bootstrap 配下に blueprint 、 soong がビルドされる ● それらを使って各モジュールが .intermediates 配下にビルドされる ( はず )
  23. 23. 最後のまとめ ● 中の人たちも開発中のビルド時間には辟易して いるようです。 ● Chrome との開発統合がこんな形で現れていま す。 ● Android の Go への浸透はまず周辺ホストツー ルから。デバイス中に入ってくるのはいつでしょ う。 ● AndroidBuilder も Go 覚えないとね
  24. 24. 以上 ● 次回以降は Android Marshmallow で何か。 以上
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×