Avec des ressources, il y a un support intégré pour offrir des solutions de rechange pour les différentes langues, les versions de système d'exploitation, les orientations d'écran, etc., comme décrit ici. Aucune de ce qui est disponible sur les actifs. Aussi, de nombreuses parties de l'API en charge l'utilisation d'identificateurs de ressources. Enfin, les noms des ressources sont transformés en champ constant noms qui sont vérifiées au moment de la compilation, il y a donc moins de possibilité de l'inadéquation entre le code et les ressources elles-mêmes. Rien de tout ce qui s'applique aux actifs.
Alors, pourquoi avez un dossier des actifs? Si vous voulez calculer l'actif que vous souhaitez utiliser lors de l'exécution, il est assez facile. Avec des ressources, vous devez déclarer une liste de tous les Id de ressource qui pourrait être utilisé, et de calculer un index dans la liste. (C'est un peu maladroit et présente des possibilités d'erreur si l'ensemble des ressources des changements dans le cycle de développement.) (EDIT: vous pouvez récupérer un ID de ressource par le nom à l'aide d' getIdentifier
, mais cela perd les avantages de la compilation le temps de vérifier.) Les actifs peuvent également être organisés dans une hiérarchie de dossiers, ce qui n'est pas pris en charge par les ressources. C'est une façon différente de gérer les données. Bien que les ressources couvrent la plupart des cas, les actifs ont leur usage occasionnel.
Une autre différence: les ressources définies dans un projet de bibliothèque sont automatiquement importés à des projets d'applications qui dépendent de la bibliothèque. Pour les actifs, qui n'a pas lieu; les fichiers de ressources doivent être présents dans le répertoire actif de la demande de projet(s).
Edit 2: Encore une autre différence se pose si vous voulez compresser une police personnalisée avec votre application. Il y a des appels d'API pour créer un Typeface
à partir d'un fichier de police de caractères stockée dans le système de fichiers ou dans votre application assets/
répertoire. Mais il n'y a pas d'API pour créer un Typeface
à partir d'un fichier de police de caractères stockés dans l' res/
répertoire (ou à partir d'un InputStream
, ce qui permettrait l'utilisation de l' res/
répertoire).