Каталоги для запису¶
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 ++.