# ExternalNativeBuild

# ExternalNativeBuild

<br />

```
public interface ExternalNativeBuild
```

<br />

Known direct subclasses  
[ExternalNdkBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/ExternalNdkBuild)  

|--------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|
| [ExternalNdkBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/ExternalNdkBuild) | Interface for ndk-build per-variant info. |

*** ** * ** ***

Parameters to use when building native components.

Warning: Due to current limitations in how Android Gradle Plugin and native build interacts, it is not possible to wire a[org.gradle.api.Task](https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html)mapped[org.gradle.api.provider.Provider](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/Provider.html)to any of the collection[ListProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/ListProperty.html)or[SetProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/SetProperty.html)below. These properties must be resolved at configuration time and therefore cannot have results based on Task execution. This limitation might be lifted in the future.

## Summary

|                                                                                                                                                                                                           ### Public methods                                                                                                                                                                                                           |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[SetProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/SetProperty.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)`>`   | [getAbiFilters](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/ExternalNativeBuild#getAbiFilters())`()` Specifies the Application Binary Interfaces (ABI) that Gradle should build outputs for.  |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[ListProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/ListProperty.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)`>` | [getArguments](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/ExternalNativeBuild#getArguments())`()` Specifies arguments for CMake.                                                             |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[ListProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/ListProperty.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)`>` | [getCFlags](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/ExternalNativeBuild#getCFlags())`()` Specifies flags for the C compiler.                                                              |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[ListProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/ListProperty.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)`>` | [getCppFlags](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/ExternalNativeBuild#getCppFlags())`()` Specifies flags for the CPP compiler.                                                        |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[SetProperty](https://docs.gradle.org/current/javadoc/org/gradle/api/provider/SetProperty.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)`>`   | [getTargets](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/variant/ExternalNativeBuild#getTargets())`()` Specifies the library and executable targets from your CMake project that Gradle should build. |

## Public methods

### getAbiFilters

```
abstract @NonNull SetProperty<@NonNull String> getAbiFilters()
```

Specifies the Application Binary Interfaces (ABI) that Gradle should build outputs for. The ABIs that Gradle packages into your APK are determined by {@link com.android.build.gradle.internal.dsl.NdkOptions#abiFilter android.defaultConfig.ndk.abiFilter}  

### getArguments

```
abstract @NonNull ListProperty<@NonNull String> getArguments()
```

Specifies arguments for CMake.  

### getCFlags

```
abstract @NonNull ListProperty<@NonNull String> getCFlags()
```

Specifies flags for the C compiler.  

### getCppFlags

```
abstract @NonNull ListProperty<@NonNull String> getCppFlags()
```

Specifies flags for the CPP compiler.  

### getTargets

```
abstract @NonNull SetProperty<@NonNull String> getTargets()
```

Specifies the library and executable targets from your CMake project that Gradle should build.