blob: 8e7e1b75ddb61b73a883f9e3acfcd1e6b19bd060 [file] [log] [blame] [view]
Changelog
=========
Report issues to [GitHub].
For Android Studio issues, follow the docs on the [Android Studio site].
[GitHub]: https://github.com/android-ndk/ndk/issues
[Android Studio site]: http://tools.android.com/filing-bugs
Announcements
-------------
* GCC is no longer supported. It will be removed in NDK r18.
* `libc++` is now the default STL for CMake and standalone toolchains. If you
manually selected a different STL, we strongly encourage you to move to
`libc++`. Note that ndk-build still defaults to no STL. For more details, see
[this blog post](https://android-developers.googleblog.com/2017/09/introducing-android-native-development.html).
* gnustl and stlport are deprecated and will be removed in NDK r18.
* Support for ARMv5 (armeabi), MIPS, and MIPS64 has been removed. Attempting to
build any of these ABIs will result in an error.
* Support for ICS (android-14 and android-15) will be removed from r18.
* The Play Store will require 64-bit support when uploading an APK beginning in
August 2019. Start porting now to avoid surprises when the time comes. For
more information, see [this blog post](https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html).
r17b
----
* [Issue 480]: Fixed libc++ header issues with `_FILE_OFFSET_BITS=64`.
* [Issue 692]: Fixed ASAN for standalone toolchains with static STLs.
* [Issue 697]: Pulled documentation updates for simpleperf.
* [Issue 702]: Updated sysroot to fix missing libc symbols.
* [Issue 704]: Updated shaderc/vulkan-validation-layers sources.
* [Issue 708]: Fixed introduced API tag for
`pthread_cond_timedwait_monotonic_nmp` to make it available on ICS.
[Issue 480]: https://github.com/android-ndk/ndk/issues/480
[Issue 692]: https://github.com/android-ndk/ndk/issues/692
[Issue 697]: https://github.com/android-ndk/ndk/issues/697
[Issue 702]: https://github.com/android-ndk/ndk/issues/702
[Issue 704]: https://github.com/android-ndk/ndk/issues/704
[Issue 708]: https://github.com/android-ndk/ndk/issues/708
Changes
-------
* Updated Clang to build 4691093, based on r316199.
* [Issue 313]: LTO now works on Windows.
* [Issue 527]: [Undefined Behavior Sanitizer] now works for NDK binaries.
* [Issue 593]: Clang now automatically passes `--eh-frame-hdr` to the
linker even for static executables, fixing exception handling.
* Updated gtest to upstream revision 0fe96607d85cf3a25ac40da369db62bbee2939a5.
* `libandroid_support` is no longer used when your NDK API level is greater
than or equal to 21 (Lollipop). Build system maintainers: be sure to update
your build systems to account for this.
* The platform static libraries (libc.a, libm.a, etc.) have been updated.
* All NDK platforms now contain a modern version of these static libraries.
Previously they were all Gingerbread (perhaps even older) or Lollipop.
* Prior NDKs could not use the static libraries with a modern NDK API level
because of symbol collisions between libc.a and libandroid_support. This
has been solved by removing libandroid_support for modern API levels. A
side effect of this is that you must now target at least android-21 to
use the static libraries, but these binaries will still work on older
devices.
* Fixed parsing of the NDK revision in CMake. NDK version information is now
available in the following CMake variables:
* `ANDROID_NDK_REVISION`: The full string in the source.properties file.
* `ANDROID_NDK_MAJOR`: The major revision of the NDK. For example: the 16
in r16b.
* `ANDROID_NDK_MINOR`: The minor revision of the NDK. For example: the b
(represented as 1) in r16b.
* `ANDROID_NDK_BUILD`: The build number of the NDK. This is 0 in the case
of a local development build.
* `ANDROID_NDK_BETA`: The beta version of the NDK. This is 0 for a stable
release.
* Added support for `APP_WRAP_SH` to ndk-build.
* This variable points to a shell script (relative to your Android.mk) that
will be installed as a [wrap.sh] file in your APK.
* Available in both an ABI-generic form (`APP_WRAP_SH`), which will install
a single script for every ABI, and an ABI-specific form
(`APP_WRAP_SH_arm64-v8a`, etc) to allow for per-ABI customization of the
wrap.sh script.
* [Issue 540]: ndk-build now installs sanitizer runtime libraries to your out
directory for inclusion in your APK. Coupled with [wrap.sh], this removes the
requirement of rooting your device to use sanitizers.
* When using ASAN, ndk-build will install a wrap.sh file to set up ASAN for
your app if you have not specified your own wrap.sh. If you have specified
your own wrap.sh, you can add ASAN support to it as described
[here](https://github.com/google/sanitizers/wiki/AddressSanitizerOnAndroidO).
* [Issue 614]: ndk-build and CMake no longer pass `-fno-integrated-as` for
arm32 by default. If your project contains hand written assembly, you may
need to pass this flag.
* ion.h is no longer a part of the NDK. This file defined an API that is not
consistent across devices.
[Undefined Behavior Sanitizer]: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
[wrap.sh]: https://developer.android.com/ndk/guides/wrap-script.html
[Issue 313]: https://github.com/android-ndk/ndk/issues/313
[Issue 527]: https://github.com/android-ndk/ndk/issues/527
[Issue 540]: https://github.com/android-ndk/ndk/issues/540
[Issue 593]: https://github.com/android-ndk/ndk/issues/593
[Issue 614]: https://github.com/android-ndk/ndk/issues/614
Known Issues
------------
* This is not intended to be a comprehensive list of all outstanding bugs.
* [Issue 360]: `thread_local` variables with non-trivial destructors will cause
segfaults if the containing library is `dlclose`ed on devices running M or
newer, or devices before M when using a static STL. The simple workaround is
to not call `dlclose`.
* [Issue 70838247]: Gold emits broken debug information for AArch64. AArch64
still uses BFD by default.
[Issue 360]: https://github.com/android-ndk/ndk/issues/360
[Issue 70838247]: https://issuetracker.google.com/70838247