A project in Android Studio for Platform (ASfP) contains everything that defines your workspace for your AOSP codebase, from source code and assets to test code and build configurations.

When you start a new project, ASfP creates the necessary structure for all your files and makes them visible in the**Project** window. To open the window, select**View \> Tool Windows \> Project**.

This page provides an overview of the key components inside your project configuration.

## Project configuration (`.asfp-project`)

The ASfP project configuration is controlled by the`.asfp-project`file, located in the root of your project directory. This YAML file is essential for controlling what goes into your project and how critical features operate. You can open it through the main menu using**ASfP \> Project \> Open Config**or by finding it in the project view.

Upon project creation, a config is constructed based on user-provided specs. All parameters in the config can be edited at any time to modify the project specs, for example to update project directories or modules, after which a sync is required for changes to be reflected.

### Configuration parameters

Here are the key parameters you can configure in the`.asfp-project`file:

#### `repo`

*Required*

An absolute path to your Android platform repository root.  

    repo: /path/to/aosp

#### `lunch`

*Required*

The lunch target that will be coupled with your project. This is used for all Soong build actions, including sync and relevant run configurations.  

    lunch: your-product-variant-userdebug

#### `directories`

*Optional*

Directories to either include in or exclude from your project. These should be relative paths with respect to the`repo`root.  

    directories:
      include:
        -   frameworks/base
        -   packages/apps/Settings
      exclude:
        -   vendor
        -   out/soong

#### `modules`

*Optional*

Modules to either include in or exclude from your project. These work in conjunction with the previously specified`directories`. Both full and abridged names are supported.  

    modules:
      include:
        -   SystemUIGoogle
        -   frameworks/base/services/core/java:services
      exclude:
        -   UnusedModule

#### `test_sources`

*Optional*

ASfP attempts to differentiate between production and test sources, but in some cases, you might need to explicitly denote test sources. Provide these as relative paths with respect to the`repo`root. Any source roots that are subdirectories of the specified path(s) will be marked as test.  

    test_sources:
      -   cts/tests/tests/example
      -   tests/mytests

#### `other_languages`

*Optional*

Java support is included by default. You can add support for other languages. ASfP also supports C/C++ (`cpp`) and Rust (`rust`).  

    other_languages:
      -   cpp
      -   rust

#### `build_config`

*Optional*

This parameter lets you add custom flags or environment variables to Soong build events. This configuration applies to all actions in the IDE that result in a Soong build, including sync and run configurations.  

    build_config:
      flags:
        -   -j64
      env:
        SOONG_ALLOW_MISSING_DEPENDENCIES: true
        MY_CUSTOM_VAR: value