Home | History | Annotate | Download | only in docs
      1 <html><body><pre>Android NDK ChangeLog:
      2 
      3 -------------------------------------------------------------------------------
      4 android-ndk-r5
      5 
      6 IMPORTANT BUG FIXES:
      7 
      8 - Allow dlclose() to properly call static C++ destructors when unloading
      9   a shared library. This requires changes in both the C library and the
     10   build system. IMPORTANT: This feature is only available for API level 9.
     11 
     12 - Fix packaging error for system libraries of level 5 and 8. The libraries
     13   bundled with the NDK and used at link time were not the correct version,
     14   and this prevented linking against certain symbols appropriately.
     15 
     16 - ndk-gdb: do not start activity unless --start or --launch is used.
     17   (the documentation was correct, the implementation wrong)
     18 
     19 - The system headers for all API levels have been cleaned up and will
     20   not provide the declarations of functions that are not available in
     21   the corresponding system libraries.
     22 
     23 IMPORTANT CHANGES:
     24 
     25 - Support for API level 9, which adds the following native features to the
     26   platform:
     27 
     28      - Native audio API through the OpenSL ES Standard.
     29        New headers &lt;SLES/OpenSLES.h&gt; and &lt;SLES/OpenSLES_Android.h&gt; are
     30        provided to allow applications targetting this API level to perform
     31        low-latency audio input, output and processing directly from native
     32        code.
     33 
     34      - Native activity support, i.e. the ability to build applications that
     35        are coded entirely in C or C++. More precisely, such applications still
     36        run inside a VM, and will have to access most of the platform's features
     37        using JNI (i.e. native code calling VM methods). However, this also
     38        comes with a series of headers and libraries to implement the following
     39        directly from native code:
     40 
     41           - activity lifecycle management.
     42           - user input handling (touch, keyboard, trackball, ...).
     43           - window management (including accessing the pixel buffer).
     44           - sensor listeners (e.g. accelerometer, compass, ...).
     45           - hardware configuration management.
     46           - easily reading assets out of an APK from native code.
     47           - access to the storage manager, a new feature of Android X.X
     48             that allows one to provide Opaque Binary Objects containing
     49             large amounts of data outside of the APK.
     50 
     51        See the documentation in docs/STABLE-APIS.html for more details.
     52 
     53        Note that most of these new features are targetted at game developers.
     54 
     55 - Easier debuggable builds: just invoke ndk-build while defining the
     56   NDK_DEBUG variable to 1, as in:
     57 
     58       $NDK/ndk-build NDK_DEBUG=1
     59 
     60   This will have the same result that setting the android:debuggable="true"
     61   in the &lt;application&gt; element of your AndroidManifest.xml file. See the
     62   file docs/NDK-BUILD.html for more details.
     63 
     64   Note that you will need to use the SDKr8 build tools to use this feature
     65   properly!
     66 
     67 - Refresh of system C++ headers:
     68 
     69      - Headers have been moved out of the platform directory hierarchy.
     70        This is to prevent conflicts with other STLs like STLport or the
     71        GNU libstdc++ which provide their own version of the headers, but
     72        does not affect your builds.
     73 
     74      - The list of headers has grown to include the following:
     75 
     76             cassert, cctype, cerrno, cfloat, climits, cmath,
     77             csetjmp, csignal, cstddef, cstdint, cstdio, cstdlib,
     78             cstring, ctime, cwchar, new, typeinfo, utility
     79 
     80     Note that they still correspond to our minimal C++ runtime, no new feature
     81     was introduced here.
     82 
     83 - Add support for prebuilt libraries with the PREBUILT_SHARED_LIBRARY and
     84   PREBUILT_STATIC_LIBRARIES build scripts. See the new documentation
     85   file named docs/PREBUILTS.html for explanations and usage examples.
     86 
     87 - Support for module exports: A module can now define a set of compiler or
     88   linker flags that will be automatically 'imported' by any other module that
     89   depends on it, through LOCAL_STATIC_LIBRARIES or LOCAL_SHARED_LIBRARIES.
     90 
     91   This is achieved with the help of new Android.mk variables named
     92   LOCAL_EXPORT_CFLAGS, LOCAL_EXPORT_CPPFLAGS, LOCAL_EXPORT_C_INCLUDES and
     93   LOCAL_EXPORT_LDLIBS. See docs/ANDROID-MK.html for mode documentation, and
     94   a 'samples/module-exports' for a sample project that uses this.
     95 
     96 - Add support to specify a different file name for generated files, through
     97   the new LOCAL_MODULE_FILENAME variable. See docs/ANDROID-MK.html for an
     98   example.
     99 
    100 - Add support for module imports, through the NDK_MODULE_PATH environment
    101   variable and the new 'import-module' function. This allows you to avoid
    102   hard-coding the path of third-party modules into your project files.
    103 
    104   See docs/IMPORT-MODULE.html for details.
    105 
    106 - Add the content of LOCAL_C_INCLUDES to gdb.setup to make native debugging
    107   easier. Also fixes an issue that prevented clean parallel builds of
    108   debuggable applications to work correctly. This fixes an error message that
    109   said:
    110 
    111       /bin/sh: &lt;project&gt;/libs/armeabi/gdb.setup: No such file or directory
    112 
    113   When doing a "ndk-build -j&lt;number&gt;", with &lt;number&gt; bigger than 1.
    114 
    115 - Add support for assembly-level source filtering. See the description of
    116   LOCAL_FILTER_ASM in docs/ANDROID-MK.html for more details. This can be useful
    117   for certain kinds of obfuscation tasks.
    118 
    119 - This NDK comes with a new toolchain (named arm-linux-androideabi-4.4.3)
    120   which provides many benefits, including:
    121 
    122      - Better code generation than the previous one (gcc-4.4.0)
    123      - On Windows, the binaries do not depend on Cygwin anymore.
    124      - The ability to use it as a stand-alone cross-compiler
    125        (see docs/STANDALONE-TOOLCHAIN.html for all details).
    126 
    127   The binaries for gcc-4.4.0 are still provided for backwards compatibility.
    128   Use NDK_TOOLCHAIN=arm-eabi-4.4.0 in your environment to force its usage.
    129   Note that it is now deprecated and will be removed in a future NDK release.
    130 
    131   The binaries for the already-deprecated gcc-4.2.1 have been removed.
    132 
    133 - This NDK comes with a port of the STLport library, provided as an import
    134   module. See sources/android/stlport/README for usage instructions.
    135 
    136   Warning: C++ exceptions and RTTI are still not supported.
    137 
    138 - The 'cpufeatures' library has been updated to provide better architecture
    139   and features detection (including a work-around for buggy ARMv6 kernels
    140   which report an architecture version of 7).
    141 
    142   The library is now also available as an import module, to simplify its
    143   usage in your build scripts. See the updated docs/CPU-FEATURES.html file
    144   for details.
    145 
    146   NOTE: Please update your Android.mk to use module imports as soon as
    147         possible. The location $NDK/source/cpufeatures/ is deprecated
    148         and will be removed in a future NDK release. Avoid referencing
    149         it directly in your build scritps!
    150 
    151 OTHER FIXES AND CHANGES:
    152 
    153 - Reduced the size of generated binaries by using --strip-unneeded
    154   instead of --strip-debug. This gets rid of mor symbol table entries
    155   in release shared libraries and executables, without impacting
    156   runtime execution.
    157 
    158 - Fix bad automatic dependency tracking when using multiple source
    159   sub-directories.
    160 
    161 - The path to system headers is now included last in the compilation command
    162   line. This prevents conflicts with source code that define their own headers
    163   with similar names (e.g. a custom "err.h" was ignored, because the system
    164   &lt;err.h&gt; was used instead).
    165 
    166 - Update documentation for 'my-dir' function to explain that, due to the
    167   way GNU Make works, it really returns the path of the last included
    168   Makefile (instead of the current one). Also provide examples on how
    169   to deal with it.
    170 
    171 - make-release.sh: Now has an --out-dir=&lt;path&gt; option to specify the
    172   output directory where the packages are going to be copied. Also
    173   ensure that generated packages have go+r permissions.
    174 
    175 - ndk-build will now properly escape arguments. This means that something
    176   like this:
    177 
    178      ndk-build  MY_CFLAGS="-DFOO -DBAR"
    179 
    180   will now work correctly.
    181 
    182 - Add --git-http option to download-toolchain-sources.sh and
    183   rebuild-all-prebuilt.sh in order to download sources from
    184   android.git.kernel.org through HTTP.
    185 
    186 - ndk-gdb: properly launch activities for which name does not contain any dot.
    187 
    188 - ndk-gdb: add --delay=&lt;timeout&gt; option to specify a delay in seconds between
    189   activity launch and gdbserver attach. This is needed because certain
    190   activities can take a long time to properly launch. The default delay is
    191   also increased to 2 seconds (instead of 1).
    192 
    193 - build/tools/build-gcc.sh: copy the sysroot to the build directory. This
    194   avoids the generated toolchain binaries from hard-coding host build paths.
    195 
    196 - Platform files are now under $NDK/platforms instead of $NDK/build/platforms
    197 
    198 - Toolchain files are now under $NDK/toolchains instead of
    199   $NDK/build/toolchains and $NDK/build/prebuilt.
    200 
    201 - Release and debug objects are stored under two different directories now
    202   (i.e. obj/local/&lt;abi&gt;/objs and obj/local/&lt;abi&gt;/objs-debug). This prevents
    203   rebuilding *everything* when you switch between these two modes, which can
    204   be a real time-saver for complex projects.
    205 
    206 - Fixed a bug that duplicated the LOCAL_LDFLAGS in the final link command
    207   when LOCAL_ALLOW_UNDEFINED_SYMBOLS was not set to 'true'
    208 
    209 -------------------------------------------------------------------------------
    210 android-ndk-r4b
    211 
    212 This release fixes a few bugs in r4 scripts. There are no new features.
    213 
    214 OTHER FIXES &amp; CHANGES:
    215 
    216 - build/tools/rebuild-all-prebuilt.sh: mktemp expects 'XXXXXX' instead of 'XXX'.
    217   Fix the script (and others in the same directory) to do that properly.
    218 
    219 - ndk-gdb: check the target device's API level, and dump an error message if
    220   it is not at least 8 (Android 2.2 a.k.a. Froyo). Fix script to properly
    221   remove control characters like '\r' from adb shell's output. Also fix
    222   script to work properly with OS X's BSD awk.
    223 
    224 - ndk-build: Make AndroidManifest.xml optional. Now the build scripts will try
    225   to look for jni/Android.mk if no manifest is found. If you don't use this,
    226   you can also define NDK_PROJECT_PATH to point to your tree.
    227 
    228   Also, on Windows, check that a Cygwin-compatible make executable is being
    229   used, and dump a readable help message to solve the issue if this is not
    230   the case.
    231 
    232 - Place generated binaries under $PROJECT_PATH/obj/ instead of
    233   $PROJECT_PATH/bin/ndk/. The 'bin' directory is sometimes cleaned
    234   by the JDT, resulting in the inability to properly load symbol versions
    235   of the shared libraries when running ndk-gdb.
    236 
    237 - Warn when sources with unsupported extensions are used in LOCAL_SRC_FILES.
    238   Previous behaviour was to silently ignore them.
    239 
    240 - Set the optimization mode to 'debug' automatically if the manifest sets
    241   android:debuggable to 'true'. You can override this by using
    242   'APP_OPTIM := release' in your Application.mk, or by adding '-O2' to
    243   your LOCAL_CFLAGS.
    244 
    245   Note that even in release mode, the NDK build scripts will produce
    246   binaries with symbols under obj/local/&lt;abi&gt;/ that will be used for
    247   debugging with gdb. However, the debugger will have a harder time to
    248   print proper local variable values that have been optimized out or
    249   even set breakpoints properly.
    250 
    251 -------------------------------------------------------------------------------
    252 android-ndk-r4
    253 
    254 IMPORTANT BUG FIXES:
    255 
    256 - The &lt;fenv.h&gt; header was not placed in the correct location and could not
    257   be found by normal builds.
    258 
    259 IMPORTANT CHANGES:
    260 
    261 - On Windows, Cygwin 1.7 or higher is now required. The NDK will not
    262   work properly with Cygwin 1.5 which is now officially obsolete
    263   anyway.
    264 
    265 - Simplified build system: You no longer need to run build/host-setup.sh
    266   or modify anything under $NDK_ROOT/apps/. Instead, just invoke the
    267   new 'ndk-build' script from your application's project directory, or
    268   one of its sub-directories.
    269 
    270   See docs/OVERVIEW.html and docs/NDK-BUILD.html for more details.
    271 
    272   NOTE: For compatibility purpose, you can still define projects
    273         through $NDK_ROOT/apps/&lt;name&gt; though.
    274 
    275         However, not that sample applications have moved from
    276         'apps/&lt;name&gt;/project' to 'samples/&lt;name&gt;' and now must
    277         be built with 'ndk-build'. The source code of pre-existing
    278         samples didn't change though.
    279 
    280 - Easy native debugging support when running debuggable applications
    281   on Android 2.2 or higher, through the new 'ndk-gdb' helper script.
    282   See docs/NDK-GDB.html for details.
    283 
    284 - Support for hardware FPU. This is through the new 'armeabi-v7a' ABI
    285   corresponding to ARMv7-a class devices.
    286 
    287   Note that by default, the NDK will still generate machine code for the old
    288   'armeabi' ABI (ARMv5TE based) which is supported by all official Android
    289   system images to date.
    290 
    291   You will need to define APP_ABI in your Application.mk file to change this.
    292   See docs/APPLICATION-MK.html
    293 
    294   More details about ABIs is now available in docs/CPU-ARCH-ABIS.html
    295 
    296 - A small static library named 'cpufeatures' is provided with source code
    297   and can be used at runtime to determine the CPU features supported by the
    298   target device. It should run on all Android platforms, starting from 1.5.
    299 
    300   For more information, see docs/CPU-FEATURES.html
    301 
    302 - Support for the optional ARM Advanced SIMD (a.k.a. NEON) instruction set
    303   extension through the use the LOCAL_ARM_NEON variable in Android.mk, or
    304   the '.neon' suffix when listing source files.
    305 
    306   Neon is an *optional* instruction set extension, and not all Android ARMv7
    307   devices will support it. You will need to use the 'cpufeatures' library to
    308   determine if such code can be used at runtime, and provide alternate code
    309   paths if this is not the case. This is similar to MMX/SSE/3DNow on x86
    310   platforms.
    311 
    312   For more information, see docs/CPU-ARM-NEON.html
    313 
    314 - Added a new sample (hello-neon) to demonstrate usage of 'cpufeatures'
    315   and NEON intrinsics and build support.
    316 
    317 - Added &lt;android/bitmap.h&gt;, a new stable API available from android-8
    318   (a.k.a. Android 2.2) to reliably access the pixel buffer of an
    319   android.graphics.Bitmap object from native code. See docs/STABLE-API.html
    320   and the new sample program under 'samples/bitmap-plasma' for details
    321   and usage example.
    322 
    323 - Support the NX (No Execute) security feature, where special sections
    324   are added to the generated shared libraries to instruct the kernel
    325   that code shall not be executed from the heap and stack by default.
    326 
    327   See docs/ANDROID-MK.html to see how to disable this, plus reference
    328   links for more information.
    329 
    330 OTHER FIXES AND CHANGES:
    331 
    332 - support the .s extension for raw assembly sources (.S is already supported
    333   but the input files are parsed by the C-preprocessor before being sent to
    334   the assembler).
    335 
    336 - build/host-setup.sh has been removed. There is no need for a 'setup' step
    337   when using the NDK for the first time. All host-specific autodetection and
    338   basic tool sanity checking have been moved to the build scripts themselves.
    339 
    340 - APP_MODULES in Application.mk is now optional. If not defined, the NDK
    341   will simply build _all_ the modules that are declared from your Android.mk.
    342 
    343   You can still use APP_MODULES to restrict the set of modules you want to
    344   build. Note that the NDK now computes the transitive dependencies of these
    345   modules for you now. See docs/APPLICATION-MK.html for details.
    346 
    347 - docs/STABLE-APIS.html: Add missing section for Dynamic Linker Library
    348   (libdl.so). It is actually supported by all API levels.
    349 
    350 - build/tools/download-toolchain-sources.sh: Use 'master' branch by default
    351   instead of the 'eclair' one.
    352 
    353 - build-toolchain.sh: Allow ad-hoc patching of toolchain sources when rebuilding
    354   them. This is primarily to ease development. All you need to do is put a patch
    355   under build/tools/toolchain-patches/&lt;foo&gt;/&lt;name&gt;.patch, and it will be applied
    356   with 'patch -p1' into the &lt;foo&gt; directory of the unpacked toolchain sources
    357   before the configure step.
    358 
    359 - docs/CPU-ARCH-ABIS.html: Mention the experimental 'x86' ABI.
    360 
    361 - build/core/mkdeps.sh: Removed obsolete script.
    362 
    363 - the NDK build script now only parses the Application.mk and Android.mk of
    364   the applications listed by APP. The error messages when APP is empty or
    365   malformed have also been improved.
    366 
    367 - removed the annoying 'the mangling of 'va_list' has changed in GCC 4.4'
    368   warning when building with GCC 4.4.0 for ARM.
    369 
    370 - C Library header fixes:
    371 
    372     For all platforms:
    373 
    374         - &lt;arpa/inet.h&gt;: no longer includes &lt;netinet/in6.h&gt;.
    375         - &lt;ctype.h&gt;: better inlining with -ansi option.
    376         - &lt;mntent.h&gt;: add missing include for &lt;stdio.h&gt;.
    377         - &lt;netinet/in.h&gt;: include &lt;netinet/in6.h&gt; and define in6addr_any +
    378           in6addr_loopback.
    379         - &lt;netinet/in6.h&gt;: add IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP,
    380           IN6ADDR_ANY_INIT, ipv6mr_interface.
    381         - &lt;sys/epoll.h&gt;: add missing C++ inclusion guards.
    382         - &lt;sys/resource.h&gt;: add missing rlim_t declaration.
    383         - &lt;sys/system_properties.h&gt;: add missing C++ inclusion guards.
    384         - &lt;time64.h&gt;: add missing C++ inclusion guards.
    385         - &lt;netdb.h&gt;: move h_errno declaration inside C++ inclusion guards.
    386 
    387 - C Library changes:
    388 
    389     For android-8 (a.k.a. Android 2.2):
    390 
    391         - &lt;dlfcn.h&gt;: add DL_info and dladdr().
    392         - &lt;err.h&gt;: add err(), warn() and other variants.
    393         - &lt;regex.h&gt;, &lt;fts.h&gt;, &lt;sys/queue.h&gt;: added
    394         - &lt;pthread.h&gt;: add pthread_condattr_t
    395         - &lt;sched.h&gt;: added proper clone() declaration (and implementation).
    396         - &lt;signal.h&gt;: added killpg().
    397         - &lt;stdio.h&gt;: add fdprintf() and vfdprintf().
    398         - &lt;stdlib.h&gt;: fix ptsname_r() signature in declaration. previous
    399           implementation was broken anyway.
    400         - &lt;unistd.h&gt;: add getusershell(), setusershell(), endusershell(),
    401           ttyname(), ttyname_r(), TEMP_FAILURE_RETRY. Fix usleep() signature
    402           (now returns int).
    403         - &lt;wchar.h&gt;: add fake mbstowcs() and wcstombs().
    404 
    405   More details available under docs/system/libc/CHANGES.html
    406 
    407 -------------------------------------------------------------------------------
    408 android-ndk-r3
    409 
    410 IMPORTANT BUG FIXES:
    411 
    412 - Fix build/host-setup.sh to execute as a Bourne shell script (again)
    413 
    414 - Make target shared libraries portable to systems that don't use the exact
    415   same toolchain. This is needed due to differences in libgcc.a implementations
    416   between gcc 4.2.1 and 4.4.0. This change ensures that generated machine
    417   code doesn't depend on helper functions provided by the Android platform
    418   runtime.
    419 
    420 
    421 IMPORTANT CHANGES:
    422 
    423 - GCC 4.4.0 is now used by default by the NDK. It generates better code than
    424   GCC 4.2.1, which was used in previous releases. However, the compiler's C++
    425   frontend is also a lot more pedantic regarding certain template constructs
    426   and will even refuse to build some of them.
    427 
    428   For this reason, the NDK also comes with GCC 4.2.1 prebuilt binaries, and
    429   you can force its usage by defining NDK_TOOLCHAIN in your environment to
    430   the value 'arm-eabi-4.2.1'. For example:
    431 
    432         export NDK_TOOLCHAIN=arm-eabi-4.2.1
    433         make APP=hello-jni
    434 
    435   Note that only the 'armeabi' ABI is supported by the 4.2.1 toolchain. We
    436   recommend switching to 4.2.1 *only* if you encounter compilation problems
    437   with 4.4.0.
    438 
    439   The 4.2.1 prebuilt binaries will probably be removed from a future release
    440   of the Android NDK, we thus *strongly* invite you to fix your code if such
    441   problems happen.
    442 
    443 - Support for OpenGL ES 2.0. This is through the new 'android-5' platform to
    444   reflect Android 2.0 (previously the Eclair branch). This is merely a copy
    445   of android-4 that also includes headers and libraries for OpenGL ES 2.0.
    446 
    447   See the sample named "hello-gl2" for a *very* basic demonstration. Note that
    448   OpenGL ES 2.0 is currently *not* available from Java, and must be used
    449   through native code exclusively.
    450 
    451   IMPORTANT: OpenGL ES 2.0 is not supported in the Android emulator at this
    452              time. Running/testing any native code that depends on it thus
    453              requires a real device.
    454 
    455 - The NDK build script will now remove installed binaries from the application
    456   project's path before starting the build. This ensures that:
    457 
    458   - if the build fails for some reason, a stale/obsolete file is not left in
    459     your application project tree by mistake.
    460 
    461   - if you change the target ABI, a stale/obsolete file is not left into the
    462     folder corresponding to the old ABI.
    463 
    464 
    465 - Updated the STABLE-APIS.html document to clarify the OpenGL ES 1.0/1.1/2.0
    466   issues regarding specific devices (i.e. 1.0 supported everywhere, 1.1 and
    467   2.0 on specific devices only, need for &lt;uses-feature&gt; tag in manifest).
    468 
    469 
    470 OTHER FIXES AND CHANGES:
    471 
    472 - Actually use the awk version detected by host-setup.sh during the build.
    473 
    474 - Only allow undefined symbols when LOCAL_ALLOW_UNDEFINED_SYMBOLS is set
    475   to 'true', just like the documentation says it works. Also fix a typo
    476   in CLEAR_VARS that prevented this variable from being cleared properly.
    477 
    478 - Simplified build/tools/make-release.sh, the --prebuilt-dir option is
    479   gone, and --help will dump a clearer description of expected options
    480   and input files.
    481 
    482 - Added --prebuilt-ndk=FILE option to build/tools/make-release.sh script to
    483   package a new experimental NDK package archive from the current source tree
    484   plus the toolchain binaries of an existing NDK release package. E.g.:
    485 
    486     build/tools/make-release.sh \
    487        --prebuilt-ndk=/path/to/android-ndk-1.6_r1-linux-x86.zip
    488 
    489   will generate a new NDK package in /tmp/ndk-release that contains the most
    490   up-to-date build scripts, plus the toolchain binaries from 1.6_r1 (which
    491   are not in the git repository).
    492 
    493   Also added the --no-git option to collect all sources from the current
    494   NDK root directory, instead of the list given by 'git ls-files'. This can
    495   be useful if you don't want to checkout the whole 'platform/development'
    496   project from repo and still work on the NDK.
    497 
    498   This change is to help people easily package experimental NDK releases to
    499   test and distribute fixes and improvements.
    500 
    501 - Remove bash-isms from build/tools/build-toolchain.sh. Now it's possible to
    502   build it with the 'dash' shell on Debian-based systems (tested on Ubuntu 8.04)
    503 
    504 - Remove bash-ism from build/tools/build-ndk-sysroot.sh
    505 
    506 - Refresh C library headers for all platforms:
    507 
    508     - make &lt;endian.h&gt; simply include &lt;sys/endian.h&gt;
    509     - make &lt;stdint.h&gt; properly declare 64-bit integer types with a C99 compiler
    510     - add missing &lt;sys/types.h&gt; to &lt;strings.h&gt;
    511     - add GLibc-compatible macro aliases (st_atimensec, st_mtimensec and
    512       st_ctimensec) to &lt;stat.h&gt;
    513     - add missing declaration for tzset() in &lt;time.h&gt;
    514 
    515 - Added build/tools/download-toolchain-sources.sh, a script that allows you
    516   to download the toolchain sources from the official open-source repository
    517   at android.git.kernel.org and nicely package them into a tarball that can
    518   later be used by build/tools/build-toolchain.sh to rebuild the prebuilt
    519   binaries for your system.
    520 
    521 - Updated build/tools/build-toolchain.sh to support the tarballs generated
    522   by download-toolchain-sources.sh with the --package=&lt;file&gt; option. This
    523   also builds both gcc 4.2.1 and 4.4.0, adding support for armeabi-v7a to
    524   gcc 4.4.0.
    525 
    526 -------------------------------------------------------------------------------
    527 android-ndk-1.6_r1
    528 
    529 IMPORTANT BUG FIXES:
    530 
    531 - Fix build/host-setup.sh to:
    532   * execute as a Bourne shell script
    533   * remove unused host gcc dependency
    534   * improve Windows host auto-detection
    535   * add GNU Make version check
    536   * add Nawk/Gawk check
    537   * ensure that the script is run from $NDKROOT as build/host-setup.sh
    538   * add --help, --verbose, --no-awk-check and --no-make-check options
    539 
    540 - Properly add sysroot library search path at build time. This makes a line
    541   in Android.mk like:
    542 
    543      LOCAL_LDLIBS := -lz
    544 
    545   Actually work correctly, instead of having the linker complaining that it
    546   could not find the corresponding libz.so library. Also clear LOCAL_LDLIBS
    547   in $(CLEAR_VARS) script.
    548 
    549 
    550 IMPORTANT CHANGES:
    551 
    552 - The 'sources' directory is gone. The NDK build system now looks for
    553   $(APP_PROJECT_PATH)/jni/Android.mk by default. You can override this with
    554   the new APP_BUILD_SCRIPT variable in Application.mk
    555 
    556   For example, the 'hello-jni' sample uses the following files:
    557 
    558     apps/hello-jni/project/jni/Android.mk
    559     apps/hello-jni/project/jni/hello-jni.c
    560 
    561   The 'apps/&lt;name&gt;' directory is still needed in this release though.
    562 
    563 - Change LOCAL_CFLAGS / LOCAL_CPPFLAGS to work as in the full Android build
    564   system. This means that:
    565 
    566     - LOCAL_CFLAGS   is now used for *both* C and C++ sources  (was only for C)
    567     - LOCAL_CPPFLAGS is now used for C++ sources only (was for both C and C++)
    568     - LOCAL_CXXFLAGS is used like LOCAL_CPPFLAGS but is considered obsolete.
    569       (will disappear in next release)
    570 
    571   Also fixed APP_CPPFLAGS / APP_CFLAGS / APP_CXXFLAGS correspondingly.
    572 
    573 - Rename build/platforms/android-1.5 to build/platforms/android-3 to match
    574   the Android API level instead of the marketing speak.
    575 
    576   Also add a new build/platforms/android-4, and make the build system select
    577   which platform to use based on the content of the project file named
    578   $(APP_PROJECT_PATH)/default.properties.
    579 
    580 - Add OpenGL ES 1.x headers and libraries to the android-4 stable APIs.
    581   (NOTE: they are *not* available for android-3)
    582 
    583   Also provide a small port of the "San Angeles Observation" demo to show
    584   how to make a simple Android application that uses them.
    585 
    586 
    587 OTHER FIXES AND CHANGES
    588 
    589 - Ensure that the __ANDROID__ macro is always defined when building code
    590   with the NDK. Normally, the macro must be defined by the toolchain
    591   automatically to indicate that you're targetting the Android runtime.
    592 
    593   This works for the new arm-linux-androideabi toolchain, but there is
    594   a bug in the way we built the arm-eabi one, so add the flag manually
    595   through the NDK build script for it.
    596 
    597   Note that the ANDROID macro, is now deprecated. While it is still defined
    598   by the NDK, you should modify your code to test against __ANDROID__ instead!
    599 
    600 - Generate thumb binaries by default.
    601 
    602 - Add support for LOCAL_ARM_MODE in Android.mk.
    603 
    604 - Add support for the '.arm' suffix in source file names to force the
    605   compilation of a single source in arm (32-bit) mode.
    606 
    607 - Generate proper unoptimized versions of binaries when APP_OPTIM := debug
    608 
    609 - Add support for LOCAL_C_INCLUDES in Android.mk
    610 
    611 - Fix compilation of assembler files (e.g. foo.S)
    612 
    613 -------------------------------------------------------------------------------
    614 android-ndk-1.5_r1 released.
    615 </pre></body></html>