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

Ограничение доступа к приложениям является частью концепции безопасности Ubuntu Touch. Обмен данными между приложениями возможен только в соответствии с политиками AppArmor, в основном с использованием ContentHub. При этом приложения могут только читать и записывать файлы, расположенные в одном из трех каталогов, определенных для приложения, которые описаны в этом руководстве.

Стандартные каталоги

Besides the write access to the app directories explained below, the app can write debug messages into the app log file located at /home/phablet/.cache/upstart/application-click-<fullappname>_<appname>_<version>.log. To append messages to the log file, use the Qt debug functions.

Файлы конфигурации

Каталог: /home/phablet/.config/<fullappname>/

This is the place to store configurations files to. The music app for example stores its configuration to /home/phablet/.config/com.ubuntu.music/com.ubuntu.music.conf.

Кэш

Путь: /home/phablet/.cache/<fullappname>/

Это место для кэширования данных, которые будут использоваться в ближайшее время. Кэш также используется в Content Hub. Например, файлы, которые открыты в музыкальном плеере, можно найти в каталоге /home/phablet/.cache/com.ubuntu.music/HubIncoming/.

Примечание

Data in the cache directory should be treated as temporary and the app should still function normally if this directory is cleared - clearing cache is commonly done to recover some space on the device. Don’t store user account info here :)

Данные приложений

Каталог:/home/phablet/.local/share/<fullappname>/

Здесь приложение хранит любые данные. Например, музыкальное плеер хранит свои базы данных в каталоге /home/phablet/.local/share/com.ubuntu.music/Databases/.

Используются стандартные каталоги для C++

The Qt header QStandardPaths provides the app’s writable locations in C++:

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

Так как значение строк QStandardPaths определяется названием приложения Qt оно должно быть таким же, как и название приложения для clickable.

Предупреждение

Setting the organizationName will change the paths returned by these functions too - if you need to do this, set it to the clickable application name as well, otherwise the paths won’t work on the device.

Использование стандартных каталогов в QML

Модуль`Qt.labs.platform <https://doc.qt.io/archives/qt-5.10/qml-qt-labs-platform-standardpaths.html>`_ предоставляет записываемые локации приложения в 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)
}
...

Notice that QStandardPaths returns paths ('/phablet/home/...'), and QML StandardPaths returns urls ('file:///phablet/home/...'). This must be considered specially if the app is sharing location strings between QML and C++.