アナログ金木犀

つれづれなるまままにつれづれする

Android Framework Code Readingやるっぽいので、何やろうか考えて見た

今度、この勉強会?もくもく会?に参加します。(管理者枠というか会場提供枠で参加者一覧にはいません)

mandroidfcr.doorkeeper.jp

このままだと、いざ始まった時に「さぁ、、、何しようかな、、、」と無駄に悩んで30分くらい潰すだろうと僕のサイドエフェクトが言っているので、目的くらいは作っておこうかなと思います。

コードリーディングは面白い

詳細は言えないけど、開発じゃない仕事でAndroidフレームワークをアホみたいに読んでいた時期がありました。

「パスワードとかパターンロックの情報をどこに保存して、どう解除しているのか」とか、「Androidが立ち上がりきるまでどんなことやってるか」とかいろいろ調べてました。

どういう風に動いているのか理解することは結構面白いんですよね。

さらには、どういうことをすれば壊れるのかがわかることが結構面白い。バグを見つけて報告すればAndroidコミュニティの貢献にもなりますしね。

アプリを作ってる時は表面的なところしか見られていないのですが、それでも面白い発見はあります。

最近でいうとたしかLolipopになってgetRunningTasksが使えなくなって、代替手段を探してたときです。

(getRunningTasksとかが使えなくなった理由は、センシティブな情報だからという理由だったと思います。)

最終的にUsageStatsManagerを使い、ユーザーの許可をもらえば同等の情報を得ることはできるということがわかりました。

ただその過程で、ある場所にリフレクション行えば、ユーザーの許可もいらないどころか、AndroidManifestにもpermisionを書かずに同等の情報を取得できることがわかっちゃいました

いや、これだめじゃんって思って、Googleのどこかのにメール送ったんですが、大丈夫って言われたからきっと大丈夫なんだと思います。

せっかくAndroid Mもできてたので

目的として「バグを見つける!」って掲げるのも面白いんですが、今回はせっかくAndroid Mが出てきたので、僕の気になってる「パーミッションの個別設定」周りの仕組みを呼んでみようかなと思います!

そもそも、まだ試してないんですけどね。

個人的な興味として、特にどこに情報を保存しているのかっていうことが気になるので「その個別の設定情報がどこらへんに保存されるのか」がわかれば最低限良いなぁと。

アプリのデータ削除でもどるのかーとか、まぁアンインストールすればさすがにリセットされるんだよね?とかを探りたいなぁ。

ということで、目的は「パーミッション周り調べて、個別の権限情報をどこに保存しているのか調べる」に決定です。