Native層からSurfaceを扱うコードを書いたのだけど、ACCESS_SURFACE_FLINGERの権限が無いと警告が出てAPIが動いてくれない。
Androidはセキュリティ確保のためにシステムリソースへのアクセスに制限がかかっていて、特にACCESS_SURFACE_FLINGERの場合は署名付きアプリにしないといけないようだ。
で、署名付きアプリの作り方はググるといろいろ出てくるのだけど、正直なところ実際の開発中はいちいちこの手順を踏んでると面倒なことこの上ない。
…ということで、システム側のセキュリティレベルを下げて署名無しアプリ(デバッグ用署名)でも動作するように設定してみる。
frameworks/base/core/res/AndroidManifest.xmlにパーミッションごとのセキュリティレベルが書かれている。
ACCESS_SURFACE_FLINGERの場合は、
<!-- Allows an application to use SurfaceFlinger's low level features -->
<permission android:name="android.permission.ACCESS_SURFACE_FLINGER"
android:label="@string/permlab_accessSurfaceFlinger"
android:description="@string/permdesc_accessSurfaceFlinger"
android:protectionLevel="signature" />
とprotectionLevelが”signature”となっていて、署名が必要な事を示している。
これを、”normal”に変更すると署名が無くても、アプリ側のAndroidManifest.xmlにACCESS_SURFACE_FLINGERのパーミションを付けておくことで関連するAPIが動くようになる。(もしかすると、ソースツリー全体のmakeが必要かも)
パーミッションレベルは、リファレンスの<permission> | Android Developersを見てみると、
- normal
- dangerous
- signature
- signatureOrSystem
の4つがあるようだ。詳しい解説まで読んでないけど、dangerousってなんだろうな。
とりあえず開発中はこの設定で進めておいて、リリース用テスト環境などで別途セキュリティ面のテストするほうが開発効率は良さそうな気がする。
(参考)Accounted error when display video frame with surfaceflinger – android-framework | Google グループ
関連する記事:
- android 1.5のソースのビルドが失敗する場合の回避策 ちょうど公式のビルドガイドGet source (Android Open Source Project)を見ながら、VirtualBox上のUbuntu9.04でやってみたのだけど、ビルド途中でエラーになる...。 これは正式リリースされたばかりのv1.5で。 external/qemu/sockets.c: In function...
- カメラの映像をネットワークに流そうとしたが… MediaRecorderでの外部保存について – 日本Androidの会 | Google グループ これを参考に、Galaxy Sでカメラで撮った映像をネットワークにそのまま流そうとしているのだけど、うまくいかない。 MediaRecorder#setOutputFile()でローカルの物理ファイル名を指定したときはファイルに正しく書き込まれるのだけど、SocketをFileDescriptorにして指定すると、相手先に接続はするもののデータが流れずにMediaRecorder#start()が例外を吐く。 ログを見ると、どうもカメラからのデータをファイル(ソケット)に出力で失敗しているのはわかるのだけど特にネットのサンプルソースから変えていないからな…。...
- Android開発者はUbuntu9.10にアップデートしないほうがいいかも と言っても、SDKだけを使うアプリ開発者ではなく、フルソースをビルドして開発する人向けのネタ。 まず、フルソースのビルドに必要なJava1.5がアップデート時に削除されてしまう。 Java1.5(Java5)はSunのサポート期限切れになったのでUbunutuでもサポートしない、というのがその理由なんだけど、AndroidのソースをビルドするにはJava5しか使えない(ビルドスクリプトがバージョン......
- Android 2.2 Froyo Android 2.2 Platform | Android Developers Android 2.2 Platform Highlights...
- Androidのx86向けでビルドエラー ここのところAndroidづいてるな...。 今日はx86用のビルドに挑戦。 第1回 話題の携帯向けOS「Android」をx86パソコンで動かしてみよう:ITproを参考にしてみたのだけど、エラーが出てビルドが通らない。 Copy: out/target/product/eee_701/installer/root/system/bin/netcfg Copying installer base......
- Galaxy Sでカメラ画像をネットワークに流せない問題について調べる カメラの映像をネットワークに流そうとしたが… – きままな日記帳 昨日のこの件の続きをもう少し調べてみる。 問題の切り分けとしては、MediaRecorder#setOutputFile()にFileDescriptorで物理ファイルを指定した場合とSocketを指定した場合。 123Socket socket = new Socket(DEST_ADDR,...
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://www.swingingblue.net/mt/archives/002540.html/trackback
- トラックバックの送信元リスト
- 開発用にAndroidシステムのセキュリティレベルを下げる - きままな日記帳 より
