1<html><body><pre>Android NDK ChangeLog: 2 3------------------------------------------------------------------------------- 4android-ndk-r8b 5 6IMPORTANT BUG FIXES: 7 8- Fixed LOCAL_SHORT_COMMANDS issues on darwin-x86 and windows cygwin environment 9 and for static libraries. List file generation is sped up, and it is no longer 10 regenerated and causes whole project to be rebuilt every time. 11 12- Fixed several issues in ndk-gdb 13 14 * to pass flags "-e", "-d", "-s" to adb more consistently 15 16 * to accept device serial name containing space 17 18 * to also pull /system/bin/link, so gdb on host can set a breakpoint in 19 __dl_rtld_db_dlactivity and be aware of linker activity (eg. rescan solib symbols 20 when dlopen() is called) 21 22- Fixed "ndk-build clean" in windows which failed to remove ./libs/*/lib*.so 23 24- Fixed ndk-build.cmd to return non-zero ERRORLEVEL when make fails 25 26- Fixed libc.so to no longer incorrectly export __exidx_start and __exidx_end symbols 27 28- Fixed SEGV when unwinding stack pasts __libc_init for ARM and MIPS. 29 30 Fixed __start (in crtbegin_dynamic/static.o) to "call __libc_init" instead of 31 "jump __libc_init", otherwise stack unwinding past __libc_init may get wrong return 32 address and crash the program or do wield things. With "call", return address is pushed 33 on stack and unwinding stops correctly at _start. Note that __libc_init never returns, so 34 this fix wonʼt affect normal program execution. But just in case it "does" return, 35 jump to address 0 and halt. 36 37 38IMPORTANT CHANGES: 39 40- GCC 4.6 toolchain 41 42 Add GCC 4.6 toolchain (binutils 2.21 with gold + GDB 7.3.x) to co-exists with 43 the original GCC 4.4.3 toolchain (binutils 2.19 + GDB 6.6). Note: 44 45 * GCC 4.6 is the defualt. You may set NDK_TOOLCHAIN_VERSION=4.4.3 in Application.mk 46 to select the origianl one. 47 48 * Gold linker support is only avaialble for ARM and x86 architectures on linux-86 49 and darwin-x86 hosts. It's not turned on by default. Add 50 "LOCAL_LDLIBS += -fuse-ld=gold" in Android.mk to enable it. 51 52 * You will need the new GDB to debug program compiled with -fPIE (including 53 binaries in JellyBean image) 54 55 * The binutils 2.21 ld also contain back-port of fixes from 2.22 56 57 * Fixed "ld --gc-sections" which incorrectly retain zombie references to external 58 libraries. See http://sourceware.org/bugzilla/show_bug.cgi?id=13177 for detail. 59 60 * Fuxed ARM "strip" to preserve the original p_align and p_flags in GNU_RELRO section 61 if they are valid. Otherwise program built with -fPIE can't be debugged. 62 http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf.c.diff?cvsroot=src&r1=1.552&r2=1.553 63 64 * Sincos optimization is not enabled for compatibility with old platforms which don't have 65 it. 66 67- NX and relro/bind_now protections are enabled by default 68 69 Add "--noexecstack" for assembler and "-z noexecstack" for linker to enable NX 70 protection against buffer overflow attacks by enabling NX bit on stack and heap. 71 72 Add "-z relro -z now" for linker to harden internal data sections after linking 73 against security vulnerabilities due to memory corruption. See 74 75 http://www.akkadia.org/drepper/nonselsec.pdf (section 6) 76 http://tk-blog.blogspot.com/2009/02/relro-not-so-well-known-memory.html 77 78 For those who really needs it, these features can be disabled by 79 1. Passing "--execstack" to assembler and "-z execstack" to linker to 80 disable NX protection. 81 Passing "-z norelro -z lazy" to linker to disable second protection. 82 2. In NDK jni/Android.mk, set the following 83 LOCAL_DISABLE_NO_EXECUTE=true: to disable "--noexecstack" and "-z noexecstack" 84 LOCAL_DISABLE_RELRO=true: to disable "-z relro -z now" 85 see $NDK/docs/ANDROID-MK.html for details 86 87- Brand executables with .note.ABI-tag section 88 89 Brand Android executable with .note.ABI-tag (in crtbegin_static/dynamic.o) for debugging 90 tools to act accordingly. The structure member and values are defined as follow. 91 92 static const struct { 93 int32_t namesz; /* = 4, sizeof ("GNU") */ 94 int32_t descsz; /* = 6 * sizeof(int32_t) */ 95 int32_t type; /* = 1 */ 96 char name[sizeof "GNU"]; /* = "GNU" */ 97 int32_t os; /* = 0 */ 98 int32_t major; /* = 2 */ 99 int32_t minor; /* = 6 */ 100 int32_t teeny; /* = 15 */ 101 int32_t os_variant; /* = 1 */ 102 int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */ 103 } 104 105 106OTHER BUG FIXES: 107 108- Backport several patches to fix MIPS issues. 109 110 * http://sourceware.org/bugzilla/show_bug.cgi?id=12637 111 mips-linux-gnu: relocation truncated to fit: R_MIPS_TLS_LDM 112 113 * http://sourceware.org/bugzilla/show_bug.cgi?id=12845 114 ld segfaults when using --gc-sections 115 116 * http://sourceware.org/ml/binutils/2011-05/msg00198.html 117 Refix MIPS GOT_PAGE counting 118 119 * Follow warning symbol link in mips_elf_count_got_symbols. 120 121 * Follow warning symbol link in mips_elf_allocate_lazy_stub. 122 123 * Move MIPS .dynamic to the data segement, so that it is writable. 124 Replace hard-coded 4096 with symbols for correct segment sizes for MIPS. 125 126 * Remove -mno-shared as default in MIPS toolchain. -fPIC (or -fpic if supported) 127 is default for Android toolchain. Without explicitly specifying one of 128 -mshared, -fpic, -fPIC, -fpie, or -fPIE, MIPS compiler adds -mno-shared 129 which turns off PIC. Fixed it not to add -mno-shared as default. 130 131- Fixed wrong package names in samples hello-jni and two-libs so tests project 132 underneath can compile 133 134 135OTHER CHANGES: 136 137- New binaries locations 138 139 * gdbserver is moved from toolchain/<arch-os-ver>/prebuilt/gdbserver to 140 prebuilt/android-<arch>/gdbserver/gdbserver 141 142 * x86 toolchain prefix is renamed from i686-android-linux- to i686-linux-android- 143 144 * sources/cxx-stl/gnu-libstdc++/include and lib are moved to 145 sources/cxx-stl/gnu-libstdc++/4.4.3 when compiled with 4.4.3 GCC, or 146 sources/cxx-stl/gnu-libstdc++/4.6 when compiled with 4.6 GCC 147 148 * libbfd.a and libintl.a are moved from lib/ to lib32/ 149 150- Header if_dl.h is removed from all platforms and architectures. AF_LINK and sockaddr_dl 151 it describes are specpfic to BSD (ie. don't exist in Linux) 152 153- Various scripts to rebuild/test NDK toolchain 154 155 * Add build-mingw64-toolchain.sh to generate a new Linux-hosted toolchain that generates 156 Win32 and Win64 executables. 157 158 * Speed up download-toolchain-sources.sh by "clone" but only "checkout" the directories 159 that we need to build the NDK toolchain binaries. 160 161 * New build-host-gcc.sh and build-host-gdb.sh 162 163 * Add tests/check-release.sh to check the content of a given NDK installation directory, 164 or an existing NDK package. 165 166 * Rewrite standalone tests: tests/standalone/run.sh 167 168 169------------------------------------------------------------------------------- 170android-ndk-r8 171 172IMPORTANT BUG FIXES: 173 174- Fixed a typo in GAbi++ implementaiton where result of dynamic_cast<D>(b) 175 of base class object 'b' to derived class D is adjusted wrong 176 (in the opposite direction from base class). See 177 http://code.google.com/p/android/issues/detail?id=28721 178 179- Fixed an issue in make-standalone-toolchain.sh which fails to copy 180 libsupc++.*. 181 182 183IMPORTANT CHANGES: 184 185- Added support for the mips ABI. 186 187 This release of the Android NDK contains support for 'mips' ABI. 188 To generate machine runs on MIPS-based Android devices, please add 'mips' to 189 APP_ABI definition in your Application.mk, or 'all' to generate binaries for 190 all currently supported ABI. See docs/CPU-MIPS.html for details. 191 192- You can build a standalone mips toolchain using the 193 --toolchain=mipsel-linux-android-4.4.3 option when calling 194 make-standalone-toolchain.sh. See docs/STANDALONE-TOOLCHAIN.html for more details. 195 196 197OTHER BUG FIXES: 198 199- Fixed ndk-build.cmd to ensure that ndk-build.cmd works correctly even if 200 the user has redefined the SHELL environment variable (which can happen under 201 the hood when installing a variety of development tools on Windows) 202 203 204------------------------------------------------------------------------------- 205android-ndk-r7c 206 207This release of the NDK includes an important fix for Tegra2-based devices, 208and a few additional fixes and improvements: 209 210IMPORTANT BUG FIXES: 211 212- Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON devices. 213 The files provided with NDK r7b where not configured properly, resulting 214 in crashes on Tegra2-based devices and others when trying to use certain 215 floating-point functions (e.g., cosf, sinf, expf). 216 217 218IMPORTANT CHANGES: 219 220- Added support for custom output directories through the NDK_OUT 221 environment variable. When defined, this variable is used to store all 222 intermediate generated files, instead of $PROJECT_PATH/obj. 223 224 The variable is also recognized by ndk-gdb. 225 226- Added support for building modules with hundreds or even thousand of source 227 files by defining LOCAL_SHORT_COMMANDS to true in your Android.mk. 228 229 This change forces the NDK build system to put most linker or archiver 230 options into list files, to work-around command-line length limitations 231 (particularly on Windows). See docs/ANDROID-MK.html for details. 232 233 234OTHER BUG FIXES: 235 236- Fixed android_getCpuCount() implementation in the cpufeatures helper 237 library. The previous implementation only listed the cores that were 238 active the first time the function was called. This behavior could 239 provide results that were too low on devices that disable and enable 240 cores dynamically. 241 242------------------------------------------------------------------------------- 243android-ndk-r7b 244 245IMPORTANT BUG FIXES: 246 247- Updated <sys/atomics.h> to avoid correctness issues on some multi-core 248 ARM-based devices. Rebuild your unmodified sources with this version of the 249 NDK and this problem should completely be eliminated. For more details, read 250 docs/ANDROID-ATOMICS.html. 251 252- Reverted to binutils 2.19 to try to fix debugging issues that 253 appeared in NDK r7 (which switched to binutils 2.20.1). 254 255- Fixed ndk-build on 32-bit Linux. A packaging error put a 64-bit version 256 of the 'awk' executable under prebuilt/linux-x86/bin in NDK r7. 257 258- Fixed native Windows build (ndk-build.cmd). Other build modes were not 259 affected. The fixes include: 260 261 * Removed an infinite loop / stack overflow bug that happened when trying 262 to call ndk-build.cmd from a directory that was _not_ the top of your 263 project path (e.g. any sub-directory of it). 264 265 * Fixed a problem where the auto-generated dependency files were ignored. 266 This meant that updating a header didn't trigger recompilation of sources 267 that included it. 268 269 * Fixed a problem where special characters in files or paths, other than 270 spaces and quotes, were not correctly handled. 271 272- Fixed the standalone toolchain to generate proper binaries when using 273 -lstdc++ (i.e. linking against the GNU libstdc++ C++ runtime). You should 274 use -lgnustl_shared if you want to link against the shared library 275 version or -lstdc++ for the static version. 276 277 See docs/STANDALONE-TOOLCHAIN.html for more details about this fix. 278 279- Fixed gnustl_shared on Cygwin. The linker complained that it couldn't find 280 libsupc++.a while the file was at the right location. 281 282- Fixed cygwin C++ link when not using any specific C++ runtime through 283 APP_STL. 284 285OTHER CHANGES: 286 287- When your application uses the GNU libstdc++ runtime, the compiler will 288 no longer forcibly enable exceptions and RTTI. This change results in smaller 289 code. If you need these features, you need to do either one of these: 290 291 1/ Enable exceptions and/or RTTI explicitely in your modules or 292 Application.mk. (recommended) 293 294 2/ Define APP_GNUSTL_FORCE_CPP_FEATURES to 'exceptions', 'rtti' or both 295 in your Application.mk. See docs/APPLICATION-MK.html for more details. 296 297- ndk-gdb now works properly when your application has private services 298 running in independent processes. It debugs the main application process, 299 instead of the first process listed by 'ps', which is usually a service 300 process. 301 302- Fixed a rare bug where NDK r7 would fail to honor the LOCAL_ARM_MODE value 303 and always compile certain source files (but not all) to 32-bit instructions. 304 305- stlport: Refresh the sources to match the Android platform version. This 306 update fixes a few minor bugs: 307 308 - Fixed instantiation of an incomplete type. 309 - Fixed minor == versus = typo 310 - Use memmove instead of memcpy in string::assign 311 - Added better handling of IsNANorINF, IsINF, IsNegNAN, etc.. 312 313 For complete details, see the commit log. 314 315- stlport: Removed 5 un-necessary static initializers from the library. 316 317- The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for 318 armeabi instead. This had no impact on correctness, but using the right 319 ABI should provide for slightly better performance. 320 321- the 'cpu-features' helper library was updated to report three optional 322 x86 CPU features (SSSE3, MOVBE and POPCNT). See docs/CPU-FEATURES.html 323 for more details. 324 325- docs/NDK-BUILD.html was updated to mention NDK_APPLICATION_MK instead 326 of NDK_APP_APPLICATION_MK to select a custom Application.mk file. 327 328- cygwin: ndk-build no longer creates an empty "NUL" file in the current 329 directory when invoked. 330 331- cygwin: better automatic dependency detection. It previously didn't work 332 properly in the following case: 333 334 - When the cygwin drive prefix was not /cygdrive 335 - When using drive-less mounts, e.g. when Cygwin would translate /home 336 to \\server\subdir instead of C:\Some\Dir. 337 338- cygwin: ndk-build does not try to use the native Windows tools under 339 $NDK/prebuilt/windows/bin with certain versions of Cygwin and/or 340 GNU Make. 341 342------------------------------------------------------------------------------- 343android-ndk-r7 344 345IMPORTANT CHANGES: 346 347- New official NDK APIs for Android 4.0 (a.k.a. API level 14), 348 which adds the following native features to the platform: 349 350 - Native multimedia API based on the Khronos Group OpenMAX AL™ 351 1.0.1 Standard. New headers <OMXAL/OpenMAXAL.h> and 352 <OMXAL/OpenMAXAL_Android.h> are provided to allow 353 applications targeting this API level to perform multimedia output 354 directly from native code using a new Android-specific buffer 355 queue interface. For more details, see docs/openmaxal/index.html 356 and http://www.khronos.org/openmax/. 357 358 - Updated the native audio API based on the Khronos Group OpenSL ES 359 1.0.1™ Standard. API Level 14 can now decode compressed 360 audio (e.g. MP3, AAC, Vorbis) to PCM. For more details, see 361 docs/opensles/index.html and http://www.khronos.org/opensles/. 362 363- CCache support. To speed up large rebuilds, simply define the NDK_CCACHE 364 environment variable to 'ccache' (or the path to your ccache binary), as in: 365 366 export NDK_CCACHE=ccache 367 368 The NDK build system will automatically use it when compiling any source 369 file. For more information about CCache, see http://ccache.samba.org 370 371- You can now set your APP_ABI to 'all' to indicate that you want to build 372 your NDK modules for all the ABIs supported by your given NDK release. 373 374 This means that either one of these two lines in your Application.mk are 375 equivalent with this release: 376 377 APP_ABI := all 378 APP_ABI := armeabi armeabi-v7a x86 379 380 This also works if you define APP_ABI on the command-line, as in: 381 382 ndk-build APP_ABI=all 383 384 Which is a quick way to check that your project builds for all supported 385 ABIs without changing its Application.mk file. 386 387- Shorter paths to source and object files used in build commands. 388 When invoking $NDK/ndk-build from your project path, the paths to the 389 source, object and binary files passed to the build commands will be 390 significantly shorter now because they are now passed relative to the 391 current directory. 392 393 This is useful when building projects with a lot of source files, to 394 avoid limits on the maximum command line length supported by your host 395 operating system. 396 397 The behaviour is unchanged if you invoked ndk-build from a sub-directory 398 of your project tree, or if you define NDK_PROJECT_PATH to point to a 399 specific directory. 400 401- New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++ 402 features (RTTI or Exceptions) your module uses. This is especially handy 403 if you have prebuilt modules that depend on them since this will ensure 404 the final link will work correctly. 405 406 See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details 407 408- WARNING: VERY EXPERIMENTAL!! 409 410 You can now build your NDK sources on Windows *without* Cygwin. 411 Simply call the script 'ndk-build.cmd' from the Windows cmd.exe 412 command-line, when in your project path. 413 414 The script takes exactly the same arguments than the original 415 ndk-build one. 416 417 Note that the Windows NDK package comes with its own prebuilt 418 binaries for GNU Make, Awk and other tools required by the build, 419 i.e. you shouldn't need to install anything else to get a working 420 build system. 421 422 IMPORTANT: ndk-gdb doesn't work. You still need Cygwin to debug 423 at the moment! 424 425 This feature is still very experimental, but feel free to try it 426 and report issues on the public forum (android-ndk@googlegroups.com) 427 or the public bug databse (http://b.android.com). 428 429 Note that all samples and unit tests succesfully compile with it. 430 431IMPORTANT BUG FIXES: 432 433- Imported shared libraries are now installed by default to the target 434 installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not 435 defined in your Application.mk. 436 437 This means that if a top-level module "foo" imports a module "bar", then 438 both libfoo.so and libbar.so will be copied to the install location. 439 440 Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES 441 too. 442 443 If you define APP_MODULES explicitely, the behaviour is unchanged. 444 445- Static library imports are now properly transitive. If top-level module 446 'foo' imports static library 'bar' which imports static library 'zoo', 447 the libfoo.so will now be linked against both libbar.a and libzoo.a. 448 449- ndk-gdb now works correctly for activities with multiple categories 450 in their MAIN intent filters. 451 452OTHER CHANGES: 453 454- docs/STABLE-APIS.html: Added missing documentation listing EGL 455 as a supported stable API, starting from API level 9. 456 457- Add a new C++ support runtime named "gabi++". More details about it 458 are available in the updated docs/CPLUSPLUS-SUPPORT.html. 459 460- The STLport C++ runtimes now support RTTI (no exceptions yet though). 461 462- Add a new C++ support runtime named "gnustl_shared" corresponding to the 463 shared library version of GNU libstdc++ v3 (GPLv3 license). See more 464 info at docs/CPLUSPLUS-SUPPORT.html 465 466- You can now list several file extensions in LOCAL_CPP_EXTENSION. As in: 467 468 LOCAL_CPP_EXTENSION := .cpp .cxx 469 470 To compile both foo.cpp and bar.cxx as C++ sources. 471 472- Refreshed the EGL and OpenGLES Khronos headers to support more extensions. 473 Note that this does *not* change the NDK ABIs for the corresponding 474 libraries, since each extension must be probed at runtime by the client 475 application. 476 477 Which extensions are available depends on your actual device (and GPU 478 drivers), not the version of the platform it provides. 479 480 The header changes simply add new constants and types to make it easier 481 to use the extensions why they have been probed with eglGetProcAddress() or 482 glGetProcAddress(). Here is the list of newly supported extensions: 483 484 GLES 1.x 485 -------- 486 GL_OES_vertex_array_object 487 GL_OES_EGL_image_external 488 GL_APPLE_texture_2D_limited_npot 489 GL_EXT_blend_minmax 490 GL_EXT_discard_framebuffer 491 GL_EXT_multi_draw_arrays 492 GL_EXT_read_format_bgra 493 GL_EXT_texture_filter_anisotropic 494 GL_EXT_texture_format_BGRA8888 495 GL_EXT_texture_lod_bias 496 GL_IMG_read_format 497 GL_IMG_texture_compression_pvrtc 498 GL_IMG_texture_env_enhanced_fixed_function 499 GL_IMG_user_clip_plane 500 GL_IMG_multisampled_render_to_texture 501 GL_NV_fence 502 GL_QCOM_driver_control 503 GL_QCOM_extended_get 504 GL_QCOM_extended_get2 505 GL_QCOM_perfmon_global_mode 506 GL_QCOM_writeonly_rendering 507 GL_QCOM_tiled_rendering 508 509 GLES 2.0 510 -------- 511 GL_OES_element_index_uint 512 GL_OES_get_program_binary 513 GL_OES_mapbuffer 514 GL_OES_packed_depth_stencil 515 GL_OES_texture_3D 516 GL_OES_texture_float 517 GL_OES_texture_float_linear 518 GL_OES_texture_half_float_linear 519 GL_OES_texture_npot 520 GL_OES_vertex_array_object 521 GL_OES_EGL_image_external 522 GL_AMD_program_binary_Z400 523 GL_EXT_blend_minmax 524 GL_EXT_discard_framebuffer 525 GL_EXT_multi_draw_arrays 526 GL_EXT_read_format_bgra 527 GL_EXT_texture_format_BGRA8888 528 GL_EXT_texture_compression_dxt1 529 GL_IMG_program_binary 530 GL_IMG_read_format 531 GL_IMG_shader_binary 532 GL_IMG_texture_compression_pvrtc 533 GL_IMG_multisampled_render_to_texture 534 GL_NV_coverage_sample 535 GL_NV_depth_nonlinear 536 GL_QCOM_extended_get 537 GL_QCOM_extended_get2 538 GL_QCOM_writeonly_rendering 539 GL_QCOM_tiled_rendering 540 541 EGL: 542 ---- 543 EGL_ANDROID_recordable 544 EGL_NV_system_time 545 546- docs/NATIVE-ACTIVITY.HTML: Fixed typo, the minimum API level 547 should be 9, not 8 for native activities. 548 549- removed many unwanted exported symbols from the link-time shared 550 system libraries provided by the NDK. This ensures that code generated 551 with the standalone toolchain doesn't risk to accidentally depend 552 on a non-stable ABI symbol (e.g. any libgcc.a symbol that changes 553 each time the toolchain used to build the platform is changed). 554 555- download-toolchain-sources.sh: Script was updated to download the toolchain 556 sources from android.googlesource.com, the new location for AOSP servers. 557 558------------------------------------------------------------------------------- 559android-ndk-r6b 560 561This is a bug-fix release for NDK r6, no new features are provided. 562 563IMPORTANT BUG FIXES: 564 565- Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86" 566 567- Fixed location of prebuilt STLport binaries in the NDK release package. 568 (A bug in the packaging script placed them in the wrong location). 569 570- Fixed atexit() usage in shared libraries with the x86 standalone toolchain. 571 572- Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the 573 proper GNU libstdc++ binaries to the right location). 574 575- Fixed standalone toolchain linker warnings about missing definition and 576 size for '__dso_handle' symbol (arm only). 577 578- Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds, 579 see http://code.google.com/p/android/issues/detail?id=18540 580 581- Fixed the definitions of ptrdiff_t and size_t in x86-specific system 582 when used with the x86 standalone toolchain. 583 584------------------------------------------------------------------------------- 585android-ndk-r6 586 587IMPORTANT CHANGES: 588 589- Official support for the x86 ABI. 590 591 This release of the Android NDK now provides support for the 'x86' ABI. 592 This allows you to generate machine code that runs on future x86-based 593 Android devices. 594 595 Note that by default, code is still generated for ARM-based devices. 596 You can however add 'x86' to your APP_PLATFORM definition in your 597 Application.mk. For example, the following line instructs ndk-build 598 to build your code for three distinct ABIs: 599 600 APP_ABI := armeabi armeabi-v7a x86 601 602 Unless you rely on ARM-based assembly sources, you shouldn't need to touch 603 your Android.mk files to build x86 machine code. 604 605 For all details regarding x86 support, please read the new documentation 606 file named docs/CPU-X86.html. 607 608 Don't hesitate to file NDK bugs related to x86 at http://b.android.com 609 610- You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3 611 option when calling make-standalone-toolchain.sh. See 612 docs/STANDALONE-TOOLCHAIN.html for more details. 613 614- The new 'ndk-stack' tool can be used to translate stack traces 615 (as reported by adb logcat in case of crash in native code) into 616 something more readable, i.e. containing function / source file / 617 line number information corresponding to each stack frame. 618 619 For more information and usage example, see the new documentation 620 file docs/NDK-STACK.html 621 622OTHER FIXES & CHANGES: 623 624- The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been 625 finally removed from the NDK distribution. 626 627- Support a project.properties file in the application's directory 628 instead of default.properties. This is in preparation for future SDK Tools 629 changes. 630 631------------------------------------------------------------------------------- 632android-ndk-r5c 633 634This release fixes a few bugs in r5b. There are no new features. 635 636IMPORTANT BUG FIXES: 637 638- Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly 639 with the new toolchain. Also properly document this variable in 640 docs/ANDROID-MK.html. 641 642- Fixed a bug where code linked against gnustl_static would crash when run 643 on Android platform releases older than 2.2. 644 645- <android/input.h>: Two functions in this header file, introduced 646 by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While 647 this breaks the source API, the binary interface to the system is 648 unchanged. 649 650 The functions missing a third 'history_index' parameter. They correct 651 definition is now: 652 653 float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, 654 size_t pointer_index, 655 size_t history_index); 656 657 float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, 658 size_t pointer_index, 659 size_t history_index); 660 661- Updated the android-9 C library arm binary to correctly expose at link time 662 new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init). 663 664- Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g. 665 the Motorola Xoom). 666 667OTHER FIXES & CHANGES: 668 669- Object files are now always linked in the order they appear in 670 LOCAL_SRC_FILES. This was not the case previously because the files 671 were grouped by source extensions instead. 672 673- download-toolchain-sources.sh: Fixed a silly bug that prevented the 674 --git-date option to work properly when downloading the master branch. 675 676- Fix an issue where a module could import itself, resulting in an infinite 677 loop in GNU Make. 678 679- When import-module fails, it now prints the list of directories 680 that were searched. This is useful to check that the NDK_MODULE_PATH 681 definition used by the build system is correct. 682 683- When import-module succeeds, it now prints the directory where the module 684 was found to the log (visible with NDK_LOG=1). 685 686- <pthread.h>: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for 687 android-9 API level and higher. 688 689- Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build 690 fail (typo in build/core/build-binary.mk) 691 692- Fixed a bug that prevented the compilation of .s assembly files 693 (.S files were ok). 694 695- Speed-up the build of debuggable applications when there is a very 696 large number of include directories in a project. 697 698- ndk-gdb: Better detection of 'adb shell' failures (improves error messages). 699 700- ndk-build: Fix a rare bug that appeared when trying to perform parallel 701 builds of debuggable projects. 702 703 704------------------------------------------------------------------------------- 705android-ndk-r5b 706 707This release fixes a few bugs in r5. There are no new features. 708 709IMPORTANT BUG FIXES: 710 711- Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain. 712 The previous binary generated invalid thumb instruction sequences when 713 dealing with signed chars. This problem was first reported on the 714 android-ndk forum and fixed by the following change in the toolchain 715 sources: 716 717 https://review.source.android.com/#change,19474 718 719- docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the 720 "gnustl_static" value for APP_STL, that allows you to link against 721 a static library version of GNU libstdc++. 722 723- ndk-build: Fix a bug that created inconsistent dependency files when a 724 compilation error occured on Windows, preventing building properly after 725 the error was fixed in the source code. 726 727- ndk-build: Fix a Cygwin-specific bug where using very short paths for 728 the Android NDK installation or the project path could lead to the 729 generation of invalid dependency files, making incremental builds 730 impossible. 731 732- Fix a typo that prevented the cpufeatures library to work correctly 733 with the new NDK toolchain. 734 735- Linux toolchain binaries now run on Ubuntu 8.04 or higher. 736 More specifically, the r5 binaries did require GLibc 2.11 on the host 737 system, and refused to run with previous releases due to an ABI mismatch 738 in the GNU C Library. The r5b binaries are generated with a special 739 toolchain that instead targets GLibc 2.7 or higher. 740 741- GNU libstdc++ will not crash anymore when printing floating-point values 742 through i/o streams. 743 744OTHER FIXES & CHANGES: 745 746- ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m" 747 from GNU Make for each and every source or object file. This was a problem 748 for users with very large source trees. 749 750 In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your 751 environment to use 'cygpath -m' as usual. 752 753 Also, if 'cygpath' is not in your path, completely ignore it 754 (seems to be enough to run the NDK under MSys). 755 756- ndk-build: Handle installation paths containing spaces when checking 757 cygwin installation. Before that, the script complained that the user 758 was using an incorrect version of GNU Make (even if he had the right one). 759 760- Fixed a typo that prevented several NDK_MODULE_PATH to work properly when 761 it contained multiple directories separated with ":" 762 763- prebuilt-common.sh: Make the script check the compiler directly for 64-bit 764 generated machine code, instead of relying on the host tag. That should 765 allow the 32-bit toolchain to rebuild properly on Snow Leopard. 766 767- prebuilt-common.sh: Fix the toolchain rebuild scripts to work when 768 using a 32-bit host toolchain. 769 770- <netinet/in.h>: Add missing declaration for INET_ADDRSTRLEN 771- <netinet/in6.h>: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL 772 and IN6_IS_ADDR_MC_GLOBAL. 773 774- <asm/byteorder.>: Replaced 'asm' with '__asm__' to allow compilation 775 with -std=c99. See https://review.source.android.com/#change,20076 776 777- standalone toolchain: The -fpic flag is now the default for the 778 arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance 779 degradation when compared to the old android-eabi configuration. 780 781 This only affects users of the standalone toolchain. The NDK build script 782 always enforced -fpic implicitely. 783 784------------------------------------------------------------------------------- 785android-ndk-r5 786 787IMPORTANT BUG FIXES: 788 789- Allow dlclose() to properly call static C++ destructors when unloading 790 a shared library. This requires changes in both the C library and the 791 build system. IMPORTANT: This feature is only available for API level 9. 792 793- Fix packaging error for system libraries of level 5 and 8. The libraries 794 bundled with the NDK and used at link time were not the correct version, 795 and this prevented linking against certain symbols appropriately. 796 797- ndk-gdb: do not start activity unless --start or --launch is used. 798 (the documentation was correct, the implementation wrong) 799 800- The system headers for all API levels have been cleaned up and will 801 not provide the declarations of functions that are not available in 802 the corresponding system libraries. 803 804IMPORTANT CHANGES: 805 806- Support for API level 9, (a.k.a. Android 2.3) which adds the following 807 native features to the platform: 808 809 - Native audio API based on the Khronos Group OpenSL ES™ 1.0.1 Standard. 810 New headers <SLES/OpenSLES.h> and <SLES/OpenSLES_Android.h> 811 are provided to allow applications targeting this API level to perform 812 audio input, output and processing directly from native code. 813 814 - Native activity support, i.e. the ability to build applications that 815 are coded entirely in C or C++. More precisely, such applications still 816 run inside a VM, and will have to access most of the platform's features 817 using JNI (i.e. native code calling VM methods). However, this also 818 comes with a series of headers and libraries to implement the following 819 directly from native code: 820 821 - activity lifecycle management. 822 - user input handling (touch, keyboard, trackball, ...). 823 - window management (including accessing the pixel buffer). 824 - sensor listeners (e.g. accelerometer, compass, ...). 825 - hardware configuration management. 826 - easily reading assets out of an APK from native code. 827 - access to the storage manager, a new feature of Android X.X 828 that allows one to provide Opaque Binary Objects containing 829 large amounts of data outside of the APK. 830 831 See the documentation in docs/STABLE-APIS.html for more details. 832 833 Note that most of these new features are targeted at game developers. 834 835- Improved gdbserver binary to allow debugging _threaded_ programs properly 836 with ndk-gdb (the previous binary could only set breakpoints on the main 837 thread). 838 839 IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER. 840 841 The root cause of the problem is a platform bug that was only fixed in 842 2.3. If you try to debug on a previous platform, the gdbserver binary 843 will only be able to set breakpoints on the main thread. 844 845 For more information, see the specific section in docs/NDK-GDB.html. 846 847- Easier debuggable builds: just invoke ndk-build while defining the 848 NDK_DEBUG variable to 1, as in: 849 850 $NDK/ndk-build NDK_DEBUG=1 851 852 This will have the same result that setting the android:debuggable="true" 853 in the <application> element of your AndroidManifest.xml file. See the 854 file docs/NDK-BUILD.html for more details. 855 856 Note that you will need to use the SDKr8 build tools to use this feature 857 properly! 858 859- Refresh of system C++ headers: 860 861 - Headers have been moved out of the platform directory hierarchy. 862 This is to prevent conflicts with other STLs like STLport or the 863 GNU libstdc++ which provide their own version of the headers, but 864 does not affect your builds. 865 866 - The list of headers has grown to include the following: 867 868 cassert, cctype, cerrno, cfloat, climits, cmath, 869 csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib, 870 cstring, ctime, cwchar, new, typeinfo, utility 871 872 Note that they still correspond to our minimal C++ runtime, no new feature 873 was introduced here. 874 875- Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for 876 all details (and limitations). 877 878- STLport implementation: Add sources and prebuilt binaries for a port of 879 the STLport C++ Standard Library (www.stlport.org), and an easy way to use 880 it at build time by defining APP_STL in your Application.mk. See 881 docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details. 882 883- GNU libstdc++ implementation: Available as a static library that you can 884 select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html 885 for all details. 886 887- Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and 888 PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation 889 file named docs/PREBUILTS.html for explanations and usage examples. 890 891- Support for module exports: A module can now define a set of compiler or 892 linker flags that will be automatically 'imported' by any other module that 893 depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES. 894 895 This is achieved with the help of new Android.mk variables named 896 LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and 897 LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and 898 a 'samples/module-exports' for a sample project that uses this. 899 900- Add support to specify a different file name for generated files, through 901 the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an 902 example. 903 904- Add support for module imports, through the NDK_MODULE_PATH environment 905 variable and the new 'import-module' function. This allows you to avoid 906 hard-coding the path of third-party modules into your project files. 907 908 See docs/IMPORT-MODULE.html for details. 909 910- Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging 911 easier. Also fixes an issue that prevented clean parallel builds of 912 debuggable applications to work correctly. This fixes an error message that 913 said: 914 915 /bin/sh: <project>/libs/armeabi/gdb.setup: No such file or directory 916 917 When doing a "ndk-build -j<number>", with <number> bigger than 1. 918 919- Add support for assembly-level source filtering. See the description of 920 LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful 921 for certain kinds of obfuscation tasks. 922 923- This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3) 924 which provides many benefits, including: 925 926 - Better code generation than the previous one (gcc-4.4.0) 927 - On Windows, the binaries do not depend on Cygwin anymore. 928 - The ability to use it as a stand-alone cross-compiler 929 (see docs/STANDALONE-TOOLCHAIN.html for all details). 930 931 The binaries for gcc-4.4.0 are still provided for backwards compatibility. 932 Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage. 933 Note that it is now deprecated and will be removed in a future NDK release. 934 935 IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI, 936 STLport and GNU libstdc++. 937 938 The binaries for the already-deprecated gcc-4.2.1 have been removed. 939 940- The 'cpufeatures' library has been updated to provide better architecture 941 and features detection (including a work-around for buggy ARMv6 kernels 942 which report an architecture version of 7). 943 944 The library is now also available as an import module, to simplify its 945 usage in your build scripts. See the updated docs/CPU-FEATURES.html file 946 for details. 947 948 NOTE: Please update your Android.mk to use module imports as soon as 949 possible. The location $NDK/source/cpufeatures/ is deprecated 950 and will be removed in a future NDK release. Avoid referencing 951 it directly in your build scritps! 952 953OTHER FIXES AND CHANGES: 954 955- Reduced the size of generated binaries by using --strip-unneeded 956 instead of --strip-debug. This gets rid of mor symbol table entries 957 in release shared libraries and executables, without impacting 958 runtime execution. 959 960- Fix bad automatic dependency tracking when using multiple source 961 sub-directories. 962 963- The path to system headers is now included last in the compilation command 964 line. This prevents conflicts with source code that define their own headers 965 with similar names (e.g. a custom "err.h" was ignored, because the system 966 <err.h> was used instead). 967 968- Update documentation for 'my-dir' function to explain that, due to the 969 way GNU Make works, it really returns the path of the last included 970 Makefile (instead of the current one). Also provide examples on how 971 to deal with it. 972 973- make-release.sh: Now has an --out-dir=<path> option to specify the 974 output directory where the packages are going to be copied. Also 975 ensure that generated packages have go+r permissions. 976 977- ndk-build will now properly escape arguments. This means that something 978 like this: 979 980 ndk-build MY_CFLAGS="-DFOO -DBAR" 981 982 will now work correctly. 983 984- Add --git-http option to download-toolchain-sources.sh and 985 rebuild-all-prebuilt.sh in order to download sources from 986 android.git.kernel.org through HTTP. 987 988- ndk-gdb: properly launch activities for which name does not contain any dot. 989 990- ndk-gdb: add --delay=<timeout> option to specify a delay in seconds 991 between activity launch and gdbserver attach. This is needed because certain 992 activities can take a long time to properly launch. The default delay is 993 also increased to 2 seconds (instead of 1). 994 995- build/tools/build-gcc.sh: copy the sysroot to the build directory. This 996 avoids the generated toolchain binaries from hard-coding host build paths. 997 998- Platform files are now under $NDK/platforms instead of $NDK/build/platforms 999 1000- Toolchain files are now under $NDK/toolchains instead of 1001 $NDK/build/toolchains and $NDK/build/prebuilt. 1002 1003- Release and debug objects are stored under two different directories now 1004 (i.e. obj/local/<abi>/objs and obj/local/<abi>/objs-debug). This 1005 prevents rebuilding *everything* when you switch between these two modes, 1006 which can be a real time-saver for complex projects. 1007 1008- Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command 1009 when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true' 1010 1011------------------------------------------------------------------------------- 1012android-ndk-r4b 1013 1014This release fixes a few bugs in r4 scripts. There are no new features. 1015 1016OTHER FIXES & CHANGES: 1017 1018- build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'. 1019 Fix the script (and others in the same directory) to do that properly. 1020 1021- ndk-gdb: check the target device's API level, and dump an error message if 1022 it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly 1023 remove control characters like '\r' from adb shell's output. Also fix 1024 script to work properly with OS X's BSD awk. 1025 1026- ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try 1027 to look for jni/Android.mk if no manifest is found. If you don't use this, 1028 you can also define NDK_PROJECT_PATH to point to your tree. 1029 1030 Also, on Windows, check that a Cygwin-compatible make executable is being 1031 used, and dump a readable help message to solve the issue if this is not 1032 the case. 1033 1034- Place generated binaries under $PROJECT_PATH/obj/ instead of 1035 $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned 1036 by the JDT, resulting in the inability to properly load symbol versions 1037 of the shared libraries when running ndk-gdb. 1038 1039- Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES. 1040 Previous behaviour was to silently ignore them. 1041 1042- Set the optimization mode to 'debug' automatically if the manifest sets 1043 android:debuggable to 'true'. You can override this by using 1044 'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to 1045 your LOCAL_CFLAGS. 1046 1047 Note that even in release mode, the NDK build scripts will produce 1048 binaries with symbols under obj/local/<abi>/ that will be used for 1049 debugging with gdb. However, the debugger will have a harder time to 1050 print proper local variable values that have been optimized out or 1051 even set breakpoints properly. 1052 1053------------------------------------------------------------------------------- 1054android-ndk-r4 1055 1056IMPORTANT BUG FIXES: 1057 1058- The <fenv.h> header was not placed in the correct location and could not 1059 be found by normal builds. 1060 1061IMPORTANT CHANGES: 1062 1063- On Windows, Cygwin 1.7 or higher is now required. The NDK will not 1064 work properly with Cygwin 1.5 which is now officially obsolete 1065 anyway. 1066 1067- Simplified build system: You no longer need to run build/host-setup.sh 1068 or modify anything under $NDK_ROOT/apps/. Instead, just invoke the 1069 new 'ndk-build' script from your application's project directory, or 1070 one of its sub-directories. 1071 1072 See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details. 1073 1074 NOTE: For compatibility purpose, you can still define projects 1075 through $NDK_ROOT/apps/<name> though. 1076 1077 However, not that sample applications have moved from 1078 'apps/<name>/project' to 'samples/<name>' and now must 1079 be built with 'ndk-build'. The source code of pre-existing 1080 samples didn't change though. 1081 1082- Easy native debugging support when running debuggable applications 1083 on Android 2.2 or higher, through the new 'ndk-gdb' helper script. 1084 See docs/NDK-GDB.html for details. 1085 1086- Support for hardware FPU. This is through the new 'armeabi-v7a' ABI 1087 corresponding to ARMv7-a class devices. 1088 1089 Note that by default, the NDK will still generate machine code for the old 1090 'armeabi' ABI (ARMv5TE based) which is supported by all official Android 1091 system images to date. 1092 1093 You will need to define APP_ABI in your Application.mk file to change this. 1094 See docs/APPLICATION-MK.html 1095 1096 More details about ABIs is now available in docs/CPU-ARCH-ABIS.html 1097 1098- A small static library named 'cpufeatures' is provided with source code 1099 and can be used at runtime to determine the CPU features supported by the 1100 target device. It should run on all Android platforms, starting from 1.5. 1101 1102 For more information, see docs/CPU-FEATURES.html 1103 1104- Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set 1105 extension through the use the LOCAL_ARM_NEON variable in Android.mk, or 1106 the '.neon' suffix when listing source files. 1107 1108 Neon is an *optional* instruction set extension, and not all Android ARMv7 1109 devices will support it. You will need to use the 'cpufeatures' library to 1110 determine if such code can be used at runtime, and provide alternate code 1111 paths if this is not the case. This is similar to MMX/SSE/3DNow on x86 1112 platforms. 1113 1114 For more information, see docs/CPU-ARM-NEON.html 1115 1116- Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures' 1117 and NEON intrinsics and build support. 1118 1119- Added <android/bitmap.h>, a new stable API available from android-8 1120 (a.k.a. Android 2.2) to reliably access the pixel buffer of an 1121 android.graphics.Bitmap object from native code. See docs/STABLE-API.html 1122 and the new sample program under 'samples/bitmap-plasma' for details 1123 and usage example. 1124 1125- Support the NX (No Execute) security feature, where special sections 1126 are added to the generated shared libraries to instruct the kernel 1127 that code shall not be executed from the heap and stack by default. 1128 1129 See docs/ANDROID-MK.html to see how to disable this, plus reference 1130 links for more information. 1131 1132OTHER FIXES AND CHANGES: 1133 1134- support the .s extension for raw assembly sources (.S is already supported 1135 but the input files are parsed by the C-preprocessor before being sent to 1136 the assembler). 1137 1138- build/host-setup.sh has been removed. There is no need for a 'setup' step 1139 when using the NDK for the first time. All host-specific autodetection and 1140 basic tool sanity checking have been moved to the build scripts themselves. 1141 1142- APP_MODULES in Application.mk is now optional. If not defined, the NDK 1143 will simply build _all_ the modules that are declared from your Android.mk. 1144 1145 You can still use APP_MODULES to restrict the set of modules you want to 1146 build. Note that the NDK now computes the transitive dependencies of these 1147 modules for you now. See docs/APPLICATION-MK.html for details. 1148 1149- docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library 1150 (libdl.so). It is actually supported by all API levels. 1151 1152- build/tools/download-toolchain-sources.sh: Use 'master' branch by default 1153 instead of the 'eclair' one. 1154 1155- build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding 1156 them. This is primarily to ease development. All you need to do is put a patch 1157 under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied 1158 with 'patch -p1' into the <foo> directory of the unpacked toolchain sources 1159 before the configure step. 1160 1161- docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI. 1162 1163- build/core/mkdeps.sh: Removed obsolete script. 1164 1165- the NDK build script now only parses the Application.mk and Android.mk of 1166 the applications listed by APP. The error messages when APP is empty or 1167 malformed have also been improved. 1168 1169- removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4' 1170 warning when building with GCC 4.4.0 for ARM. 1171 1172- C Library header fixes: 1173 1174 For all platforms: 1175 1176 - <arpa/inet.h>: no longer includes <netinet/in6.h>. 1177 - <ctype.h>: better inlining with -ansi option. 1178 - <mntent.h>: add missing include for <stdio.h>. 1179 - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any + 1180 in6addr_loopback. 1181 - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, 1182 IN6ADDR_ANY_INIT, ipv6mr_interface. 1183 - <sys/epoll.h>: add missing C++ inclusion guards. 1184 - <sys/resource.h>: add missing rlim_t declaration. 1185 - <sys/system_properties.h>: add missing C++ inclusion guards. 1186 - <time64.h>: add missing C++ inclusion guards. 1187 - <netdb.h>: move h_errno declaration inside C++ inclusion guards. 1188 1189- C Library changes: 1190 1191 For android-8 (a.k.a. Android 2.2): 1192 1193 - <dlfcn.h>: add DL_info and dladdr(). 1194 - <err.h>: add err(), warn() and other variants. 1195 - <regex.h>, <fts.h>, <sys/queue.h>: added 1196 - <pthread.h>: add pthread_condattr_t 1197 - <sched.h>: added proper clone() declaration (and implementation). 1198 - <signal.h>: added killpg(). 1199 - <stdio.h>: add fdprintf() and vfdprintf(). 1200 - <stdlib.h>: fix ptsname_r() signature in declaration. previous 1201 implementation was broken anyway. 1202 - <unistd.h>: add getusershell(), setusershell(), endusershell(), 1203 ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature 1204 (now returns int). 1205 - <wchar.h>: add fake mbstowcs() and wcstombs(). 1206 1207 More details available under docs/system/libc/CHANGES.html 1208 1209------------------------------------------------------------------------------- 1210android-ndk-r3 1211 1212IMPORTANT BUG FIXES: 1213 1214- Fix build/host-setup.sh to execute as a Bourne shell script (again) 1215 1216- Make target shared libraries portable to systems that don't use the exact 1217 same toolchain. This is needed due to differences in libgcc.a implementations 1218 between gcc 4.2.1 and 4.4.0. This change ensures that generated machine 1219 code doesn't depend on helper functions provided by the Android platform 1220 runtime. 1221 1222 1223IMPORTANT CHANGES: 1224 1225- GCC 4.4.0 is now used by default by the NDK. It generates better code than 1226 GCC 4.2.1, which was used in previous releases. However, the compiler's C++ 1227 frontend is also a lot more pedantic regarding certain template constructs 1228 and will even refuse to build some of them. 1229 1230 For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and 1231 you can force its usage by defining NDK_TOOLCHAIN in your environment to 1232 the value 'arm-eabi-4.2.1'. For example: 1233 1234 export NDK_TOOLCHAIN=arm-eabi-4.2.1 1235 make APP=hello-jni 1236 1237 Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We 1238 recommend switching to 4.2.1 *only* if you encounter compilation problems 1239 with 4.4.0. 1240 1241 The 4.2.1 prebuilt binaries will probably be removed from a future release 1242 of the Android NDK, we thus *strongly* invite you to fix your code if such 1243 problems happen. 1244 1245- Support for OpenGL ES 2.0. This is through the new 'android-5' platform to 1246 reflect Android 2.0 (previously the Eclair branch). This is merely a copy 1247 of android-4 that also includes headers and libraries for OpenGL ES 2.0. 1248 1249 See the sample named "hello-gl2" for a *very* basic demonstration. Note that 1250 OpenGL ES 2.0 is currently *not* available from Java, and must be used 1251 through native code exclusively. 1252 1253 IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this 1254 time. Running/testing any native code that depends on it thus 1255 requires a real device. 1256 1257- The NDK build script will now remove installed binaries from the application 1258 project's path before starting the build. This ensures that: 1259 1260 - if the build fails for some reason, a stale/obsolete file is not left in 1261 your application project tree by mistake. 1262 1263 - if you change the target ABI, a stale/obsolete file is not left into the 1264 folder corresponding to the old ABI. 1265 1266 1267- Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0 1268 issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and 1269 2.0 on specific devices only, need for <uses-feature> tag in manifest). 1270 1271 1272OTHER FIXES AND CHANGES: 1273 1274- Actually use the awk version detected by host-setup.sh during the build. 1275 1276- Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set 1277 to 'true', just like the documentation says it works. Also fix a typo 1278 in CLEAR_VARS that prevented this variable from being cleared properly. 1279 1280- Simplified build/tools/make-release.sh, the --prebuilt-dir option is 1281 gone, and --help will dump a clearer description of expected options 1282 and input files. 1283 1284- Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to 1285 package a new experimental NDK package archive from the current source tree 1286 plus the toolchain binaries of an existing NDK release package. E.g.: 1287 1288 build/tools/make-release.sh \ 1289 --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip 1290 1291 will generate a new NDK package in /tmp/ndk-release that contains the most 1292 up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which 1293 are not in the git repository). 1294 1295 Also added the --no-git option to collect all sources from the current 1296 NDK root directory, instead of the list given by 'git ls-files'. This can 1297 be useful if you don't want to checkout the whole 'platform/development' 1298 project from repo and still work on the NDK. 1299 1300 This change is to help people easily package experimental NDK releases to 1301 test and distribute fixes and improvements. 1302 1303- Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to 1304 build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04) 1305 1306- Remove bash-ism from build/tools/build-ndk-sysroot.sh 1307 1308- Refresh C library headers for all platforms: 1309 1310 - make <endian.h> simply include <sys/endian.h> 1311 - make <stdint.h> properly declare 64-bit integer types with a C99 compiler 1312 - add missing <sys/types.h> to <strings.h> 1313 - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and 1314 st_ctimensec) to <stat.h> 1315 - add missing declaration for tzset() in <time.h> 1316 1317- Added build/tools/download-toolchain-sources.sh, a script that allows you 1318 to download the toolchain sources from the official open-source repository 1319 at android.git.kernel.org and nicely package them into a tarball that can 1320 later be used by build/tools/build-toolchain.sh to rebuild the prebuilt 1321 binaries for your system. 1322 1323- Updated build/tools/build-toolchain.sh to support the tarballs generated 1324 by download-toolchain-sources.sh with the --package=<file> option. This 1325 also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to 1326 gcc 4.4.0. 1327 1328------------------------------------------------------------------------------- 1329android-ndk-1.6_r1 1330 1331IMPORTANT BUG FIXES: 1332 1333- Fix build/host-setup.sh to: 1334 * execute as a Bourne shell script 1335 * remove unused host gcc dependency 1336 * improve Windows host auto-detection 1337 * add GNU Make version check 1338 * add Nawk/Gawk check 1339 * ensure that the script is run from $NDKROOT as build/host-setup.sh 1340 * add --help, --verbose, --no-awk-check and --no-make-check options 1341 1342- Properly add sysroot library search path at build time. This makes a line 1343 in Android.mk like: 1344 1345 LOCAL_LDLIBS := -lz 1346 1347 Actually work correctly, instead of having the linker complaining that it 1348 could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS 1349 in $(CLEAR_VARS) script. 1350 1351 1352IMPORTANT CHANGES: 1353 1354- The 'sources' directory is gone. The NDK build system now looks for 1355 $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with 1356 the new APP_BUILD_SCRIPT variable in Application.mk 1357 1358 For example, the 'hello-jni' sample uses the following files: 1359 1360 apps/hello-jni/project/jni/Android.mk 1361 apps/hello-jni/project/jni/hello-jni.c 1362 1363 The 'apps/<name>' directory is still needed in this release though. 1364 1365- Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build 1366 system. This means that: 1367 1368 - LOCAL_CFLAGS is now used for *both* C and C++ sources (was only for C) 1369 - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++) 1370 - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete. 1371 (will disappear in next release) 1372 1373 Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly. 1374 1375- Rename build/platforms/android-1.5 to build/platforms/android-3 to match 1376 the Android API level instead of the marketing speak. 1377 1378 Also add a new build/platforms/android-4, and make the build system select 1379 which platform to use based on the content of the project file named 1380 $(APP_PROJECT_PATH)/default.properties. 1381 1382- Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs. 1383 (NOTE: they are *not* available for android-3) 1384 1385 Also provide a small port of the "San Angeles Observation" demo to show 1386 how to make a simple Android application that uses them. 1387 1388 1389OTHER FIXES AND CHANGES 1390 1391- Ensure that the __ANDROID__ macro is always defined when building code 1392 with the NDK. Normally, the macro must be defined by the toolchain 1393 automatically to indicate that you're targeting the Android runtime. 1394 1395 This works for the new arm-linux-androideabi toolchain, but there is 1396 a bug in the way we built the arm-eabi one, so add the flag manually 1397 through the NDK build script for it. 1398 1399 Note that the ANDROID macro, is now deprecated. While it is still defined 1400 by the NDK, you should modify your code to test against __ANDROID__ instead! 1401 1402- Generate thumb binaries by default. 1403 1404- Add support for LOCAL_ARM_MODE in Android.mk. 1405 1406- Add support for the '.arm' suffix in source file names to force the 1407 compilation of a single source in ARM (32-bit) mode. 1408 1409- Generate proper unoptimized versions of binaries when APP_OPTIM := debug 1410 1411- Add support for LOCAL_C_INCLUDES in Android.mk 1412 1413- Fix compilation of assembler files (e.g. foo.S) 1414 1415------------------------------------------------------------------------------- 1416android-ndk-1.5_r1 released. 1417</pre></body></html> 1418