# ExternalNativeBuild

# ExternalNativeBuild

<br />

```
public interface ExternalNativeBuild
```

<br />

*** ** * ** ***

DSL object to configure external native builds using[CMake](https://cmake.org/)or[ndk-build](https://developer.android.com/ndk/guides/build.html)  

```text
android {
    externalNativeBuild {
        // Encapsulates your CMake build configurations.
        // For ndk-build, instead use the ndkBuild block.
        cmake {
            // Specifies a path to your CMake build script that's
            // relative to the build.gradle file.
            path "CMakeLists.txt"
        }
    }
}
```

To learn more about including external native builds to your Android Studio projects, read[Add C and C++ Code to Your Project](https://developer.android.com/studio/projects/add-native-code.html)

## Summary

|                                                                                                                                                                                                                                                                                                           ### Public methods                                                                                                                                                                                                                                                                                                            |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [cmake](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ExternalNativeBuild#cmake(kotlin.Function1))`(` ` @`[ExtensionFunctionType](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html)` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` Function1<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Cmake](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Cmake)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> action` `)` Per module settings, such as the path to`CMakeLists.txt`, for an external CMake project.             |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Cmake](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Cmake)                                                                                                                                                                                                                                                                                                                                                                                                       | [getCmake](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ExternalNativeBuild#getCmake())`()` Per module settings, such as the path to`CMakeLists.txt`, for an external CMake project.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Map](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Map.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)`, @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html)`>` | `@`[Incubating](https://docs.gradle.org/current/javadoc/org/gradle/api/Incubating.html) [getExperimentalProperties](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ExternalNativeBuild#getExperimentalProperties())`()` Additional per module experimental properties for C and C++.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `abstract @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[NdkBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/NdkBuild)                                                                                                                                                                                                                                                                                                                                                                                                 | [getNdkBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ExternalNativeBuild#getNdkBuild())`()` Per module settings, such as the path to`Android.mk`, for an external ndk-build project.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `abstract void`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | [ndkBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/ExternalNativeBuild#ndkBuild(kotlin.Function1))`(` ` @`[ExtensionFunctionType](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-extension-function-type/index.html)` @`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` Function1<@`[NonNull](https://developer.android.com/reference/tools/gradle-api/8.3/null/androidx/annotation/NonNull)` `[NdkBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/NdkBuild)`, `[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html)`> action` `)` Per module settings, such as the path to`Android.mk`, for an external ndk-build project. |

## Public methods

### cmake

```
abstract void cmake(
    @ExtensionFunctionType @NonNull Function1<@NonNull Cmake, Unit> action
)
```

Per module settings, such as the path to`CMakeLists.txt`, for an external CMake project.

For more information about the properties you can configure in this block, see[Cmake](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Cmake).  

### getCmake

```
abstract @NonNull Cmake getCmake()
```

Per module settings, such as the path to`CMakeLists.txt`, for an external CMake project.

For more information about the properties you can configure in this block, see[Cmake](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/Cmake).  

### getExperimentalProperties

```
@Incubating
abstract @NonNull Map<@NonNull String, @NonNull Object> getExperimentalProperties()
```

Additional per module experimental properties for C and C++.  

### getNdkBuild

```
abstract @NonNull NdkBuild getNdkBuild()
```

Per module settings, such as the path to`Android.mk`, for an external ndk-build project.

For more information about the properties you can configure in this block, see[NdkBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/NdkBuild).  

### ndkBuild

```
abstract void ndkBuild(
    @ExtensionFunctionType @NonNull Function1<@NonNull NdkBuild, Unit> action
)
```

Per module settings, such as the path to`Android.mk`, for an external ndk-build project.

For more information about the properties you can configure in this block, see[NdkBuild](https://developer.android.com/reference/tools/gradle-api/8.3/null/com/android/build/api/dsl/NdkBuild).