TARGET_OUT_APPS 等の定数一覧 (AOSP)
自分用備忘録。
Android.mk を書いていると TARGET_OUT
等の定数をよく使いますが、それらは
build/core/envsetup.mk
に定義されています。
build/envsetup.mk
ではないので注意1。
プログラム全般、無節操に手を出しまくってみる
Android 端末にキーボードとマウスを繋いで検証する必要が出てきたので、新たに Logicool のキーボードを買いました。
マウスは以前買ったものがあり、Unifying Receiver を使えばUSBポートの節約にもなるというわけです。
Unifying Receiver は購入時にペアリング済みなので、USB端子に挿せばそのまま USB の有線キーボード・マウスのように使用可能です。ただ、今回のように別々に買った場合は、どちらかを再ペアリングする必要があります。
再ペアリングには Logicool の提供しているユーティリティを使用しますが、Windows と Mac 用しか提供されていません。 しかし、我が家のマシンはほとんど Linux。 つまり、買っても再ペアリングできないという問題が1。
今まで、「Android のプリインアプリは /system/priv-app
にいれておく」と深く考えずに使っていました。
しかし、/system/
以下をよく見てみると /system/app
というディレクトリもあって、apk がインストールされています1。
そこで、これらの違いは何なのか調べてみました。
What's the difference of /system/app/ and /system/priv-app in Kitkat? - Google グループ
Only apks in /system/priv-app can use "system"-level permissions. Prior to Kitkat, all apks on the system partition could use those permissions.
「(Kitkat 以降は)/system/priv-app
以下にある apk だけがシステムレベルのパーミッションを使用できる。 Kitkat より前は /system
以下にある全ての apk がシステムレベルのパーミッションを使用できる。」ということのようです。
ただ、以下を読むと、この動作に関しての公式なドキュメントが無いとのこと。 明らかに動作から推測できるので深追いはしていませんが、本来は AOSP のコードを読むなりして裏を取るべきですね。
Android system apps and stopped state - Stack Overflow
/system/priv-app
にインストールされているアプリを見ると「電話帳」「カレンダー」等、プライバシーに関わるコンテントプロバイダやサービスが主です。
対して、/system/app
以下は UI を提供したり「重要だけど特別な権限はいらなそう」なアプリがインストールされています2。
つまり、以下のように使い分けているようです。
/system/priv-app
本当にシステム権限を必要とする特権アプリ
/system/app
システム権限は必要としないけど、アンインストールはされたくないアプリ
システム権限を持つアプリというのは、具体的に言うと AndroidManifest.xml
に android:sharedUserId="android.uid.system"
の記述があるアプリです3。
こういったアプリは system
ユーザー権限で動作し、Linux OS レベルで様々なアクセス権を持つことができます。
2 3 4 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:sharedUserId="android.uid.system" |
アプリケーション開発から組み込みまで手を出しているフリーランスのエンジニア
何故か C,C++ の仕事をすることが多いけど、本当は Java や C# が好き
最近は Android がらみ多し