2

In Xamarin (native oder Formulare), sehe ich, dass Android-Projekt immer Assets und Ressourcen/aufklappbare Ordner.Xamarin Assets vs Ressourcen Zeichenbar

Wenn ich verschiedene Bilder in meiner Anwendung in seinen ListViews, Symbolleisten usw. verwende, wo würde ich diese Bilder ablegen?

Und, warum sollte ich sie jemals in Assets Ordner legen?

Antwort

1

Dies ist eine Frage für Xamarin.Android

Mit nur Ressourcen ist, gibt es eine integrierte Unterstützung für Alternativen für verschiedene Sprachen, OS-Versionen, Bildschirmausrichtungen usw. bereitstellt, wie here beschrieben. Nichts davon ist mit Assets verfügbar. Außerdem unterstützen viele Teile der API die Verwendung von Ressourcenidentifikatoren. Schließlich werden die Namen der Ressourcen in konstante Feldnamen umgewandelt, die zum Zeitpunkt der Kompilierung überprüft werden, so dass es weniger Möglichkeiten für Unvereinbarkeiten zwischen dem Code und den Ressourcen selbst gibt. Nichts davon gilt für Vermögenswerte.

Warum also überhaupt einen Assets-Ordner? Wenn Sie das Asset, das Sie zur Laufzeit verwenden möchten, berechnen möchten, ist das ziemlich einfach. Mit Ressourcen müssten Sie eine Liste aller Ressourcen-IDs angeben, die möglicherweise verwendet werden, und einen Index in der Liste berechnen. (Dies ist ziemlich umständlich und bietet Möglichkeiten für Fehler, wenn sich der Ressourcensatz im Entwicklungszyklus ändert.) (Sie können eine Ressourcen-ID anhand des Namens unter Verwendung von getIdentifier abrufen, was jedoch die Vorteile der Kompilierzeitprüfung beeinträchtigt.) Assets können auch in eine Ordnerhierarchie organisiert werden, die nicht von Ressourcen unterstützt wird. Es ist eine andere Art der Datenverwaltung. Obwohl die meisten Fälle durch Ressourcen gedeckt werden, werden Vermögenswerte gelegentlich genutzt.

Ein weiterer Unterschied: In einem Bibliotheksprojekt definierte Ressourcen werden automatisch in Anwendungsprojekte importiert, die von der Bibliothek abhängen. Für Vermögenswerte passiert das nicht; Asset-Dateien müssen im Asset-Verzeichnis des Anwendungsprojekts vorhanden sein. Mit Androids neuem Gradle-based build system (in Android Studio) ist dies nicht mehr der Fall. Asset-Verzeichnisse für Bibliotheksprojekte werden in die .aar-Dateien gepackt. Daher werden in Bibliotheksprojekten definierte Assets in Anwendungsprojekte zusammengeführt (müssen also nicht im Verzeichnis /assets der Anwendung vorhanden sein, wenn sie sich in einer referenzierten Bibliothek befinden).

Verwandte Themen