设备上缩略图的权限

设备上缩略图的权限

我正在为 U-Touch 开发一个应用程序,使用 libthumbnailer 系统库以 C++ 代码从视频中获取缩略图。该应用程序在我的计算机上完美地制作了缩略图,但当我尝试在设备上执行该部分时,我得到了

(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(或我需要的任何其他东西)才能获得以 root 身份执行此缩略图程序的权限吗?

提前致谢

答案1

您可以尝试使用不受限制模板。

在您的应用程序清单文件中,您应该有以下几行:

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

然后在myapp.jsonapparmor 配置文件中,使用以下代码片段:

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

看:应用限制

答案2

我终于找到了比使用不受约束的模板更好的解决方案。它比想象的要简单……只需要包含“视频”作为政策组的一部分:

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

如果您另外需要访问视频文件,您还可以添加“video_files_read”(仅读取视频文件)或“video_files”(完全访问)。

在 Ubuntu Sdk 中开发应用程序时,您可以检查所有可用的策略组,进入 QtCreator,转到“发布”选项卡并双击 app.apparmor 文件。您将看到一个 + 符号,单击后将显示所有策略。您可以在以下位置找到更多信息http://developer.ubuntu.com/publish/apps/packaging-click-apps/

相关内容