Dodaj zasoby aplikacji

Zasoby aplikacji, takie jak mapy bitowe i układy, są uporządkowane w katalogach res/ poszczególnych modułów. Możesz też dodać alternatywne wersje każdego pliku zoptymalizowane pod kątem różnych konfiguracji urządzeń, np. wersję mapy bitowej w wysokiej rozdzielczości na potrzeby ekranów o dużej gęstości.

Android Studio pomaga dodawać nowe zasoby i zasoby alternatywne na kilka sposobów w zależności od typu zasobu, który chcesz dodać. Na tej stronie dowiesz się, jak dodawać podstawowe pliki zasobów, zmienić ich lokalizację i sposób scalania zasobów.

Szczegółowe informacje o tworzeniu określonych typów zasobów znajdziesz na tych stronach:

Informacje o odwoływaniu się do zasobów w kodzie aplikacji znajdziesz w sekcji Omówienie zasobów aplikacji.

Dodaj plik zasobów XML

Poprzednie linki do stron opisują przepływy pracy, które są dostosowane do poszczególnych typów zasobów. Możesz jednak dodać dowolny plik zasobów XML, wykonując te czynności:

  1. Kliknij docelowy moduł aplikacji w oknie Projekt w widoku Android lub Projekt.

  2. Wybierz Plik > Nowy > Plik zasobów Androida.

    Rysunek 1. Okno Nowy plik zasobu.

  3. Podaj informacje w oknie:
    • Nazwa pliku: wpisz nazwę pliku XML (sufiks .xml nie jest wymagany).
    • Typ zasobu: wybierz typ zasobu, który chcesz utworzyć.
    • Element główny: w razie potrzeby wybierz główny element XML dla pliku. Niektóre typy zasobów obsługują tylko jeden typ elementu głównego. W zależności od wybranego typu zasobu nie można go edytować.
    • Zbiór źródeł: wybierz zbiór źródłowy, w którym chcesz zapisać plik.
    • Nazwa katalogu: nazwa katalogu musi odnosić się do typu zasobu i kwalifikatorów konfiguracji. Nie zmieniaj go, chyba że chcesz ręcznie dodać kwalifikatory konfiguracji do nazwy katalogu (zamiast tego użyj dostępnych kwalifikatorów).
    • Dostępne kwalifikatory: zamiast ręcznie dodawać kwalifikatory konfiguracji w nazwie katalogu, możesz je dodać, wybierając kwalifikator z listy i klikając Dodaj .
  4. Po dodaniu wszystkich kwalifikatorów kliknij OK.

Wskazówka: aby otworzyć uproszczoną wersję okna Nowy plik zasobów specyficzną dla typu zasobu, który chcesz dodać, kliknij prawym przyciskiem myszy istniejący katalog zasobów w folderze res i wybierz Nowy > Plik zasobu type-name.

Wbudowane zasoby złożone XML

Niektóre złożone zasoby wymagają wielu plików XML. Na przykład element rysowalny w formacie animowanym zawiera obiekt rysowalny w formacie wektorowym i obiekt animacji, a także wymaga co najmniej 3 plików XML.

W tym przykładzie możesz utworzyć i zachować 3 osobne pliki XML, jeśli chcesz użyć ponownie co najmniej jednego z nich. Jeśli jednak pliki XML są używane tylko na potrzeby tego animowanego elementu rysowalnego w formacie wektorowym, możesz użyć formatu zasobów wbudowanych w narzędziu Android Asset Packaging Tool (AAPT). AAPT pozwala zdefiniować wszystkie 3 zasoby w jednym pliku XML. Więcej informacji znajdziesz w artykule o wbudowaniu złożonych zasobów XML.

Dodaj katalog zasobów

Aby dodać nowy katalog zasobów, wykonaj te czynności:

  1. W oknie Projekt kliknij docelowy moduł aplikacji.

  2. Wybierz File > New > Android resource directory (Plik > Nowy > Katalog zasobów Androida).

    Rysunek 2. Okno Nowy katalog zasobów.

  3. Podaj informacje w oknie:
    • Nazwa katalogu: nazwa katalogu musi odpowiadać typowi zasobu i kombinacji kwalifikatorów konfiguracji. Nie edytuj go, chyba że chcesz ręcznie dodać kwalifikatory konfiguracji do nazwy katalogu (zamiast tego użyj dostępnych kwalifikatorów).
    • Typ zasobu:wybierz typ zasobu, który ma zawierać katalog.
    • Zbiór źródłowy: wybierz zbiór źródłowy, w którym chcesz umieścić katalog.
    • Dostępne kwalifikatory: zamiast ręcznie dodawać kwalifikatory konfiguracji w nazwie katalogu, możesz je dodać, wybierając kwalifikator z listy i klikając Dodaj .
  4. Po dodaniu wszystkich kwalifikatorów kliknij OK.

Zmień katalog zasobów

Domyślnie zasoby znajdują się w regionie module-name/src/source-set-name/res/. Na przykład zasoby głównego zbioru źródłowego Twojego modułu znajdują się w lokalizacji src/main/res/, a zasoby zestawu źródłowego do debugowania – src/debug/res/.

Możesz jednak zmienić te ścieżki na dowolne inne lokalizacje (w stosunku do pliku build.gradle) za pomocą właściwości res.srcDirs w bloku sourceSets. Na przykład:

Odlotowy

android {
    sourceSets {
        main {
            res.srcDirs = ['resources/main']
        }
        debug {
            res.srcDirs = ['resources/debug']
        }
    }
}

Kotlin

android {
    sourceSets {
        getByName("main") {
            res.srcDirs("resources/main")
        }
        getByName("debug") {
            res.srcDirs("resources/debug")
        }
    }
}

Możesz też określić wiele katalogów zasobów dla jednego zbioru źródłowego, a następnie scalać je narzędzia do kompilacji. Na przykład:

Odlotowy


android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

Kotlin

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

Więcej informacji znajdziesz w artykule o zbiorach źródłowych.

Scalanie zasobów

Zasoby w końcowym pliku aplikacji mogą pochodzić z 3 źródeł:

Gdy wszystkie zasoby z każdego zbioru lub biblioteki są unikalne, są dodawane do ostatecznej aplikacji. Zasób jest uważany za unikalny, jeśli jego nazwa pliku jest unikalna zarówno w katalogu typu zasobu, jak i w kwalifikatorze zasobów (jeśli została zdefiniowana).

Jeśli istnieją co najmniej 2 pasujące wersje tego samego zasobu, w końcowej aplikacji pojawia się tylko jedna z nich. Narzędzia do kompilacji wybierają wersję do zachowania w tej kolejności (najwyższy priorytet po lewej):

Wariant kompilacji > Typ kompilacji > Typ usługi > główny zestaw źródłowy > Zależności biblioteki

Jeśli na przykład główny zestaw źródłowy zawiera:

  • res/layout/example.xml
  • res/layout-land/example.xml

Typ kompilacji do debugowania zawiera:

  • res/layout/example.xml

Ostateczna aplikacja zawiera res/layout/example.xml z typu kompilacji do debugowania i res/layout-land/example.xml z głównego zbioru źródłowego.

Jeśli jednak Twoja konfiguracja kompilacji określa wiele folderów zasobów dla danego zbioru źródłowego i wystąpią konflikty między tymi źródłami, wystąpi błąd i scalenie się nie uda, ponieważ każdy katalog zasobów ma ten sam priorytet.