# AndroidProjectFilesModifierContext

> Represents a container that specifies additional dependencies and additional outputs for AndroidProjectFilesModifier.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor.Android](/engine/6000.5/script-reference/unityeditor/android.md)
* **Assembly:** UnityEditor.Android.Extensions

```csharp
public class AndroidProjectFilesModifierContext
```

## Examples

```csharp
using System.IO;
using Unity.Android.Gradle;
using UnityEditor;
using UnityEditor.Android;
using UnityEngine;

public class ModifyProjectScript : AndroidProjectFilesModifier
{
    private string _myLibBuildGradle = Path.Combine("unityLibrary", "customPlugin", "build.gradle");
    public override AndroidProjectFilesModifierContext Setup()
    {
        var projectFilesContext = new AndroidProjectFilesModifierContext();
        // Tell the build system to expect a file to be produced in <gradleProject>/unityLibrary/customPlugin/build.gradle
        projectFilesContext.Outputs.AddBuildGradleFile(_myLibBuildGradle);

        // Tell the build system that it should run OnModifyAndroidProjectFiles if MyConfig.json has changes since the last build
        projectFilesContext.Dependencies.DependencyFiles = new[]
        {
            "Assets/MyConfig.json"
        };

        // Tell the build system to copy the directory to the Gradle project
        projectFilesContext.AddDirectoryToCopy("Assets/DirectoryToCopy", "destinationName");

        // Pass some data/properties from the Editor to the OnModifyAndroidProjectFiles callback
        projectFilesContext.SetData("companyName", PlayerSettings.companyName);
        // Data can be any serializable object
        projectFilesContext.SetData<Vector2>("cursorHotspot", PlayerSettings.cursorHotspot);

        return projectFilesContext;
    }

    public override void OnModifyAndroidProjectFiles(AndroidProjectFiles projectFiles)
    {
        // Produce an object that will be serialized to <gradleProject>/unityLibrary/customPlugin/build.gradle
        var buildGradleFile = new ModuleBuildGradleFile();
        buildGradleFile.Android.AndroidResources.NoCompress.Set(new []{"someValue"});
        // Set the object that will be serialized to <gradleProject>/unityLibrary/customPlugin/build.gradle
        projectFiles.SetBuildGradleFile(_myLibBuildGradle, buildGradleFile);

        // Do some changes based on MyConfig.json here
        // ...

        // Get the data/properties that were declare in Setup
        var companyName = projectFiles.GetData("companyName");
        var cursorHotspot = projectFiles.GetData<Vector2>("cursorHotspot");
        // Do something based on the data
        // ...
    }
}
```

## Constructors

| Constructor                                                                                                                            | Description            |
| -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| [AndroidProjectFilesModifierContext()](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/ctor.md) | Container constructor. |

## Properties

| Property                                                                                                               | Description                                                                                                                                                                                                                                                            |
| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Dependencies](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/dependencies.md) | Represents a container that you can use to specify additional dependencies for the [AndroidProjectFilesModifier](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifier.md) process depends.                                                  |
| [Outputs](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/outputs.md)           | Represents a container that you can use to specify additional files that will be created in [AndroidProjectFilesModifier.OnModifyAndroidProjectFiles](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifier/onmodifyandroidprojectfiles.md). |

## Methods

| Method                                                                                                                                         | Description                                             |
| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| [AddDirectoryAsGuidToCopy](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/adddirectoryasguidtocopy.md) | Declare a directory to copy into the Gradle project.    |
| [AddDirectoryToCopy](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/adddirectorytocopy.md)             | Declare a directory to copy into the Gradle project.    |
| [AddFileAsGuidToCopy](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/addfileasguidtocopy.md)           | Declare an asset to copy into the Gradle project.       |
| [AddFileToCopy](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/addfiletocopy.md)                       | Declare a file to copy into the Gradle project.         |
| [SetData](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/setdata.md)                                   | Sets data for the OnModifyAndroidProjectFiles callback. |

## Classes

| Class                                                                                                                                                                         | Description                                                                                                                                                                                                                                                            |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AndroidProjectFilesModifierContext.AdditionalDependencies](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/additionaldependencies.md) | Represents a container that you can use to specify additional dependencies for the [AndroidProjectFilesModifier](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifier.md) process depends.                                                  |
| [AndroidProjectFilesModifierContext.AdditionalOutputs](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifiercontext/additionaloutputs.md)           | Represents a container that you can use to specify additional files that will be created in [AndroidProjectFilesModifier.OnModifyAndroidProjectFiles](/engine/6000.5/script-reference/unityeditor/android/androidprojectfilesmodifier/onmodifyandroidprojectfiles.md). |
