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

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

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

Кроме записи файлов в каталоги, приложение так же может записывать сообщения отладки в файл журнала приложения, расположенный по адресу /home/phablet/.cache/upstart/application-click-<fullappname>_<appname>_<version>.log. Чтобы добавить сообщения в файл журнала, используйте функции Qt debug <https://doc.qt.io/qt-5/qdebug.html> _.

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

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

Это место для хранения файлов конфигурации. Например, музыкальное приложение сохраняет свои настройки в файле````/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++#

В Qt-заголовке ``QStandardPaths` описываются каталоги приложения для записи данных:

#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++.