Каталоги для запису

App confinement є частиною концепції безпеки Ubuntu Touch. Програми можуть обмінюватися даними тільки відповідно до політик AppArmor, в основному з використанням ContentHub. Так би мовити, програми можуть читати та записувати файли, які знаходяться в одному з трьох каталогів, описаних у цьому посібнику.

Стандартні шляхи

Крім доступу на запис до каталогів програми, описаних нижче, програма може також записувати повідомлення налагодження до журналу /home/phablet/.cache/upstart/application-click-<fullappname>_<appname>_<version>.log. Щоб додати повідомлення до журналу, використовуйте функцію Qt debug.

Конфігурація

Шлях: /home/phablet/.config/<повна.назва.програми>/

Це місце для збереження конфігураційних файлів. Наприклад, музична програма зберігає свої налаштування у файлі /home/phablet/.config/com.ubuntu.music/com.ubuntu.music.conf.

Кеш

Шлях: /home/phablet/.cache/<повна.назва.програми>/

Це місце для збереження файлів кешу та їх майбутнього використання. Кеш також використовується Content Hub. Файли, які доступні музичній програмі, можна знайти, наприклад, у /home/phablet/.cache/com.ubuntu.music/HubIncoming/.

Примітка

Дані у каталозі з кешем потрібно обробляти як тимчасові і програма повинна працювати у звичайному режимі навіть після їх видалення, оскільки очищення кешу — це звичайна дія для звільнення місця. Не зберігайте там користувацькі дані :)

Дані програм

Шлях: /home/phablet/.local/share/<повна.назва.програми>/

Це місце, де Ваша програма зберігає дані. Наприклад, музична програма, зберігає свої бази даних у /home/phablet/.local/share/com.ubuntu.music/Databases/.

Використання стандартних шляхів у C++

Заголовок Qt QStandardPaths відповідає за місця для запису у програмі на C++:

#include <QStandardPaths>
...
QString configPath = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);
QString cachePath = QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
QString appDataPath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
...

Оскільки значення рядків QStandardPaths визначаються назвою програми Qt, воно повинно збігатися з назвою програми у clickable.

Попередження

Налаштування organizationName змінить також і шлях, який ця функція повертатиме — якщо це Вам потрібно, налаштуйте також назву програми у clickable, інакше ці шляхи не працюватимуть на цьому пристрою.

Використання стандартних шляхів у QML

Модуль Qt Qt.labs.platform надає локації для запису у QML:

import Qt.labs.platform 1.0
...
Label
{
    text: StandardPaths.writableLocation(StandardPaths.AppConfigLocation)
}
Label
{
    text: StandardPaths.writableLocation(StandardPaths.CacheLocation)
}
Label
{
    text: StandardPaths.writableLocation(StandardPaths.AppDataLocation)
}
...

Зауважте, що QStandardPaths повертає шляхи ('/phablet/home/...') та QML StandardPaths повертає посилання ('file:///phablet/home/...'). На це потрібно особливо звертати увагу, якщо програма обмінюється рядками з розташуваннями між QML та C ++.