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