Каталоги для записи¶
Ограничение доступа к приложениям является частью концепции безопасности 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++.