Skip to content

merge wiki into developer.android.com if necessary and delete #1087

@gmackall

Description

@gmackall

Hi, I'm hoping for some clarification on when AGP will install the NDK, i.e. asking if
https://github.com/android/ndk-samples/wiki/Configure-NDK-Path#ndk-with-agp-41
is also relevant to newer AGP versions.

Per https://github.com/android/ndk-samples/wiki/Configure-NDK-Path#ndk-with-agp-41,
AGP 4.1 (but maybe not newer?) will automatically install the NDK if it isn't installed already.

Per https://developer.android.com/studio/projects/install-ndk#install_ndk_and_cmake_automatically
AGP 4.2+ will automatically install the specified NDK version the first time the project is built, and only if the licenses are pre-accepted.

Per https://developer.android.com/studio/projects/configure-agp-ndk#agp_version_41,
Maybe this is only done by Android Studio? For AGP 4.2+.

The reason I ask is because I'm trying to decide on a path for Flutter to get debug symbols included in app bundles by default (one of our most liked issues flutter/flutter#60240). Ideally, I'd like avoid re-inventing the wheel and instead rely on AGP to do this, as AGP has the ability to strip prebuilt libraries and package the debug symbols appropriately within the app bundle.

But per @DanAlbert's comment on android/ndk#1844, this behavior only works if the ndk is installed, so I'd like to be sure that users will have the NDK installed (otherwise from my local testing, the debug symbols end up getting included in the actual app, which would be a very bad outcome).

Per my local testing, if I remove all locally installed ndk versions and then make a new (Flutter) project using AGP 8.1, the ndk doesn't seem to be get installed, and instead we see logs:

 C/C++: Folder /Users/mackall/Library/Android/sdk/ndk/26.1.10909125 does not exist. Ignoring.
[        ] C/C++: Folder /Users/mackall/Library/Android/sdk/ndk-bundle does not exist. Ignoring.
[        ] Unable to strip library '/Users/mackall/development/BugTesting/fifth/build/app/intermediates/merged_native_libs/release/mergeReleaseNativeLibs/out/lib/x86_64/libflutter.so' due to missing strip tool for ABI
'x86_64'. Packaging it as is.

Is this expected behavior, or is Flutter somehow missing some configuration that would be required to get the ndk installed automatically?

Also sorry if this is the wrong place to ask the question - it relates to the first sample page, but I'm aware the question is also slightly more broad than that so feel free to redirect me if this isn't the right place to ask.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions