Resources are static content, such as images, fonts, and strings, which you can use in your application.
Introduction
Amper supports Compose Multiplatform resources.
The file layout in Amper is:
|-my-kmp-module/| |-module.yaml| |-src/ # your code is here| | |-...| |-composeResources/ # place your multiplatform resources in this folder| | |-values/| | | |-strings.xml| | |-drawable/| | | |-image.jpg| |-...Amper automatically generates the accessors for resources during the build and when working with code in the IDE. Accessors are generated in a package that corresponds to the module name. All non-letter symbols are replaced with _.
In the given example where the module name is my-kmp-module, the package name for the generated resources will be my_kmp_module.
Here is how to use the resources in the code:
import my_kmp_module.generated.resources.Resimport my_kmp_module.generated.resources.hello// other imports
@Composableprivate fun displayHelloText() { BasicText(stringResource(Res.string.hello))}Read more about setting up and using compose resources in the documentation.
Directory structure
Create a new directory composeResources in the source set directory you want to add the resources to.
src/composeResources
Organize the composeResources directory structure according to these rules:
- Images should be in the
drawabledirectory. - Fonts should be in the
fontdirectory. - Strings should be in the
valuesdirectory. - Other files should be in the
filesdirectory, with any folder hierarchy you may find appropriate.
When you’ve set up the resources for your project, build the project to generate the special Res class which provides access to resources. To regenerate the Res class and all the resource accessors, build the project again or re-import the project in the IDE.
After that, you can use the generated class to access the configured multiplatform resources from your code or from external libraries.
To use the prepared resources, import the generated class, for example:
import project.composeapp.generated.resources.Resimport project.composeapp.generated.resources.example_imageHere:
projectis the name of your projectcomposeappis the module where you placed the resource directoriesResis the default name for the generated classexample_imageis the name of an image file in thecomposeResources/drawabledirectory (example_image.png, for example).