Répertoires en écriture#

Le confinement des applications fait partie du concept de sécurité d’Ubuntu Touch. Les données peuvent être échangées entre les applications en fonction des politiques AppArmor, principalement en utilisant le centre de contenus. Cela dit, les applications peuvent uniquement lire et écrire sur des fichiers qui sont situés dans l’un des trois répertoires spécifiques expliqués dans ce guide.

Chemins standards#

Outre les accès en écriture dans le répertoire de l’application expliqués ci-dessous, l’application peut écrire des message de dépannage dans le fichier journal de l’application situé dans /home/phablet/.cache/upstart/application-click-<nomcomplet>_<nomdelapplication>_<version>.log. Pour ajouter des messages dans le fichier journal, utilisez les fonctions `dépannage de Qt<https://doc.qt.io/qt-5/qdebug.html>`_.

Configuration#

Chemin : /home/phablet/.config/<nomcompletdelapplication>/

Il s’agit de l’endroit où sont stockés les fichiers de configuration. L’application Musique stocke par exemple sa configuration dans /home/phablet/.config/com.ubuntu.music/com.ubuntu.music.conf.

Cache#

Chemin : /home/phablet/.cache/<nomcompletdelapplication>/

Il s’agit de l’endroit dans lequel mettre des données en cache pour une utilisation ultérieure. Le cache est également utilisé par le contre de contenus. Les fichiers qui ont été partagés avec l’application Musique peuvent par exemple être retrouvés dans /home/phablet/.cache/com.ubuntu.music/HubIncoming/.

Note

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 :)

Données de l’application#

Chemin : /home/phablet/.local/share/<nomcompletdelapplication>/

Il s’agit de l’endroit où votre application stocke toute ses données. L’application Musique stocke par exemple ses bases de données sous /home/phablet/.local/share/com.ubuntu.music/Databases/.

Utilisation des chemins standards en C++#

L’en-tête Qt QStandardPaths indique les emplacements en écriture de l’application :

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

Puisque la valeur des chaînes QStandardPaths est décidée par le nom de l’application Qt, celui-ci doit être le même que le nom de l’application cliquable.

Avertissement

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.

Utilisation des chemins standards en QML#

Le module Qt Qt.labs.platform fournit les emplacements accessibles en écriture pour l’application en 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++.