1 <html><body><pre>Android NDK ChangeLog: 2 3 ------------------------------------------------------------------------------- 4 android-ndk-r7 5 6 IMPORTANT CHANGES: 7 8 - CCache support. To speed up large rebuilds, simply define the NDK_CCACHE 9 environment variable to 'ccache' (or the path to your ccache binary), as in: 10 11 export NDK_CCACHE=ccache 12 13 The NDK build system will automatically use it when compiling any source 14 file. For more information about CCache, see http://ccache.samba.org 15 16 - You can now set your APP_ABI to 'all' to indicate that you want to build 17 your NDK modules for all the ABIs supported by your given NDK release. 18 19 This means that either one of these two lines in your Application.mk are 20 equivalent with this release: 21 22 APP_ABI := all 23 APP_ABI := armeabi armeabi-v7a x86 24 25 This also works if you define APP_ABI on the command-line, as in: 26 27 ndk-build APP_ABI=all 28 29 Which is a quick way to check that your project builds for all supported 30 ABIs without changing its Application.mk file. 31 32 - Shorter paths to source and object files used in build commands. 33 When invoking $NDK/ndk-build from your project path, the paths to the 34 source, object and binary files passed to the build commands will be 35 significantly shorter now because they are now passed relative to the 36 current directory. 37 38 This is useful when building projects with a lot of source files, to 39 avoid limits on the maximum command line length supported by your host 40 operating system. 41 42 The behaviour is unchanged if you invoked ndk-build from a sub-directory 43 of your project tree, or if you define NDK_PROJECT_PATH to point to a 44 specific directory. 45 46 - New LOCAL_CPP_FEATURES variable in Android.mk, used to declare which C++ 47 features (RTTI or Exceptions) your module uses. This is especially handy 48 if you have prebuilt modules that depend on them since this will ensure 49 the final link will work correctly. 50 51 See docs/ANDROID-MK.html and docs/CPLUSPLUS-SUPPORT.html for more details 52 53 IMPORTANT BUG FIXES: 54 55 - Imported shared libraries are now installed by default to the target 56 installation location (i.e. libs/%lt;abi%gt;) if APP_MODULES is not 57 defined in your Application.mk. 58 59 This means that if a top-level module "foo" imports a module "bar", then 60 both libfoo.so and libbar.so will be copied to the install location. 61 62 Previously, only libfoo.so was, unless you listed 'bar' in your APP_MODULES 63 too. 64 65 If you define APP_MODULES explicitely, the behaviour is unchanged. 66 67 - Static library imports are now properly transitive. If top-level module 68 'foo' imports static library 'bar' which imports static library 'zoo', 69 the libfoo.so will now be linked against both libbar.a and libzoo.a. 70 71 OTHER CHANGES: 72 73 - Add a new C++ support runtime named "gabi++". More details about it 74 are available in the updated docs/CPLUSPLUS-SUPPORT.html. 75 76 - The STLport C++ runtimes now support RTTI (no exceptions yet though). 77 78 - Add a new C++ support runtime named "gnustl_shared" corresponding to the 79 shared library version of GNU libstdc++ v3 (GPLv3 license). See more 80 info at docs/CPLUSPLUS-SUPPORT.html 81 82 - You can now list several file extensions in LOCAL_CPP_EXTENSION. As in: 83 84 LOCAL_CPP_EXTENSION := .cpp .cxx 85 86 To compile both foo.cpp and bar.cxx as C++ sources. 87 88 ------------------------------------------------------------------------------- 89 android-ndk-r6b 90 91 This is a bug-fix release for NDK r6, no new features are provided. 92 93 IMPORTANT BUG FIXES: 94 95 - Fixed the multi-architecture build, i.e. when using APP_ABI="armeabi x86" 96 97 - Fixed location of prebuilt STLport binaries in the NDK release package. 98 (A bug in the packaging script placed them in the wrong location). 99 100 - Fixed atexit() usage in shared libraries with the x86 standalone toolchain. 101 102 - Fixed make-standalone-toolchain.sh --arch=x86 (it failed to copy the 103 proper GNU libstdc++ binaries to the right location). 104 105 - Fixed standalone toolchain linker warnings about missing definition and 106 size for '__dso_handle' symbol (arm only). 107 108 - Fixed the inclusion order of $(SYSROOT)/usr/include for x86 builds, 109 see http://code.google.com/p/android/issues/detail?id=18540 110 111 - Fixed the definitions of ptrdiff_t and size_t in x86-specific system 112 when used with the x86 standalone toolchain. 113 114 ------------------------------------------------------------------------------- 115 android-ndk-r6 116 117 IMPORTANT CHANGES: 118 119 - Official support for the x86 ABI. 120 121 This release of the Android NDK now provides support for the 'x86' ABI. 122 This allows you to generate machine code that runs on future x86-based 123 Android devices. 124 125 Note that by default, code is still generated for ARM-based devices. 126 You can however add 'x86' to your APP_PLATFORM definition in your 127 Application.mk. For example, the following line instructs ndk-build 128 to build your code for three distinct ABIs: 129 130 APP_ABI := armeabi armeabi-v7a x86 131 132 Unless you rely on ARM-based assembly sources, you shouldn't need to touch 133 your Android.mk files to build x86 machine code. 134 135 For all details regarding x86 support, please read the new documentation 136 file named docs/CPU-X86.html. 137 138 Don't hesitate to file NDK bugs related to x86 at http://b.android.com 139 140 - You can build a standalone x86 toolchain using the --toolchain=x86-4.4.3 141 option when calling make-standalone-toolchain.sh. See 142 docs/STANDALONE-TOOLCHAIN.html for more details. 143 144 - The new 'ndk-stack' tool can be used to translate stack traces 145 (as reported by adb logcat in case of crash in native code) into 146 something more readable, i.e. containing function / source file / 147 line number information corresponding to each stack frame. 148 149 For more information and usage example, see the new documentation 150 file docs/NDK-STACK.html 151 152 OTHER FIXES & CHANGES: 153 154 - The arm-eabi-4.4.0, which had been deprecated since NDK r5, has been 155 finally removed from the NDK distribution. 156 157 - Support a project.properties file in the application's directory 158 instead of default.properties. This is in preparation for future SDK Tools 159 changes. 160 161 ------------------------------------------------------------------------------- 162 android-ndk-r5c 163 164 This release fixes a few bugs in r5b. There are no new features. 165 166 IMPORTANT BUG FIXES: 167 168 - Fixed a typo that prevented LOCAL_WHOLE_STATIC_LIBRARIES to work correctly 169 with the new toolchain. Also properly document this variable in 170 docs/ANDROID-MK.html. 171 172 - Fixed a bug where code linked against gnustl_static would crash when run 173 on Android platform releases older than 2.2. 174 175 - <android/input.h>: Two functions in this header file, introduced 176 by API level 9 (a.k.a. 2.3) were incorrect and have been fixed. While 177 this breaks the source API, the binary interface to the system is 178 unchanged. 179 180 The functions missing a third 'history_index' parameter. They correct 181 definition is now: 182 183 float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, 184 size_t pointer_index, 185 size_t history_index); 186 187 float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, 188 size_t pointer_index, 189 size_t history_index); 190 191 - Updated the android-9 C library arm binary to correctly expose at link time 192 new functions that were added to it in Gingerbread (e.g. pthread_rwlock_init). 193 194 - Fixed a bug that made gdbserver crash on misc. Honeycomb devices (e.g. 195 the Motorola Xoom). 196 197 OTHER FIXES & CHANGES: 198 199 - Object files are now always linked in the order they appear in 200 LOCAL_SRC_FILES. This was not the case previously because the files 201 were grouped by source extensions instead. 202 203 - download-toolchain-sources.sh: Fixed a silly bug that prevented the 204 --git-date option to work properly when downloading the master branch. 205 206 - Fix an issue where a module could import itself, resulting in an infinite 207 loop in GNU Make. 208 209 - When import-module fails, it now prints the list of directories 210 that were searched. This is useful to check that the NDK_MODULE_PATH 211 definition used by the build system is correct. 212 213 - When import-module succeeds, it now prints the directory where the module 214 was found to the log (visible with NDK_LOG=1). 215 216 - <pthread.h>: Fixed the definition of PTHREAD_RWLOCK_INITIALIZER for 217 android-9 API level and higher. 218 219 - Fixed a bug where LOCAL_ARM_NEON was defined to true would make the build 220 fail (typo in build/core/build-binary.mk) 221 222 - Fixed a bug that prevented the compilation of .s assembly files 223 (.S files were ok). 224 225 - Speed-up the build of debuggable applications when there is a very 226 large number of include directories in a project. 227 228 - ndk-gdb: Better detection of 'adb shell' failures (improves error messages). 229 230 - ndk-build: Fix a rare bug that appeared when trying to perform parallel 231 builds of debuggable projects. 232 233 234 ------------------------------------------------------------------------------- 235 android-ndk-r5b 236 237 This release fixes a few bugs in r5. There are no new features. 238 239 IMPORTANT BUG FIXES: 240 241 - Fix a compiler bug in the arm-linux-androideabi-4.4.3 toolchain. 242 The previous binary generated invalid thumb instruction sequences when 243 dealing with signed chars. This problem was first reported on the 244 android-ndk forum and fixed by the following change in the toolchain 245 sources: 246 247 https://review.source.android.com/#change,19474 248 249 - docs/CPLUSPLUS-SUPPORT.html: Add missing documentation for the 250 "gnustl_static" value for APP_STL, that allows you to link against 251 a static library version of GNU libstdc++. 252 253 - ndk-build: Fix a bug that created inconsistent dependency files when a 254 compilation error occured on Windows, preventing building properly after 255 the error was fixed in the source code. 256 257 - ndk-build: Fix a Cygwin-specific bug where using very short paths for 258 the Android NDK installation or the project path could lead to the 259 generation of invalid dependency files, making incremental builds 260 impossible. 261 262 - Fix a typo that prevented the cpufeatures library to work correctly 263 with the new NDK toolchain. 264 265 - Linux toolchain binaries now run on Ubuntu 8.04 or higher. 266 More specifically, the r5 binaries did require GLibc 2.11 on the host 267 system, and refused to run with previous releases due to an ABI mismatch 268 in the GNU C Library. The r5b binaries are generated with a special 269 toolchain that instead targets GLibc 2.7 or higher. 270 271 - GNU libstdc++ will not crash anymore when printing floating-point values 272 through i/o streams. 273 274 OTHER FIXES & CHANGES: 275 276 - ndk-build: Speed-up the Cygwin build by avoiding calling "cygpath -m" 277 from GNU Make for each and every source or object file. This was a problem 278 for users with very large source trees. 279 280 In case this doesn't work properly, define NDK_USE_CYGPATH=1 in your 281 environment to use 'cygpath -m' as usual. 282 283 Also, if 'cygpath' is not in your path, completely ignore it 284 (seems to be enough to run the NDK under MSys). 285 286 - ndk-build: Handle installation paths containing spaces when checking 287 cygwin installation. Before that, the script complained that the user 288 was using an incorrect version of GNU Make (even if he had the right one). 289 290 - Fixed a typo that prevented several NDK_MODULE_PATH to work properly when 291 it contained multiple directories separated with ":" 292 293 - prebuilt-common.sh: Make the script check the compiler directly for 64-bit 294 generated machine code, instead of relying on the host tag. That should 295 allow the 32-bit toolchain to rebuild properly on Snow Leopard. 296 297 - prebuilt-common.sh: Fix the toolchain rebuild scripts to work when 298 using a 32-bit host toolchain. 299 300 - <netinet/in.h>: Add missing declaration for INET_ADDRSTRLEN 301 - <netinet/in6.h>: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL 302 and IN6_IS_ADDR_MC_GLOBAL. 303 304 - <asm/byteorder.>: Replaced 'asm' with '__asm__' to allow compilation 305 with -std=c99. See https://review.source.android.com/#change,20076 306 307 - standalone toolchain: The -fpic flag is now the default for the 308 arm-linux-androideabi toolchain, instead of -fPIC. This avoids a performance 309 degradation when compared to the old android-eabi configuration. 310 311 This only affects users of the standalone toolchain. The NDK build script 312 always enforced -fpic implicitely. 313 314 ------------------------------------------------------------------------------- 315 android-ndk-r5 316 317 IMPORTANT BUG FIXES: 318 319 - Allow dlclose() to properly call static C++ destructors when unloading 320 a shared library. This requires changes in both the C library and the 321 build system. IMPORTANT: This feature is only available for API level 9. 322 323 - Fix packaging error for system libraries of level 5 and 8. The libraries 324 bundled with the NDK and used at link time were not the correct version, 325 and this prevented linking against certain symbols appropriately. 326 327 - ndk-gdb: do not start activity unless --start or --launch is used. 328 (the documentation was correct, the implementation wrong) 329 330 - The system headers for all API levels have been cleaned up and will 331 not provide the declarations of functions that are not available in 332 the corresponding system libraries. 333 334 IMPORTANT CHANGES: 335 336 - Support for API level 9, (a.k.a. Android 2.3) which adds the following 337 native features to the platform: 338 339 - Native audio API based on the Khronos Group OpenSL ES™ 1.0.1 Standard. 340 New headers <SLES/OpenSLES.h> and <SLES/OpenSLES_Android.h> 341 are provided to allow applications targeting this API level to perform 342 audio input, output and processing directly from native code. 343 344 - Native activity support, i.e. the ability to build applications that 345 are coded entirely in C or C++. More precisely, such applications still 346 run inside a VM, and will have to access most of the platform's features 347 using JNI (i.e. native code calling VM methods). However, this also 348 comes with a series of headers and libraries to implement the following 349 directly from native code: 350 351 - activity lifecycle management. 352 - user input handling (touch, keyboard, trackball, ...). 353 - window management (including accessing the pixel buffer). 354 - sensor listeners (e.g. accelerometer, compass, ...). 355 - hardware configuration management. 356 - easily reading assets out of an APK from native code. 357 - access to the storage manager, a new feature of Android X.X 358 that allows one to provide Opaque Binary Objects containing 359 large amounts of data outside of the APK. 360 361 See the documentation in docs/STABLE-APIS.html for more details. 362 363 Note that most of these new features are targeted at game developers. 364 365 - Improved gdbserver binary to allow debugging _threaded_ programs properly 366 with ndk-gdb (the previous binary could only set breakpoints on the main 367 thread). 368 369 IMPORTANT: THIS ONLY WORKS IF YOU RUN ON ANDROID 2.3 OR HIGHER. 370 371 The root cause of the problem is a platform bug that was only fixed in 372 2.3. If you try to debug on a previous platform, the gdbserver binary 373 will only be able to set breakpoints on the main thread. 374 375 For more information, see the specific section in docs/NDK-GDB.html. 376 377 - Easier debuggable builds: just invoke ndk-build while defining the 378 NDK_DEBUG variable to 1, as in: 379 380 $NDK/ndk-build NDK_DEBUG=1 381 382 This will have the same result that setting the android:debuggable="true" 383 in the <application> element of your AndroidManifest.xml file. See the 384 file docs/NDK-BUILD.html for more details. 385 386 Note that you will need to use the SDKr8 build tools to use this feature 387 properly! 388 389 - Refresh of system C++ headers: 390 391 - Headers have been moved out of the platform directory hierarchy. 392 This is to prevent conflicts with other STLs like STLport or the 393 GNU libstdc++ which provide their own version of the headers, but 394 does not affect your builds. 395 396 - The list of headers has grown to include the following: 397 398 cassert, cctype, cerrno, cfloat, climits, cmath, 399 csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib, 400 cstring, ctime, cwchar, new, typeinfo, utility 401 402 Note that they still correspond to our minimal C++ runtime, no new feature 403 was introduced here. 404 405 - Support for C++ exceptions and RTTI. See docs/CPLUSPLUS-SUPPORT.html for 406 all details (and limitations). 407 408 - STLport implementation: Add sources and prebuilt binaries for a port of 409 the STLport C++ Standard Library (www.stlport.org), and an easy way to use 410 it at build time by defining APP_STL in your Application.mk. See 411 docs/APPLICATION-MK.html and docs/CPLUSPLUS-SUPPORT.html for all details. 412 413 - GNU libstdc++ implementation: Available as a static library that you can 414 select for your application through APP_STL. See docs/CPLUSPLUS-SUPPORT.html 415 for all details. 416 417 - Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and 418 PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation 419 file named docs/PREBUILTS.html for explanations and usage examples. 420 421 - Support for module exports: A module can now define a set of compiler or 422 linker flags that will be automatically 'imported' by any other module that 423 depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES. 424 425 This is achieved with the help of new Android.mk variables named 426 LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and 427 LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and 428 a 'samples/module-exports' for a sample project that uses this. 429 430 - Add support to specify a different file name for generated files, through 431 the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an 432 example. 433 434 - Add support for module imports, through the NDK_MODULE_PATH environment 435 variable and the new 'import-module' function. This allows you to avoid 436 hard-coding the path of third-party modules into your project files. 437 438 See docs/IMPORT-MODULE.html for details. 439 440 - Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging 441 easier. Also fixes an issue that prevented clean parallel builds of 442 debuggable applications to work correctly. This fixes an error message that 443 said: 444 445 /bin/sh: <project>/libs/armeabi/gdb.setup: No such file or directory 446 447 When doing a "ndk-build -j<number>", with <number> bigger than 1. 448 449 - Add support for assembly-level source filtering. See the description of 450 LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful 451 for certain kinds of obfuscation tasks. 452 453 - This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3) 454 which provides many benefits, including: 455 456 - Better code generation than the previous one (gcc-4.4.0) 457 - On Windows, the binaries do not depend on Cygwin anymore. 458 - The ability to use it as a stand-alone cross-compiler 459 (see docs/STANDALONE-TOOLCHAIN.html for all details). 460 461 The binaries for gcc-4.4.0 are still provided for backwards compatibility. 462 Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage. 463 Note that it is now deprecated and will be removed in a future NDK release. 464 465 IMPORTANT: The old toolchain doesn't properly support exceptions, RTTI, 466 STLport and GNU libstdc++. 467 468 The binaries for the already-deprecated gcc-4.2.1 have been removed. 469 470 - The 'cpufeatures' library has been updated to provide better architecture 471 and features detection (including a work-around for buggy ARMv6 kernels 472 which report an architecture version of 7). 473 474 The library is now also available as an import module, to simplify its 475 usage in your build scripts. See the updated docs/CPU-FEATURES.html file 476 for details. 477 478 NOTE: Please update your Android.mk to use module imports as soon as 479 possible. The location $NDK/source/cpufeatures/ is deprecated 480 and will be removed in a future NDK release. Avoid referencing 481 it directly in your build scritps! 482 483 OTHER FIXES AND CHANGES: 484 485 - Reduced the size of generated binaries by using --strip-unneeded 486 instead of --strip-debug. This gets rid of mor symbol table entries 487 in release shared libraries and executables, without impacting 488 runtime execution. 489 490 - Fix bad automatic dependency tracking when using multiple source 491 sub-directories. 492 493 - The path to system headers is now included last in the compilation command 494 line. This prevents conflicts with source code that define their own headers 495 with similar names (e.g. a custom "err.h" was ignored, because the system 496 <err.h> was used instead). 497 498 - Update documentation for 'my-dir' function to explain that, due to the 499 way GNU Make works, it really returns the path of the last included 500 Makefile (instead of the current one). Also provide examples on how 501 to deal with it. 502 503 - make-release.sh: Now has an --out-dir=<path> option to specify the 504 output directory where the packages are going to be copied. Also 505 ensure that generated packages have go+r permissions. 506 507 - ndk-build will now properly escape arguments. This means that something 508 like this: 509 510 ndk-build MY_CFLAGS="-DFOO -DBAR" 511 512 will now work correctly. 513 514 - Add --git-http option to download-toolchain-sources.sh and 515 rebuild-all-prebuilt.sh in order to download sources from 516 android.git.kernel.org through HTTP. 517 518 - ndk-gdb: properly launch activities for which name does not contain any dot. 519 520 - ndk-gdb: add --delay=<timeout> option to specify a delay in seconds 521 between activity launch and gdbserver attach. This is needed because certain 522 activities can take a long time to properly launch. The default delay is 523 also increased to 2 seconds (instead of 1). 524 525 - build/tools/build-gcc.sh: copy the sysroot to the build directory. This 526 avoids the generated toolchain binaries from hard-coding host build paths. 527 528 - Platform files are now under $NDK/platforms instead of $NDK/build/platforms 529 530 - Toolchain files are now under $NDK/toolchains instead of 531 $NDK/build/toolchains and $NDK/build/prebuilt. 532 533 - Release and debug objects are stored under two different directories now 534 (i.e. obj/local/<abi>/objs and obj/local/<abi>/objs-debug). This 535 prevents rebuilding *everything* when you switch between these two modes, 536 which can be a real time-saver for complex projects. 537 538 - Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command 539 when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true' 540 541 ------------------------------------------------------------------------------- 542 android-ndk-r4b 543 544 This release fixes a few bugs in r4 scripts. There are no new features. 545 546 OTHER FIXES & CHANGES: 547 548 - build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'. 549 Fix the script (and others in the same directory) to do that properly. 550 551 - ndk-gdb: check the target device's API level, and dump an error message if 552 it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly 553 remove control characters like '\r' from adb shell's output. Also fix 554 script to work properly with OS X's BSD awk. 555 556 - ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try 557 to look for jni/Android.mk if no manifest is found. If you don't use this, 558 you can also define NDK_PROJECT_PATH to point to your tree. 559 560 Also, on Windows, check that a Cygwin-compatible make executable is being 561 used, and dump a readable help message to solve the issue if this is not 562 the case. 563 564 - Place generated binaries under $PROJECT_PATH/obj/ instead of 565 $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned 566 by the JDT, resulting in the inability to properly load symbol versions 567 of the shared libraries when running ndk-gdb. 568 569 - Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES. 570 Previous behaviour was to silently ignore them. 571 572 - Set the optimization mode to 'debug' automatically if the manifest sets 573 android:debuggable to 'true'. You can override this by using 574 'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to 575 your LOCAL_CFLAGS. 576 577 Note that even in release mode, the NDK build scripts will produce 578 binaries with symbols under obj/local/<abi>/ that will be used for 579 debugging with gdb. However, the debugger will have a harder time to 580 print proper local variable values that have been optimized out or 581 even set breakpoints properly. 582 583 ------------------------------------------------------------------------------- 584 android-ndk-r4 585 586 IMPORTANT BUG FIXES: 587 588 - The <fenv.h> header was not placed in the correct location and could not 589 be found by normal builds. 590 591 IMPORTANT CHANGES: 592 593 - On Windows, Cygwin 1.7 or higher is now required. The NDK will not 594 work properly with Cygwin 1.5 which is now officially obsolete 595 anyway. 596 597 - Simplified build system: You no longer need to run build/host-setup.sh 598 or modify anything under $NDK_ROOT/apps/. Instead, just invoke the 599 new 'ndk-build' script from your application's project directory, or 600 one of its sub-directories. 601 602 See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details. 603 604 NOTE: For compatibility purpose, you can still define projects 605 through $NDK_ROOT/apps/<name> though. 606 607 However, not that sample applications have moved from 608 'apps/<name>/project' to 'samples/<name>' and now must 609 be built with 'ndk-build'. The source code of pre-existing 610 samples didn't change though. 611 612 - Easy native debugging support when running debuggable applications 613 on Android 2.2 or higher, through the new 'ndk-gdb' helper script. 614 See docs/NDK-GDB.html for details. 615 616 - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI 617 corresponding to ARMv7-a class devices. 618 619 Note that by default, the NDK will still generate machine code for the old 620 'armeabi' ABI (ARMv5TE based) which is supported by all official Android 621 system images to date. 622 623 You will need to define APP_ABI in your Application.mk file to change this. 624 See docs/APPLICATION-MK.html 625 626 More details about ABIs is now available in docs/CPU-ARCH-ABIS.html 627 628 - A small static library named 'cpufeatures' is provided with source code 629 and can be used at runtime to determine the CPU features supported by the 630 target device. It should run on all Android platforms, starting from 1.5. 631 632 For more information, see docs/CPU-FEATURES.html 633 634 - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set 635 extension through the use the LOCAL_ARM_NEON variable in Android.mk, or 636 the '.neon' suffix when listing source files. 637 638 Neon is an *optional* instruction set extension, and not all Android ARMv7 639 devices will support it. You will need to use the 'cpufeatures' library to 640 determine if such code can be used at runtime, and provide alternate code 641 paths if this is not the case. This is similar to MMX/SSE/3DNow on x86 642 platforms. 643 644 For more information, see docs/CPU-ARM-NEON.html 645 646 - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures' 647 and NEON intrinsics and build support. 648 649 - Added <android/bitmap.h>, a new stable API available from android-8 650 (a.k.a. Android 2.2) to reliably access the pixel buffer of an 651 android.graphics.Bitmap object from native code. See docs/STABLE-API.html 652 and the new sample program under 'samples/bitmap-plasma' for details 653 and usage example. 654 655 - Support the NX (No Execute) security feature, where special sections 656 are added to the generated shared libraries to instruct the kernel 657 that code shall not be executed from the heap and stack by default. 658 659 See docs/ANDROID-MK.html to see how to disable this, plus reference 660 links for more information. 661 662 OTHER FIXES AND CHANGES: 663 664 - support the .s extension for raw assembly sources (.S is already supported 665 but the input files are parsed by the C-preprocessor before being sent to 666 the assembler). 667 668 - build/host-setup.sh has been removed. There is no need for a 'setup' step 669 when using the NDK for the first time. All host-specific autodetection and 670 basic tool sanity checking have been moved to the build scripts themselves. 671 672 - APP_MODULES in Application.mk is now optional. If not defined, the NDK 673 will simply build _all_ the modules that are declared from your Android.mk. 674 675 You can still use APP_MODULES to restrict the set of modules you want to 676 build. Note that the NDK now computes the transitive dependencies of these 677 modules for you now. See docs/APPLICATION-MK.html for details. 678 679 - docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library 680 (libdl.so). It is actually supported by all API levels. 681 682 - build/tools/download-toolchain-sources.sh: Use 'master' branch by default 683 instead of the 'eclair' one. 684 685 - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding 686 them. This is primarily to ease development. All you need to do is put a patch 687 under build/tools/toolchain-patches/<foo>/<name>.patch, and it will be applied 688 with 'patch -p1' into the <foo> directory of the unpacked toolchain sources 689 before the configure step. 690 691 - docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI. 692 693 - build/core/mkdeps.sh: Removed obsolete script. 694 695 - the NDK build script now only parses the Application.mk and Android.mk of 696 the applications listed by APP. The error messages when APP is empty or 697 malformed have also been improved. 698 699 - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4' 700 warning when building with GCC 4.4.0 for ARM. 701 702 - C Library header fixes: 703 704 For all platforms: 705 706 - <arpa/inet.h>: no longer includes <netinet/in6.h>. 707 - <ctype.h>: better inlining with -ansi option. 708 - <mntent.h>: add missing include for <stdio.h>. 709 - <netinet/in.h>: include <netinet/in6.h> and define in6addr_any + 710 in6addr_loopback. 711 - <netinet/in6.h>: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, 712 IN6ADDR_ANY_INIT, ipv6mr_interface. 713 - <sys/epoll.h>: add missing C++ inclusion guards. 714 - <sys/resource.h>: add missing rlim_t declaration. 715 - <sys/system_properties.h>: add missing C++ inclusion guards. 716 - <time64.h>: add missing C++ inclusion guards. 717 - <netdb.h>: move h_errno declaration inside C++ inclusion guards. 718 719 - C Library changes: 720 721 For android-8 (a.k.a. Android 2.2): 722 723 - <dlfcn.h>: add DL_info and dladdr(). 724 - <err.h>: add err(), warn() and other variants. 725 - <regex.h>, <fts.h>, <sys/queue.h>: added 726 - <pthread.h>: add pthread_condattr_t 727 - <sched.h>: added proper clone() declaration (and implementation). 728 - <signal.h>: added killpg(). 729 - <stdio.h>: add fdprintf() and vfdprintf(). 730 - <stdlib.h>: fix ptsname_r() signature in declaration. previous 731 implementation was broken anyway. 732 - <unistd.h>: add getusershell(), setusershell(), endusershell(), 733 ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature 734 (now returns int). 735 - <wchar.h>: add fake mbstowcs() and wcstombs(). 736 737 More details available under docs/system/libc/CHANGES.html 738 739 ------------------------------------------------------------------------------- 740 android-ndk-r3 741 742 IMPORTANT BUG FIXES: 743 744 - Fix build/host-setup.sh to execute as a Bourne shell script (again) 745 746 - Make target shared libraries portable to systems that don't use the exact 747 same toolchain. This is needed due to differences in libgcc.a implementations 748 between gcc 4.2.1 and 4.4.0. This change ensures that generated machine 749 code doesn't depend on helper functions provided by the Android platform 750 runtime. 751 752 753 IMPORTANT CHANGES: 754 755 - GCC 4.4.0 is now used by default by the NDK. It generates better code than 756 GCC 4.2.1, which was used in previous releases. However, the compiler's C++ 757 frontend is also a lot more pedantic regarding certain template constructs 758 and will even refuse to build some of them. 759 760 For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and 761 you can force its usage by defining NDK_TOOLCHAIN in your environment to 762 the value 'arm-eabi-4.2.1'. For example: 763 764 export NDK_TOOLCHAIN=arm-eabi-4.2.1 765 make APP=hello-jni 766 767 Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We 768 recommend switching to 4.2.1 *only* if you encounter compilation problems 769 with 4.4.0. 770 771 The 4.2.1 prebuilt binaries will probably be removed from a future release 772 of the Android NDK, we thus *strongly* invite you to fix your code if such 773 problems happen. 774 775 - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to 776 reflect Android 2.0 (previously the Eclair branch). This is merely a copy 777 of android-4 that also includes headers and libraries for OpenGL ES 2.0. 778 779 See the sample named "hello-gl2" for a *very* basic demonstration. Note that 780 OpenGL ES 2.0 is currently *not* available from Java, and must be used 781 through native code exclusively. 782 783 IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this 784 time. Running/testing any native code that depends on it thus 785 requires a real device. 786 787 - The NDK build script will now remove installed binaries from the application 788 project's path before starting the build. This ensures that: 789 790 - if the build fails for some reason, a stale/obsolete file is not left in 791 your application project tree by mistake. 792 793 - if you change the target ABI, a stale/obsolete file is not left into the 794 folder corresponding to the old ABI. 795 796 797 - Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0 798 issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and 799 2.0 on specific devices only, need for <uses-feature> tag in manifest). 800 801 802 OTHER FIXES AND CHANGES: 803 804 - Actually use the awk version detected by host-setup.sh during the build. 805 806 - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set 807 to 'true', just like the documentation says it works. Also fix a typo 808 in CLEAR_VARS that prevented this variable from being cleared properly. 809 810 - Simplified build/tools/make-release.sh, the --prebuilt-dir option is 811 gone, and --help will dump a clearer description of expected options 812 and input files. 813 814 - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to 815 package a new experimental NDK package archive from the current source tree 816 plus the toolchain binaries of an existing NDK release package. E.g.: 817 818 build/tools/make-release.sh \ 819 --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip 820 821 will generate a new NDK package in /tmp/ndk-release that contains the most 822 up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which 823 are not in the git repository). 824 825 Also added the --no-git option to collect all sources from the current 826 NDK root directory, instead of the list given by 'git ls-files'. This can 827 be useful if you don't want to checkout the whole 'platform/development' 828 project from repo and still work on the NDK. 829 830 This change is to help people easily package experimental NDK releases to 831 test and distribute fixes and improvements. 832 833 - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to 834 build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04) 835 836 - Remove bash-ism from build/tools/build-ndk-sysroot.sh 837 838 - Refresh C library headers for all platforms: 839 840 - make <endian.h> simply include <sys/endian.h> 841 - make <stdint.h> properly declare 64-bit integer types with a C99 compiler 842 - add missing <sys/types.h> to <strings.h> 843 - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and 844 st_ctimensec) to <stat.h> 845 - add missing declaration for tzset() in <time.h> 846 847 - Added build/tools/download-toolchain-sources.sh, a script that allows you 848 to download the toolchain sources from the official open-source repository 849 at android.git.kernel.org and nicely package them into a tarball that can 850 later be used by build/tools/build-toolchain.sh to rebuild the prebuilt 851 binaries for your system. 852 853 - Updated build/tools/build-toolchain.sh to support the tarballs generated 854 by download-toolchain-sources.sh with the --package=<file> option. This 855 also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to 856 gcc 4.4.0. 857 858 ------------------------------------------------------------------------------- 859 android-ndk-1.6_r1 860 861 IMPORTANT BUG FIXES: 862 863 - Fix build/host-setup.sh to: 864 * execute as a Bourne shell script 865 * remove unused host gcc dependency 866 * improve Windows host auto-detection 867 * add GNU Make version check 868 * add Nawk/Gawk check 869 * ensure that the script is run from $NDKROOT as build/host-setup.sh 870 * add --help, --verbose, --no-awk-check and --no-make-check options 871 872 - Properly add sysroot library search path at build time. This makes a line 873 in Android.mk like: 874 875 LOCAL_LDLIBS := -lz 876 877 Actually work correctly, instead of having the linker complaining that it 878 could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS 879 in $(CLEAR_VARS) script. 880 881 882 IMPORTANT CHANGES: 883 884 - The 'sources' directory is gone. The NDK build system now looks for 885 $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with 886 the new APP_BUILD_SCRIPT variable in Application.mk 887 888 For example, the 'hello-jni' sample uses the following files: 889 890 apps/hello-jni/project/jni/Android.mk 891 apps/hello-jni/project/jni/hello-jni.c 892 893 The 'apps/<name>' directory is still needed in this release though. 894 895 - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build 896 system. This means that: 897 898 - LOCAL_CFLAGS is now used for *both* C and C++ sources (was only for C) 899 - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++) 900 - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete. 901 (will disappear in next release) 902 903 Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly. 904 905 - Rename build/platforms/android-1.5 to build/platforms/android-3 to match 906 the Android API level instead of the marketing speak. 907 908 Also add a new build/platforms/android-4, and make the build system select 909 which platform to use based on the content of the project file named 910 $(APP_PROJECT_PATH)/default.properties. 911 912 - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs. 913 (NOTE: they are *not* available for android-3) 914 915 Also provide a small port of the "San Angeles Observation" demo to show 916 how to make a simple Android application that uses them. 917 918 919 OTHER FIXES AND CHANGES 920 921 - Ensure that the __ANDROID__ macro is always defined when building code 922 with the NDK. Normally, the macro must be defined by the toolchain 923 automatically to indicate that you're targeting the Android runtime. 924 925 This works for the new arm-linux-androideabi toolchain, but there is 926 a bug in the way we built the arm-eabi one, so add the flag manually 927 through the NDK build script for it. 928 929 Note that the ANDROID macro, is now deprecated. While it is still defined 930 by the NDK, you should modify your code to test against __ANDROID__ instead! 931 932 - Generate thumb binaries by default. 933 934 - Add support for LOCAL_ARM_MODE in Android.mk. 935 936 - Add support for the '.arm' suffix in source file names to force the 937 compilation of a single source in ARM (32-bit) mode. 938 939 - Generate proper unoptimized versions of binaries when APP_OPTIM := debug 940 941 - Add support for LOCAL_C_INCLUDES in Android.mk 942 943 - Fix compilation of assembler files (e.g. foo.S) 944 945 ------------------------------------------------------------------------------- 946 android-ndk-1.5_r1 released. 947 </pre></body></html> 948