web-dev-qa-db-ja.com

デバイス上のサムネイルの権限

Libthumbnailerシステムライブラリを使用して、C++コードでビデオからサムネイルを取得するU-Touch用のアプリケーションを開発しています。アプリは私のコンピューターで完全にサムネイルを作成しますが、デバイスでその部分を実行しようとすると、

(vs-thumb:5759): GLib-ERROR **: /build/buildd/glib2.0-2.41.5/./glib/gmem.c:353: overflow allocating 4294967274*8 bytes

'std :: runtime_error'のインスタンスをスローした後に呼び出された終了what():ビデオスクリーンショットを抽出しようとしたときに不明なエラーが発生しました。戻り値は133でした。

Adb Shellを使用して入力し、手動で実行しようとすると、次のようになります。

/usr/lib/arm-linux-/gnueabihf/thumbnailer/vs-thumb video.mp4 thumb.jpg

エラーが発生します:

Error creating thumbnail: Failed to preroll.

しかし、suと同じコンソール操作を実行すると機能します。だから私はアプリケーションのアクセス許可について何かがあると思います。このサムネイルをルートとして実行する権限を持つために、apparmor(または私が必要とする他のもの)をどのように構成する必要があるかを誰かが知っていますか?

前もって感謝します

2
Roberto Mier

unconfinedテンプレートを使用してアプリケーションを実行してみることができます。

アプリケーションマニフェストファイルには、次の行が含まれている必要があります。

"hooks": {
    "myapp": {
        "apparmor": "myapp.json",
        "desktop": "myapp.desktop"
    }
},

次に、myapp.json apparmorプロファイル、次のスニペットを使用します。

{
    "policy_groups": [],
    "policy_version": 1.2,
    "template": "unconfined"
}

参照: アプリケーションの制限

2
Sylvain Pineau

私はついに、制限のないテンプレートを使用するよりも良い解決策を見つけました。予想よりも簡単でした...含める必要があるだけです "ビデオ" ポリシーグループの一部として:

    "policy_groups": [
        ... 
        "networking",
        "video",
        ...
    ]

さらに、ビデオファイルにアクセスする必要がある場合は、「video_files_read」(ビデオファイルの読み取りのみ)または「video_files」(完全なアクセス)を追加することもできます。

Ubuntu SdkでアプリをQtCreatorに開発し、[公開]タブに移動して、app.apparmorファイルをダブルクリックすると、使用可能なすべてのポリシーグループを確認できます。クリックするとすべてのポリシーを表示する+記号が表示されます。詳細については、 http://developer.ubuntu.com/publish/apps/packaging-click-apps/ をご覧ください。

2
Roberto Mier