[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
| |
Androidのなかみ InsideAndroid
1
:
karino2
:2015/07/20(月) 18:51:08
http://www.amazon.co.jp/gp/aw/d/4893622889
Androidの低レベルな所を解説してくれる本。
init、zygote、バインダなどのような低レベルな所と、開発環境のセットアップとかJNIとかサービスとかのような割と入門的な内容が同居する、いまいち想定読者の分かりにくい本。
入門的な事をばっさり飛ばして低レベルな所の解説本として読むのが良いと思う。
何故か洋書が存在せず、和書しか無い。珍しい。
洋書では Android Anatomy Episode 1という名前でinitの章だけ同じ著者達でほとんど同じ内容の物が出ている。
2
:
karino2
:2015/07/20(月) 18:53:53
5章まで読み終わったので感想。
1章、2章はセットアップとかなので適当に読み飛ばした。
3章はinitだが、以前英語版で読んだ内容とほとんど一緒なので、ざっと見直す。
最近悪魔本読んだ後なのでudev回りはちょっと真面目に読んだ。
4章はJNI。本当に単なるJNIの解説のようなので、少しパラパラ見たが飛ばした。
3
:
karino2
:2015/07/20(月) 19:00:59
5章はZygote。
この辺か読みたくて本を買ったような物なので、真面目に読む。
ZygoteはJavaのコードを軽く読んだ事はあったのだが、解説も割と薄くて似たようなレベルに見える。
ただちゃんと順番に追っていくのとstartSystemServer回りはJavaを軽く読むだけだと良く分からないのがちゃんと解説されてて、なかなか良い。
しかもこの前のinitとの関係、具体的には/dev/socket/zygote あたりの生成とバインドの全容が理解出来るので、全部分った!という気分になれる(実際はそんな変わらないが)
この章だけに限らないが、扱ってる内容の割にはやけに解説が素人向けで、テキストを一行ずつパースしてるだけのコードの解説とかが長い。
でもそんなレベルの人間はこの本読んでも良く分からないと思う。
socketとかselectとかforkの知識は前提なので。
ただ、その分飛ばしすぎ、と感じる所は無い。
読んでて詰まる所もほとんど無い。
だからスラスラ読めて楽で良いですね。
Zygoteの解説はこれだけあれば十分過ぎるくらいで全部分かるでしょう。
4
:
karino2
:2015/07/20(月) 19:06:39
p185 接続情報
何度かこの単語は出てきていて、たとえば上記ページで
「ロードしたクラスに対する接続情報を設定する作業を…」
とあるのだが、接続情報って何かね?
リンクを解決する事だと思うのだが、なんて説明だったのか気になる。
p194 runOnce
handleChildProcのコードの中は忘れたけれど、このコードだとchildプロセスでもpeersとかが残っちゃう気がするのだけどいいのかね?
socket自体は権限のチェックがちゃんと入るしメモリもゴミみたいな物だとは思うのだが、、、
forkする人とメッセージを受け取る人は同じで良いのか?
5
:
karino2
:2015/07/21(火) 21:35:11
6章のサービスを読んでいる。
現在6.3まで来たのだが、なんか単なるServiceの説明で全然Insideの話じゃない。
とりあえず知ってる所は読み飛ばしてい行くかなぁ。
6
:
karino2
:2015/07/21(火) 22:35:00
うぉ、結局サービスの実装には触れずに終わった!
システムサービス回りはちょっと良かったのと、BinderServiceはちょっといいんだが。
7
:
karino2
:2015/07/21(火) 23:28:08
7章のbinderは良く書けてるな。
なんか章ごとに出来に波があるなぁ。
8
:
karino2
:2015/07/22(水) 16:38:54
7.3.1まで読んだ。
検索した後はコンテキストマネージャーを介さず直接やりとり出来るようにするなら、まぁこうなるやね。
サービスから見ると非同期にリプライを返すので、返し先を受け取る為のバインダノードが必要なのが、最初見た時に「なんだこれ?」と感じる要素としてあるが、少し考えてみると当たり前である。
この辺は良く書けてる。
ドライバは簡単そうだな。
本を読み終わったらコードを読んで見るかな。
9
:
karino2
:2015/07/22(水) 23:31:08
現在7.3.3のバインダドライバ関数の分析、を読んでるが、異様に詳しいな。
他の章との違いはなんなのか。
単なるRPCで別段面白い事は無いが、普通にちゃんと出来ているので、コードリーディングの題材としては悪くない気がする。
ただAndroidというシステムを知るのに、もっと知らなきゃいけない領域もあるだろう、と思うのだが。
というかSurface Flingarの方が大切じゃね?
10
:
karino2
:2015/07/23(木) 11:26:01
図7-34でbinder_ref の図、参照の矢印は普通逆じゃないかなぁ。
分かりづらい。
11
:
karino2
:2015/07/23(木) 12:09:02
7.3読み終わり。
最後はドライバ側から見たサービス呼び出しの各段階での仕事だった。
クライアントから見たフローから想像される事とほとんど違いが無いので、読んでいていまいち冗長な気がする。
しかもサービス登録、サービス検索、サービス使用について書かれているのだが、ドライバ的には単なるIPCでほとんど全部同じな為、何回も同じ解説してるように見える。
コードリーディングとしてはたぶんそうなってるんだろう、と思う事を一つ一つ確認していくのは価値があると思うのだが、本として読む場合読む場所は少ない。
他の場所が概要しか書いてないのも加わって、なんでBinderの実装だけこんなに詳しいの?という疑問がどうしても湧いてしまう。
ただ、詳しく冗長に書かれてる分には読む側が適宜飛ばせば良いだけなので、それほど問題では無いかもしれない。
関係ないがこうやって細かい仕組みを知ると、遊びでRPCのシステム作ってみたくなるね。
12
:
karino2
:2015/07/23(木) 12:22:33
7.4読み終わり。7.4はコンテキストマネージャー。
何も難しい事は無い。
これで7章のBinderが読み終わった。
冗長ではあるけれど、分からない事はほとんど無くなると思う。
Binderは割と隅から隅まで分った気になった。
BinderとZygoteの詳細な解説を期待して本書を購入した自分としては、Binderについては十分期待に答えた(ちょっとおなかいっぱい感はあるが(^_^;))
Binderとサービスサーバとコンテキストマネージャーの関係はある意味Androidの核なので、この辺をしっかり理解出来るのは価値あると思う。
13
:
karino2
:2015/07/26(日) 16:57:51
8.4.2まで読み終わり。
この辺はサービスマネージャの話だが、ようするにContextManagerのJavaラッパの話なので、同じ話を繰り返してる感がある。
繰り返されるので理解は深まるが。
14
:
karino2
:2015/07/28(火) 15:20:50
8.4読み終わり。
後半はサービスの検索回りのJavaから見た話だが、登録とほとんど内容が同じで、しかもそれがネイティブでの話とほとんど同じなので、だんたん何の話をしているのか分からなくなってくる。
一度この辺はノート作って整理し直さないとダメかもなぁ。
15
:
karino2
:2015/07/28(火) 15:31:24
8.5のネイティブサービスのHello World実装。
これは良いね!
ただBnHelloWorldServiceとかBpHelloWorldとか自分で実装しないといけない理由がいまいち分からん。
テンプレート引数でstaticな関数でシリアライズとかする奴渡せばその場でコード生成出来ると思うんだが、、、
16
:
karino2
:2015/07/29(水) 10:31:59
9章はNativeServiceの具体例としてカメラサービスの解説。
具体例を見るのは良いと思うのだが、Surface回りの解説とか全然無くて、既に何度も解説したbinder回りの解説がもう一回繰り返されるだけ。
うーん、具体例を見る事で実際が分かりやすいのは良いのだが、ちょっと内容薄くないか?という気がする。
これならむしろもうちょっと核となる部分をクローズアップして短くまとめた方がいいと思うのだが。
でも具体例を実際に読んで見るのはなかなか良いと思うし、その時参考にはなると思うので、章としての存在価値はあると思う。
17
:
karino2
:2015/07/29(水) 11:04:17
10章はJavaのサービスフレームワーク。
現在10.1を読んでいる。
AIDLからスタブを生成、という一昔前のRPC。
ただServiceManagerはJNIでネイティブのServiceManagerを呼ぶんじゃなくてContextManagerを直接呼ぶ、というのに驚いた。マジ?なんで?
18
:
karino2
:2015/07/30(木) 21:04:55
10.2の最後。parcelForJavaObjectはなんでこんな名前なのかね?
forじゃなくてFromなら分かるが。
10.2はJavaのサービスフレームワークからC++のサービスフレームワークがどう呼ばれてるかを追う。
ただ、本だとちょっと追うのが辛い。
C++とJavaで同じような関数名の関数がいっぱい出てきてごっちゃになりやすいから。
これは本が悪いというよりは、コード読む方が早いトピック、という気がする。
別段難しい事は何も無さそうだし。
19
:
karino2
:2015/07/31(金) 06:31:17
IInterfaceとProcessStateがいまいち分ってないので後で読み直す事>自分
20
:
karino2
:2015/07/31(金) 06:43:16
queryLocalInterfaceも後で見直す。
21
:
karino2
:2015/07/31(金) 07:02:49
10.5.2 AIDLからのコード生成の解説。
10-45でStubを継承したメソッドにRemoteExceptionが業務例外でつくのはどうなのかねぇ?
実装側としてはそんなの知らんがな、という感じに思うが。
そもそもUnixDomainのソケットの通信って失敗する事あるのか?
原理的にはvnodeへのアクセスが保証されれば失敗しなさそうだけど。ソケットの権限の失敗はあるかもしれないが。
22
:
karino2
:2015/07/31(金) 07:47:28
10章読み終わり。
10章はJavaのサービスフレームワーク。
この辺の解説は居るとおもうのだが、AIDLの生成したコードとその解説だけで足りるとおもうのだが、それを5回くらい様々な角度から解説する、、、
ただこのAIDLを自分で書いてサービス作ってみる、というのは勉強には良い気がする。
あとJavaでサービス作る場合の定石を見る事で、コード追うのは楽になる気がする。
23
:
karino2
:2015/07/31(金) 12:44:17
11章はActivityManager。
これはなかなか良いチョイス。
現在11.2.3まで読んだ。
Zygoteのforkの所は割と重要だと思うのだが、なんでここをスルーしてひたすらBinder回りの解説をするんだろう?
というかBinder好き過ぎだろ、おまえ、という気がする。
ただアプリケーションの方のService生成の所が一通り見れるのは良いね。
pending listに足してActivityThreadを起動、というのは「へー、そうなってるんだ」と納得度高かった。
24
:
karino2
:2015/08/02(日) 13:11:45
11章読み終わり。
ActivityThreadがどうサービスを作るかの話は良いと思うのだが、やはりRPCの話ばかりに集中しすぎに思う。
Serviceの持ってるContextWrapperの起源とかが分からないのは、やっぱり解説すべき所がズレてるんじゃないか。
25
:
karino2
:2015/08/02(日) 13:29:02
という訳で全て読み終わり。
init、zygote、Binderの解説は詳しくされていると思う。
サービスフレームワークの解説は本書の後半のほとんど全部を占めているのだが、冗長で、水増し感はある。ただし不足してる感じはあまりしなかったので、これも良く解説されていると思う。
JNIは不要に見えたので飛ばし読みだったから良く分からず。ただし読む必要は感じない。
例えばスマートポインタの解説はせずに使うくせに(最後までどういうスマートポインタか分からないまま)、JNIは一章を解説に割くのは、どうも力点の入れ方が良く分からない。
C++やLinuxシステムプログラミングに詳しい人にAndroidのコアを解説している、という感じなのだが、結局JavaでAndroidの開発経験がある程度無いと読んても分からないのだから、その前提は間違っている気がする。
著者達のバックグラウンドを考えても、Android自体を移植したりカスタマイズするメーカーの人向けの本に見えるが、それはAndroidのシステムを考えると、少し偏りすぎに思う。
また、後半はRPCの所ばかりを入念に読むのもおかしいと思う。一度仕組みを理解したら、後はどこのリモートメソッドが最終的に呼ばれるかを追うだけで十分と思うのだが、RPCにページを割く結果、肝心のリモートメソッドの中身の解説で息切れしてしまってる所がちらほらある。
また、コードを細かく追いすぎるので、RPCのうちどのコードがどのプロセスに属しているか、みたいな全体像がとても分かりにくい。これならファイルやフォルダで分かる分、ソースを直接読む方が分かりやすい、と思った。
と、書かれ方に不満は多いが、一方でトピックは良い。
この辺を解説した書籍はこれまでは無かった(最近出たらしいが)ので、とても貴重だ。
水増し感はあるにせよ、必要な要素は最低限抑えられていると思う。
自分でソースを読んでいくと、Binderが挟まった先は追いにくいので、zygoteのforkとBinderのあたりは書籍などで知っておく方が、ソースを追いやすくなると思う。
上の方にある程度理解のあるデベロッパが、下の方ってどうなってるんだろう?と思って読むには、ほとんど唯一の選択肢だったが、その役割は果たしていたと思う。
26
:
karino2
:2015/09/27(日) 09:16:29
asBinderとかって何やってたんだっけ?と思い、7章と8章を読み直し。
この辺は良く書けてるね。
細かく分かれすぎているのですぐ全体像を見失ってしまうが、何度か行ったり来たりしてると全部把握出来る。
27
:
karino2
:2015/09/27(日) 09:18:05
>>19-20
こんな事書いてあったね。ちゃんと見直しましたよ>過去の自分
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板