Esparver
Esparver

Reputation: 1555

chrono partially not supported in Android NDK

I'm trying to use chrono with the Android NDK. I had some success so far but some features are not supported. I added this line in my Android.mk:

LOCAL_CPPFLAGS  := -std=c++11

My Application.mk file:

APP_ABI := armeabi-v7a
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_PLATFORM := android-9

The first problem is that steady_clock is not defined. This line:

std::chrono::steady_clock::time_point time = std::chrono::steady_clock::now();

generates this compile error:

error: 'std::chrono::steady_clock' has not been declared

I found out I can use monotonic_clock instead and it works, but this type is supposed to have been replaced by steady_clock.

The second problem is that the property is_steady is not defined for any type:

LOGD("high_resolution_clock is steady: ", std::chrono::monotonic_clock::is_steady);

generates this compile error:

error: 'is_steady' is not a member of 'std::chrono::monotonic_clock'

Does someone know if there is full support for chrono in the NDK? I also would like to know if it's a good idea to use c++11 with the NDK. I'm not sure if it's stable or it's likely to change in the future.

Upvotes: 3

Views: 2306

Answers (1)

Esparver
Esparver

Reputation: 1555

Well I just found a solution. Looks like you need to tell the gcc version you are going to use (I guess it's the 4.7 by default). I just added this line in my Application.mk

NDK_TOOLCHAIN_VERSION := 4.8

Now I can use steady_clock and is_steady.

Upvotes: 3

Related Questions