Home | History | Annotate | Download | only in docs
      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 &amp; 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 - &lt;android/input.h&gt;: 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 &amp; 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 - &lt;pthread.h&gt;: 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 &amp; 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 - &lt;netinet/in.h&gt;: Add missing declaration for INET_ADDRSTRLEN
    301 - &lt;netinet/in6.h&gt;: Add missing declaration for IN6_IS_ADDR_MC_NODELOCAL
    302   and IN6_IS_ADDR_MC_GLOBAL.
    303 
    304 - &lt;asm/byteorder.&gt;: 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&#0153; 1.0.1 Standard.
    340        New headers &lt;SLES/OpenSLES.h&gt; and &lt;SLES/OpenSLES_Android.h&gt;
    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 &lt;application&gt; 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: &lt;project&gt;/libs/armeabi/gdb.setup: No such file or directory
    446 
    447   When doing a "ndk-build -j&lt;number&gt;", with &lt;number&gt; 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   &lt;err.h&gt; 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=&lt;path&gt; 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=&lt;timeout&gt; 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/&lt;abi&gt;/objs and obj/local/&lt;abi&gt;/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 &amp; 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/&lt;abi&gt;/ 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 &lt;fenv.h&gt; 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/&lt;name&gt; though.
    606 
    607         However, not that sample applications have moved from
    608         'apps/&lt;name&gt;/project' to 'samples/&lt;name&gt;' 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 &lt;android/bitmap.h&gt;, 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/&lt;foo&gt;/&lt;name&gt;.patch, and it will be applied
    688   with 'patch -p1' into the &lt;foo&gt; 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         - &lt;arpa/inet.h&gt;: no longer includes &lt;netinet/in6.h&gt;.
    707         - &lt;ctype.h&gt;: better inlining with -ansi option.
    708         - &lt;mntent.h&gt;: add missing include for &lt;stdio.h&gt;.
    709         - &lt;netinet/in.h&gt;: include &lt;netinet/in6.h&gt; and define in6addr_any +
    710           in6addr_loopback.
    711         - &lt;netinet/in6.h&gt;: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
    712           IN6ADDR_ANY_INIT, ipv6mr_interface.
    713         - &lt;sys/epoll.h&gt;: add missing C++ inclusion guards.
    714         - &lt;sys/resource.h&gt;: add missing rlim_t declaration.
    715         - &lt;sys/system_properties.h&gt;: add missing C++ inclusion guards.
    716         - &lt;time64.h&gt;: add missing C++ inclusion guards.
    717         - &lt;netdb.h&gt;: 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         - &lt;dlfcn.h&gt;: add DL_info and dladdr().
    724         - &lt;err.h&gt;: add err(), warn() and other variants.
    725         - &lt;regex.h&gt;, &lt;fts.h&gt;, &lt;sys/queue.h&gt;: added
    726         - &lt;pthread.h&gt;: add pthread_condattr_t
    727         - &lt;sched.h&gt;: added proper clone() declaration (and implementation).
    728         - &lt;signal.h&gt;: added killpg().
    729         - &lt;stdio.h&gt;: add fdprintf() and vfdprintf().
    730         - &lt;stdlib.h&gt;: fix ptsname_r() signature in declaration. previous
    731           implementation was broken anyway.
    732         - &lt;unistd.h&gt;: add getusershell(), setusershell(), endusershell(),
    733           ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
    734           (now returns int).
    735         - &lt;wchar.h&gt;: 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 &lt;uses-feature&gt; 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 &lt;endian.h&gt; simply include &lt;sys/endian.h&gt;
    841     - make &lt;stdint.h&gt; properly declare 64-bit integer types with a C99 compiler
    842     - add missing &lt;sys/types.h&gt; to &lt;strings.h&gt;
    843     - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
    844       st_ctimensec) to &lt;stat.h&gt;
    845     - add missing declaration for tzset() in &lt;time.h&gt;
    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=&lt;file&gt; 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/&lt;name&gt;' 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