• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html><body><pre>Android NDK ChangeLog:
2
3-------------------------------------------------------------------------------
4android-ndk-r7
5
6IMPORTANT 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
53IMPORTANT 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
71OTHER 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-------------------------------------------------------------------------------
89android-ndk-r6b
90
91This is a bug-fix release for NDK r6, no new features are provided.
92
93IMPORTANT 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-------------------------------------------------------------------------------
115android-ndk-r6
116
117IMPORTANT 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
152OTHER 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-------------------------------------------------------------------------------
162android-ndk-r5c
163
164This release fixes a few bugs in r5b. There are no new features.
165
166IMPORTANT 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
197OTHER 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-------------------------------------------------------------------------------
235android-ndk-r5b
236
237This release fixes a few bugs in r5. There are no new features.
238
239IMPORTANT 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
274OTHER 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-------------------------------------------------------------------------------
315android-ndk-r5
316
317IMPORTANT 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
334IMPORTANT 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
483OTHER 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-------------------------------------------------------------------------------
542android-ndk-r4b
543
544This release fixes a few bugs in r4 scripts. There are no new features.
545
546OTHER 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-------------------------------------------------------------------------------
584android-ndk-r4
585
586IMPORTANT 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
591IMPORTANT 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
662OTHER 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-------------------------------------------------------------------------------
740android-ndk-r3
741
742IMPORTANT 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
753IMPORTANT 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
802OTHER 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-------------------------------------------------------------------------------
859android-ndk-1.6_r1
860
861IMPORTANT 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
882IMPORTANT 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
919OTHER 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-------------------------------------------------------------------------------
946android-ndk-1.5_r1 released.
947</pre></body></html>
948