2017/04/27

TARGET_OUT_APPS 等の定数一覧 (AOSP)

自分用備忘録。

Android.mk を書いていると TARGET_OUT 等の定数をよく使いますが、それらは build/core/envsetup.mk に定義されています。

build/envsetup.mk ではないので注意1

  1. 名前が紛らわしい! 
?
2017/04/25

Ubuntu 16.04 に wxPython (Python3用) をインストール

2018/3/8 追記
wxPython 4.0.1 では微妙に依存関係が変わったようなので書き直しました。 公式に Wheel が用意されたので、簡単にインストール出来ます。

Linux に wxPython をインストールする方法 | 穀風

pip で依存関係の多いライブラリをインストールするのは結構面倒くさいです。 今回、 Python3 用の wxPython をインストールしようと思ったら結構はまったので自分用メモ。

今回は様々な依存関係を断つために、Docker 上にインストールしてみました1。 Docker 便利だなー。

2017/04/19

Linux で Logicool Unifying Receiver のペアリングをする方法

Android 端末にキーボードとマウスを繋いで検証する必要が出てきたので、新たに Logicool のキーボードを買いました。

マウスは以前買ったものがあり、Unifying Receiver を使えばUSBポートの節約にもなるというわけです。

Unifying Receiver は購入時にペアリング済みなので、USB端子に挿せばそのまま USB の有線キーボード・マウスのように使用可能です。ただ、今回のように別々に買った場合は、どちらかを再ペアリングする必要があります。

再ペアリングには Logicool の提供しているユーティリティを使用しますが、Windows と Mac 用しか提供されていません。 しかし、我が家のマシンはほとんど Linux。 つまり、買っても再ペアリングできないという問題が1

2017/04/04

/system/app と /system/priv-app の違い

今まで、「Android のプリインアプリは /system/priv-app にいれておく」と深く考えずに使っていました。 しかし、/system/ 以下をよく見てみると /system/app というディレクトリもあって、apk がインストールされています1

そこで、これらの違いは何なのか調べてみました。

priv-app 以下だけがシステム権限を持てる

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.xmlandroid:sharedUserId="android.uid.system" の記述があるアプリです3。 こういったアプリは system ユーザー権限で動作し、Linux OS レベルで様々なアクセス権を持つことができます。

2
3
4
    xmlns:tools="http://schemas.android.com/tools"
    android:sharedUserId="android.uid.system"
  1. Android 7.0 (Google APIs) のエミュレーターで確認 
  2. EasterEgg ってアプリもインストールされていますが、重要ではないな :-) 
  3. さらに、ROM と同じ署名がされている必要があります 
?