# Aidl

# Aidl

<br />

```
@Incubating
public interface Aidl
```

<br />

*** ** * ** ***

Provides structured access to various AIDL tools such as the aidl compiler executable and aidl framework.

An instance of[Aidl](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/Aidl)can be obtained via[AndroidComponentsExtension.sdkComponents](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/AndroidComponentsExtension#sdkComponents())

As an example , let's take a Task that runs aidl compiler:  

```scalate-server-page
abstract class MyTask: DefaultTask() {
  @get:Nested
  abstract val aidlInput: Property<com.android.build.api.variant.Aidl>

  @get:Inject
  abstract val execOperations: ExecOperations

  @TaskAction
  fun execute() {
    val aidlExecutable = aidlInput.get().executable.get().asFile
    val aidlFramework = aidlInput.get().framework.get().asFile

    // execute aidl binary with --help argument
    execOperations.exec { spec ->
      spec.commandLine(aidlExecutable)
      spec.args("--help")
    }
  }
}

tasks.register<MyTask>("myTaskName") {
  // get an instance of Aidl
  this.aidlInput.set(androidComponents.sdkComponents.aidl)
}
```

## Summary

|                                                                                                                                                                                                       ### Public methods                                                                                                                                                                                                       |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Provider](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Provider.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[RegularFile](https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFile.html)`>`  | `@`[Internal](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/Internal.html) [getExecutable](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/Aidl#getExecutable())`()` Path to the[AIDL](https://developer.android.com/guide/components/aidl)executable file from the Android SDK                                                                                                                                         |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Provider](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Provider.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[RegularFile](https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFile.html)`>`  | `@`[PathSensitive](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/PathSensitive.html)`(value = PathSensitivity.NAME_ONLY)` `@`[InputFile](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/InputFile.html) [getFramework](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/Aidl#getFramework())`()` Path to the[AIDL](https://developer.android.com/guide/components/aidl)framework file from the Android SDK |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Provider](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Provider.html)`<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[String](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html)`>` | `@`[Input](https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/Input.html) [getVersion](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/Aidl#getVersion())`()` Version of build tools.                                                                                                                                                                                                                                        |

## Public methods

### getExecutable

```
@Internal
abstract @NonNull Provider<@NonNull RegularFile> getExecutable()
```

Path to the[AIDL](https://developer.android.com/guide/components/aidl)executable file from the Android SDK  

### getFramework

```
@PathSensitive(value = PathSensitivity.NAME_ONLY)
@InputFile
abstract @NonNull Provider<@NonNull RegularFile> getFramework()
```

Path to the[AIDL](https://developer.android.com/guide/components/aidl)framework file from the Android SDK  

### getVersion

```
@Input
abstract @NonNull Provider<@NonNull String> getVersion()
```

Version of build tools. It is used as an input to allow correct build cache behaviour across different platforms