From d91b1d526eb374965a3a7a8eb4d02eff31b36d1f Mon Sep 17 00:00:00 2001
From: David Friedman
Date: Sat, 23 May 2015 00:29:49 -0700
Subject: Docs: "Tombstone" for old NDK page, directing visitors to new NDK
site.
Change-Id: I520bfb5157b2ffed5baa182df7c6305bf8835360
---
docs/html/tools/sdk/ndk/index.jd | 4465 +-------------------------------------
1 file changed, 8 insertions(+), 4457 deletions(-)
(limited to 'docs')
diff --git a/docs/html/tools/sdk/ndk/index.jd b/docs/html/tools/sdk/ndk/index.jd
index ae15bc1..90116d4 100644
--- a/docs/html/tools/sdk/ndk/index.jd
+++ b/docs/html/tools/sdk/ndk/index.jd
@@ -1,4470 +1,21 @@
-ndk=true
-page.template=sdk
-
-
-ndk.mac64_download=android-ndk-r10e-darwin-x86_64.bin
-ndk.mac64_bytes=388937326
-ndk.mac64_checksum=2cb8893a5701603519d38a7e04c50e81
-
-ndk.linux64_download=android-ndk-r10e-linux-x86_64.bin
-ndk.linux64_bytes=401522849
-ndk.linux64_checksum=19af543b068bdb7f27787c2bc69aba7f
-
-ndk.linux32_download=android-ndk-r10e-linux-x86.bin
-ndk.linux32_bytes=394281908
-ndk.linux32_checksum=c3edd3273029da1cbd2f62c48249e978
-
-ndk.win64_download=android-ndk-r10e-windows-x86_64.exe
-ndk.win64_bytes=419616132
-ndk.win64_checksum=8412bb4991a95e08fda50b5a44d95df7
-
-ndk.win32_download=android-ndk-r10e-windows-x86.exe
-ndk.win32_bytes=396563176
-ndk.win32_checksum=1a82445baaf62aec3a46386ab1e5772c
-
-
-
page.title=Android NDK
@jd:body
-
-
-
-
-
Before installing the Android NDK, you must agree to the following terms and conditions.
-
-
Terms and Conditions
-This is the Android Software Development Kit License Agreement
-
-1. Introduction
-1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK" and
-specifically including the Android system files, packaged APIs, and Google APIs add-ons) is
-licensed to you subject to the terms of this License Agreement. This License Agreement forms a
-legally binding contract between you and Google in relation to your use of the SDK.
-
-1.2 “Android” means the Android software stack for devices, as made available under the Android
-Open Source Project, which is located at the following URL: http://source.android.com/, as updated
-from time to time.
-
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
-Amphitheatre Parkway, Mountain View, CA 94043, United States.
-
-
-2. Accepting this License Agreement
-2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use the
-SDK if you do not accept this License Agreement.
-
-2.2 By clicking to accept, you hereby agree to the terms of this License Agreement.
-
-2.3 You may not use the SDK and may not accept the License Agreement if you are a person barred
-from receiving the SDK under the laws of the United States or other countries including the country
-in which you are resident or from which you use the SDK.
-
-2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or other
-entity, you represent and warrant that you have full legal authority to bind your employer or such
-entity to this License Agreement. If you do not have the requisite authority, you may not accept
-the License Agreement or use the SDK on behalf of your employer or other entity.
-
-
-3. SDK License from Google
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide,
-royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop
-applications to run on the Android platform.
-
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the
-SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
-Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law,
-and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.
-Except to the extent required by applicable third party licenses, you may not: (a) copy (except for
-backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create
-derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile
-handset or any other hardware device except a personal computer, combine any part of the SDK with
-other software, or distribute any software or device incorporating a part of the SDK.
-
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of
-Android, including but not limited to distributing, participating in the creation of, or promoting
-in any way a software development kit derived from the SDK.
-
-3.5 Use, reproduction and distribution of components of the SDK licensed under an open source
-software license are governed solely by the terms of that open source software license and not this
-License Agreement.
-
-3.6 You agree that the form and nature of the SDK that Google provides may change without prior
-notice to you and that future versions of the SDK may be incompatible with applications developed
-on previous versions of the SDK. You agree that Google may stop (permanently or temporarily)
-providing the SDK (or any features within the SDK) to you or to users generally at Google's sole
-discretion, without prior notice to you.
-
-3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names,
-trademarks, service marks, logos, domain names, or other distinctive brand features.
-
-3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices (including
-copyright and trademark notices) that may be affixed to or contained within the SDK.
-
-
-4. Use of the SDK by You
-4.1 Google agrees that it obtains no right, title or interest from you (or your licensors) under
-this License Agreement in or to any software applications that you develop using the SDK, including
-any intellectual property rights that subsist in those applications.
-
-4.2 You agree to use the SDK and write applications only for purposes that are permitted by (a)
-this License Agreement and (b) any applicable law, regulation or generally accepted practices or
-guidelines in the relevant jurisdictions (including any laws regarding the export of data or
-software to and from the United States or other relevant countries).
-
-4.3 You agree that if you use the SDK to develop applications for general public users, you will
-protect the privacy and legal rights of those users. If the users provide you with user names,
-passwords, or other login information or personal information, you must make the users aware that
-the information will be available to your application, and you must provide legally adequate
-privacy notice and protection for those users. If your application stores personal or sensitive
-information provided by users, it must do so securely. If the user provides your application with
-Google Account information, your application may only use that information to access the user's
-Google Account when, and for the limited purposes for which, the user has given you permission to
-do so.
-
-4.4 You agree that you will not engage in any activity with the SDK, including the development or
-distribution of an application, that interferes with, disrupts, damages, or accesses in an
-unauthorized manner the servers, networks, or other properties or services of any third party
-including, but not limited to, Google or any mobile communications carrier.
-
-4.5 You agree that you are solely responsible for (and that Google has no responsibility to you or
-to any third party for) any data, content, or resources that you create, transmit or display
-through Android and/or applications for Android, and for the consequences of your actions
-(including any loss or damage which Google may suffer) by doing so.
-
-4.6 You agree that you are solely responsible for (and that Google has no responsibility to you or
-to any third party for) any breach of your obligations under this License Agreement, any applicable
-third party contract or Terms of Service, or any applicable law or regulation, and for the
-consequences (including any loss or damage which Google or any third party may suffer) of any such
-breach.
-
-
-5. Your Developer Credentials
-5.1 You agree that you are responsible for maintaining the confidentiality of any developer
-credentials that may be issued to you by Google or which you may choose yourself and that you will
-be solely responsible for all applications that are developed under your developer credentials.
-
-
-6. Privacy and Information
-6.1 In order to continually innovate and improve the SDK, Google may collect certain usage
-statistics from the software including but not limited to a unique identifier, associated IP
-address, version number of the software, and information on which tools and/or services in the SDK
-are being used and how they are being used. Before any of this information is collected, the SDK
-will notify you and seek your consent. If you withhold consent, the information will not be
-collected.
-
-6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in
-accordance with Google's Privacy Policy.
-
-
-7. Third Party Applications
-7.1 If you use the SDK to run applications developed by a third party or that access data, content
-or resources provided by a third party, you agree that Google is not responsible for those
-applications, data, content, or resources. You understand that all data, content or resources which
-you may access through such third party applications are the sole responsibility of the person from
-which they originated and that Google is not liable for any loss or damage that you may experience
-as a result of the use or access of any of those third party applications, data, content, or
-resources.
-
-7.2 You should be aware the data, content, and resources presented to you through such a third
-party application may be protected by intellectual property rights which are owned by the providers
-(or by other persons or companies on their behalf). You may not modify, rent, lease, loan, sell,
-distribute or create derivative works based on these data, content, or resources (either in whole
-or in part) unless you have been specifically given permission to do so by the relevant owners.
-
-7.3 You acknowledge that your use of such third party applications, data, content, or resources may
-be subject to separate terms between you and the relevant third party. In that case, this License
-Agreement does not affect your legal relationship with these third parties.
-
-
-8. Using Android APIs
-8.1 Google Data APIs
-
-8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be
-protected by intellectual property rights which are owned by Google or those parties that provide
-the data (or by other persons or companies on their behalf). Your use of any such API may be
-subject to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or
-create derivative works based on this data (either in whole or in part) unless allowed by the
-relevant Terms of Service.
-
-8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree that you
-shall retrieve data only with the user's explicit consent and only when, and for the limited
-purposes for which, the user has given you permission to do so.
-
-
-9. Terminating this License Agreement
-9.1 This License Agreement will continue to apply until terminated by either you or Google as set
-out below.
-
-9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of the SDK
-and any relevant developer credentials.
-
-9.3 Google may at any time, terminate this License Agreement with you if:
-(A) you have breached any provision of this License Agreement; or
-(B) Google is required to do so by law; or
-(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has terminated
-its relationship with Google or ceased to offer certain parts of the SDK to you; or
-(D) Google decides to no longer provide the SDK or certain parts of the SDK to users in the country
-in which you are resident or from which you use the service, or the provision of the SDK or certain
-SDK services to you by Google is, in Google's sole discretion, no longer commercially viable.
-
-9.4 When this License Agreement comes to an end, all of the legal rights, obligations and
-liabilities that you and Google have benefited from, been subject to (or which have accrued over
-time whilst this License Agreement has been in force) or which are expressed to continue
-indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall
-continue to apply to such rights, obligations and liabilities indefinitely.
-
-
-10. DISCLAIMER OF WARRANTIES
-10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND THAT THE
-SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-
-10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE
-SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR
-COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-
-10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-
-
-11. LIMITATION OF LIABILITY
-11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND ITS
-LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY
-LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN
-AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-
-
-12. Indemnification
-12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold harmless
-Google, its affiliates and their respective directors, officers, employees and agents from and
-against any and all claims, actions, suits or proceedings, as well as any and all losses,
-liabilities, damages, costs and expenses (including reasonable attorneys fees) arising out of or
-accruing from (a) your use of the SDK, (b) any application you develop on the SDK that infringes
-any copyright, trademark, trade secret, trade dress, patent or other intellectual property right of
-any person or defames any person or violates their rights of publicity or privacy, and (c) any
-non-compliance by you with this License Agreement.
-
-
-13. Changes to the License Agreement
-13.1 Google may make changes to the License Agreement as it distributes new versions of the SDK.
-When these changes are made, Google will make a new version of the License Agreement available on
-the website where the SDK is made available.
-
-
-14. General Legal Terms
-14.1 This License Agreement constitutes the whole legal agreement between you and Google and
-governs your use of the SDK (excluding any services which Google may provide to you under a
-separate written agreement), and completely replaces any prior agreements between you and Google in
-relation to the SDK.
-
-14.2 You agree that if Google does not exercise or enforce any legal right or remedy which is
-contained in this License Agreement (or which Google has the benefit of under any applicable law),
-this will not be taken to be a formal waiver of Google's rights and that those rights or remedies
-will still be available to Google.
-
-14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any
-provision of this License Agreement is invalid, then that provision will be removed from this
-License Agreement without affecting the rest of this License Agreement. The remaining provisions of
-this License Agreement will continue to be valid and enforceable.
-
-14.4 You acknowledge and agree that each member of the group of companies of which Google is the
-parent shall be third party beneficiaries to this License Agreement and that such other companies
-shall be entitled to directly enforce, and rely upon, any provision of this License Agreement that
-confers a benefit on (or rights in favor of) them. Other than this, no other person or company
-shall be third party beneficiaries to this License Agreement.
-
-14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS. YOU MUST
-COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE SDK. THESE
-LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-
-14.6 The rights granted in this License Agreement may not be assigned or transferred by either you
-or Google without the prior written approval of the other party. Neither you nor Google shall be
-permitted to delegate their responsibilities or obligations under this License Agreement without
-the prior written approval of the other party.
-
-14.7 This License Agreement, and your relationship with Google under this License Agreement, shall
-be governed by the laws of the State of California without regard to its conflict of laws
-provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located
-within the county of Santa Clara, California to resolve any legal matter arising from this License
-Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for
-injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-
-
-November 13, 2012
-
-
-
-
-
-
-
-
-
-
-
-
-
The NDK is a toolset that allows you to implement parts
- of your app using native-code languages such as C and C++. For certain types of apps,
- this can be helpful so you can reuse existing code libraries written in these
- languages, but most apps do not need the Android NDK.
+ of your app using native-code languages such as C and C++. Typically, good use cases for the NDK
+ are CPU-intensive applications such as game engines, signal processing, and physics simulation.
+
Before downloading the NDK, you should understand that the NDK
will not benefit most apps. As a developer, you need to balance its benefits
against its drawbacks. Notably, using native code on Android
generally does not result in a noticable performance improvement,
but it always increases your app complexity. In general, you should only use the NDK
- if it is essential to your app—never because you simply prefer to program in C/C++.
-
- Typical good candidates for the NDK are CPU-intensive workloads such as game engines,
- signal processing, physics simulation, and so on. When examining
- whether or not you should develop in native code, think about your requirements and see if the
- Android framework APIs provide the functionality that you need.
-
-
-Downloads
-
-
-
-
-Revisions
-
-The following sections provide information about releases of the NDK.
-
-
-
- Android NDK, Revision 10e (May 2015)
-
-
-
- - Important changes:
- -
-
- - Integrated the workaround for Cortex-A53 Erratum 843419 into the
- {@code aarch64-linux-android-4.9} linker. For more information on this workaround, see
- Workaround for cortex-a53
- erratum 843419.
-
- - Added Clang 3.6; {@code NDK_TOOLCHAIN_VERSION=clang} now picks that version
- of Clang by default.
-
- - Removed Clang 3.4.
-
- - Removed GCC 4.6.
-
- - Implemented multithreading support in {@code ld.gold} for all architectures. It can
- now link with or without support for multithreading; the default is to do it without.
-
- - To compile with multithreading, use the {@code --threads} option.
- - To compile without multithreading, use the {@code --no-threads} option.
-
-
-
- - Upgraded GDB/gdbserver to 7.7 for all architectures.
-
- - Removed the NDK package for 32-bit Darwin.
-
-
-
-
-
- - Important bug fixes:
- -
-
-
-
- - Other bug fixes:
- -
-
-
-
- - Other changes:
- -
-
- - Added {@code ld.gold} for {@code aarch64}. The default linker remains {@code ld.bfd}.
- To explicitly enable {@code ld.gold}, add {@code -fuse-ld=gold} to the
- {@code LOCAL_LDFLAGS} or {@code APP_LDFLAGS} variable.
-
- - Built the MIPS and MIPS64 toolchains with {@code binutils-2.25}, which provides improved
- R6 support.
-
- - Made {@code -fstandalone-debug} (full debug info) a default option for Clang.
-
- - Replaced {@code -fstack-protector} with {@code -fstack-protector-strong} for
- the ARM, AArch64, X86, and X86_64 toolchains for GCC 4.9, Clang 3.5, and
- Clang 3.6.
-
- - Added the {@code --package} command-line switch to {@code ndk-gdb} to allow the build
- system to override the package name. (Issue
- 56189)
-
- - Deprecated {@code -mno-ldc1-stc1} for MIPS. This option may not work with the new
- {@code -fpxx} and {@code -mno-odd-spreg} options, or with the FPXX ABI.
-
- - Added MIPS MSA and R6 detection to {@code cpu-features}.
-
-
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 10d (December 2014)
-
-
-
- - Important changes:
- -
-
- - Made GCC 4.8 the default for all 32-bit ABIs. Deprecated GCC 4.6, and
- will remove it next release. To restore previous behavior, either add
-
NDK_TOOLCHAIN_VERSION=4.6
to ndk-build, or
- add --toolchain=arm-linux-androideabi-4.6
when executing
- make-standalone-toolchain.sh
on the command line. GCC 4.9 remains the
- default for 64-bit ABIs.
-
- - Stopped all x86[_64] toolchains from adding
-mstackrealign
by default. The
- NDK toolchain assumes a 16-byte stack alignment. The tools and options used by default
- enforce this rule. A user writing assembly code must make sure to preserve stack
- alignment, and ensure that other compilers also comply with this rule.
- (GCC bug 38496)
-
- - Added Address Sanitizer functionality to Clang 3.5 support to the ARM and x86 ABIs.
- For more information on this change, see the
- Address
- Sanitizer project.
-
- - Introduced the requirement, starting from API level 21, to use
-fPIE -pie
-
when building. In API levels 16 and higher, ndk-build uses PIE
- when building. This change has a number of implications, which are discussed in
-
- Developer Preview Issue 888.
- These implications do not apply to shared libraries.
-
-
-
-
-
- - Important bug fixes:
- -
-
- - Made more fixes related to
-
- A53 Errata #835769 in the aarch64-linux-android-4.9 linker. As part of this, GCC
- passes a new option,
--fix-cortex-a53-835769
, when
- -mfix-cortex-a53-835769
(enabled by default) is specified.
- For more information, see this
- binutils message
- and this
- binutils message.
-
-
- - Documented a fix to a libc++
sscanf/vsscanf
hang that occurred in API level
- 21. The fix itself had been implemented in r10c.
- (Issue 77988)
-
- - Fixed an AutoFDO (
-fauto-profile
) crash that occurred with GCC 4.9 when
- -Os
was specified. (Issue 77571)
-
-
-
-
- - Other bug fixes:
- -
-
- - Made the following header and library fixes:
-
- - Added
posix_memalign
to API level 16. Also, added a prototype in
- stdlib.h
to API levels 16 to 19.
- (Issue 77861)
- - Fixed
stdatomic.h
so that it includes <atomic>
only for
- C++11.
- - Modified the following headers for standalone use:
sys/user.h
, and
- gl2ext.h
, dlext.h
, fts.h
, sgidefs.h
- for API level 21.
- - Modified
sys/user.h
to rename mxcsr_mask
as mxcr_mask
,
- and to change the data type for u_ar0
from unsigned long
- to struct user_regs_struct*.
- - Changed
sysconf()
return value type from int
to
- long
.
-
-
- - Fixed ndk-build's handling of
thumb
for LOCAL_ARM_MODE
: In
- r10d, ndk-build adds LOCAL_LDFLAGS+=-mthumb
by default, unless one of the
- following conditions applies:
-
- - You have set
LOCAL_ARM_MODE
equal to arm
.
- - You are doing a debug build (with settings such as
APP_OPTIM=debug
and
- AndroidManifest.xml
containing android:debuggable="true"
),
- where ARM mode is the default in order to retain compatibility with earlier toolchains.
- (Issue 74040)
-
-
- - Fixed
LOCAL_SRC_FILES
in ndk-build to use Windows absolute paths.
- (Issue 74333)
-
- - Removed bash-specific code from ndk-gdb. (Issue 73338)
-
- - Removed bash-specific code from
make-standalone-toolchain.sh
.
- (Issue 74145)
-
- - Revised documentation concerning a fix for
System.loadLibrary()
transitive
- dependencies. (Issue 41790)
-
- - Fixed a problem that was preventing 64-bit packages from extracting on Ubuntu 14.04 and
- OS X 10.10 (Yosemite). (Issue 78148)
-
- - Fixed an issue with
LOCAL_PCH
to improve Clang support. (Issue
- 77575)
-
- - Clarified "requires executable stack" warning from ld.gold. (Issue
- 79115)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 10c (October 2014)
-
-
-
- - Important changes:
- -
-
- - Made the following changes to download structure:
-
- - Each package now contains both the 32- and the 64-bit headers, libraries, and tools for
- its respective platform.
- - STL libraries with debugging info no longer need be downloaded separately.
-
- - Changed everything previously called
Android-L
to the official release
- designation: android-21
.
- - Updated GCC 4.9 by rebasing to the
google
branch
- of the GCC repository. Major differences from the upstream version of GCC 4.9 include:
-
-
- - The
-O2
option now turns on vectorization, without loop peeling but with more
- aggressive unrolling.
- - Enhancements to FDO and
- LIPO
- For more detailed information, see Important bug fixes below.
-
-
- - Added Clang 3.5 support to all hosts:
NDK_TOOLCHAIN_VERSION=clang
- now picks Clang 3.5. Note that:
-
-
- - ARM and x86 default to using the integrated assembler. If this causes issues, use
-
-fno-integrated-as
as a workaround.
- - Clang 3.5 issues more warnings for unused flags, such as the
-finline-functions
- option that GCC supports.
- When migrating from projects using GCC, you can use
- -Wno-invalid-command-line-argument
and -Wno-unused-command-line-argument
- to ignore the unused flags until you're able decide on what to do with them longer-term.
-
-
- - Made it possible to enter ART debugging mode, when debugging on an Android 5.0 device using
- ART as its virtual machine, by specifying the
art-on
option. For more information,
- see prebuilt/common/gdb/common.setup
in the directory containing the NDK.
- - Removed support for Clang 3.3.
- - Deprecated GCC 4.6, and may remove it from future releases.
- - Updated mclinker to 2.8 with Identical Code Folding ("ICF") support. Specify ICF using the
-
--icf
option.
- - Broadened
arm_neon.h
support in x86 and x86_64, attaining coverage of ~93% of
- NEON intrinsics. For more information about NEON support:
-
- - Navigate to the NDK Programmer's Guide (
docs/Programmers_Guide/html/
), and see
- Architectures and CPUs > Neon.
- - Examine the updated
hello-neon
sample in samples/
.
- - See Intel's guide to porting from ARM NEON to Intel SSE.
-
- - Documented support for
_FORTIFY_SOURCE
in headers/libs/android-21
,
- which appeared in r10 (when android-21
was still called Android-L
),
- but had no documentation.
-
-
-
-
-
- - Important bug fixes:
- -
-
- - Fixed an internal compiler error with GCC4.9/aarch64 that was causing the following
- error message (Issue 77564):
-
-internal compiler error: in simplify_const_unary_operation, at simplify-rtx.c:1539
-
- - Fixed incorrect code generation from GCC4.9/arm. (Issue
- 77567)
- - Fixed an internal compiler error with GCC4.9/mips involving inline-assembly. (Issue
- 77568)
- - Fixed incorrect code that GCC4.9/arm was generating for
x = (cond) ? y : x
.
- (Issue 77569)
- - Fixed GCC4.9/aarch64 and Clang3.5/aarch64 to work around the
-
- Cortex-A53 erratum (835769) by default. Disable the workaround by specifying
-
-mno-fix-cortex-a53-835769
.
-
-
-
-
- - Other bug fixes:
- -
-
- - Made the following header and library fixes to
android-21
:
-
-
- - Added more TV keycodes:
android/keycodes.h
- - Added more constants and six new sensor functions to
android/sensor.h
:
- ASensorManager_getDefaultSensorEx
, ASensor_getFifoMaxEventCount
,
- ASensor_getFifoReservedEventCount
, ASensor_getStringType
,
- ASensor_getReportingMode
, and ASensor_isWakeUpSensor
.
- - Fixed
stdatomic.h
to improve compatibility with GCC 4.6, and provide support
- for the <atomic>
header.
- - Added
sys/ucontext.h
and sys/user.h
to all API levels. The
- signal.h
header now includes <sys/ucontext.h>
. You may
- remove any existing definition of struct ucontext
.
- - Added
posix_memalign
to API levels 17, 18, and 19.
- - Added the following functions to all architectures:
-
android_set_abort_message
, posix_fadvise
,
- posix_fadvise64
, pthread_gettid_np
.
- - Added the required permissions to the
native-media/AndroidManifest.xml
- sample.
- (Issue 106640)
- - Added
clock_nanosleep
and clock_settime
to API level 21. (Issue
- 77372)
- - Removed the following symbols from all architectures:
-
get_malloc_leak_info
, free_malloc_leak_info
,
- __srget
, __swbuf
, __srefill
, __swsetup
,
- __sdidinit
, __sflags
, __sfp
,
- __sinit
, __smakebuf
, __sflush
, __sread
,
- __swrite
, __sseek
, __sclose
,
- _fwalk
, __sglue
, __get_thread
, __wait4
,
- __futex_wake
, __open
, __get_tls
,
- __getdents64
, and dlmalloc
.
- - Removed the following functions from the 64-bit architectures:
basename_r
,
- dirname_r
, __isthreaded
, _flush_cache
(mips64).
- - Removed the following function from the 32-bit architectures:
-
__signalfd4
.
- - Changed the type of the third argument from
size_t
to int
in
- the following functions: strtoll_l
, strtoull_l
,
- wcstoll_l
, and wcstoull_l
.
- - Restored the following functions to the 64-bit architecture:
arc4random
,
- arc4random_buf
, and arc4random_uniform
.
- - Moved
cxa_*
and the new
and delete
operators back
- to libstdc++.so
. This change restores r9d behavior; previous versions of r10
- contained dummy files.
-
-
- - Restored MXU support in GCC 4.8 and 4.9 for mips. This support had been absent from
- r10 and r10b because those versions of GCC had been compiled with binutils-2.24, which did
- not support MXU. It now does.
- - Fixed
--toolchain=
in make-standalone-toolchain.sh
so that it
- now properly supports use of a suffix specifying a version of Clang.
- - Fixed the libc++/armeabi
strtod()
functions.
- - Made fixes to NDK documentation in
docs/
.
-
-
-
- - Other changes:
- -
-
- - Enhanced
cpu-features
to detect ARMv8 support for the following
- instruction sets: AES, CRC32, SHA2, SHA1, and 64-bit PMULL/PMULL2. (Issue
- 106360)
-
- - Modified ndk-build to use
*-gcc-ar
, which is available in GCC 4.8, GCC 4.9, and
- Clang. Clang specifies it, instead of *-ar
. This setting brings improved LTO
- support.
-
- - Removed the
include-fixed/linux/a.out.h
and
- include-fixed/linux/compiler.h
headers from the GCC compiler.
- (Issue 73728)
-
- - Fixed an issue related to
-flto
with GCC 4.8 on Mac OS X. The error message
- read:
-
-
-.../ld: error: .../libexec/gcc/arm-linux-androideabi/4.9/liblto_plugin.so
-Symbol not found: _environ
-
-
- - Fixed a typo in
build-binary.mk.
(Issue
- 76992)
-
-
-
- - Important known issues:
- -
-
- - Specifying -Os (
-fauto-profile
) in GCC4.9 may cause crashing.
- (Issue 77571)
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 10b (September 2014)
-
-
-
-
- - Important notes:
- -
-
- - Because of the 512MB size restriction on downloadable packages, the following 32-bit items are not in the 32-bit NDK download packages. Instead, they reside in the 64-bit ones:
-
- - Android-L headers
- - GCC 4.9
-
- - Currently, the only Renderscript support provided by the NDK is for 32-bit Renderscript with Android 4.4 (API level 19). You cannot build HelloComputeNDK (the only Renderscript sample) with any other combination of Renderscript (32- or 64-bit) and Android version.
- - To compile native-codec, you must use a 64-bit NDK package, which is where all the Android-L headers are located.
-
-
-
-
- - Important bug fixes:
- -
-
- - Fixed gdb 7.6 in GCC 4.8/4.9. (Issues 74112 and 74371.)
- - Fixed GCC 4.8/4.9 for x86, so that they no longer enable
-msse4.2
and -mpopcnt
by default. (Issue 73843.)
-
-
-
- - Other bug fixes:
- -
-
- - Removed
stdio.h
from the include-fixed/
directories of all versions of GCC. (Issue 73728.)
- - Removed duplicate header files from the Windows packages in the
platforms/android-L/arch-*/usr/include/linux/netfilter*/
directories. (Issue 73704.)
- - Fixed a problem that prevented Clang from building HelloComputeNDK.
- - Fixed atexit. (Issue 66595.)
- - Made various fixes to the docs in
docs/
and sources/third_party/googletest/README.NDK
. (Issue 74069.)
- - Made the following fixes to the Android-L headers:
-
- - Added the following functions to
ctype.h
and wchar.h
: dn_expand()
, grantpt()
, inet_nsap_addr()
, inet_nsap_ntoa()
, insque()
, nsdispatch()
, posix_openpt()
, __pthread_cleanup_pop()
, __pthread_cleanup_push()
, remque()
, setfsgid()
, setfsuid()
, splice()
, tee()
, twalk()
(Issue 73719), and 42 *_l()
functions.
-
- - Renamed
cmsg_nxthdr
to __cmsg_nxthdr
.
-
- - Removed
__libc_malloc_dispatch
.
-
- - Changed the
ptrace()
prototype to long ptrace(int, ...);
.
-
- - Removed
sha1.h
.
-
- - Extended
android_dlextinfo
in android/dlext.h
.
-
- - Annotated
__NDK_FPABI__
for functions receiving or returning float- or double-type values in stdlib.h
, time.h
, wchar.h
, and complex.h
.
-
-
-
-
- - Other changes:
- -
-
- - Updated
mipsel-linux-android-4.9
and mips64el-linux-android-4.9
, implementing a new multilib directory layout, and providing support for gdb-7.7
- - Enhanced
cpu-features
to detect more arm64 features. (Change list 100339.)
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 10 (July 2014)
-
-
-
- - Important changes:
- -
-
- - Added 3 new ABIs, all 64-bit: arm64-v8a, x86_64, mips64.
Note that:
-
- - GCC 4.9 is the default compiler for 64-bit ABIs. Clang is currently version 3.4.
-
NDK_TOOLCHAIN_VERSION=clang
- may not work for arm64-v8a and mips64.
- - Android-L is the first level with 64-bit support. Note that this API
-level is a temporary one, and only for L-preview. An actual API level number will replace it at
-L-release.
- - This release includes now includes
all32
and all64
-settings for APP_ABI
.
-
- APP_ABI=all32
is equivalent to
-APP_ABI=armeabi,armeabi-v7a,x86,mips
.
- APP_ABI=all64
is equivalent to
-APP_ABI=arm64-v8a,x86_64,mips64
.
- APP_ABI=all
selects all ABIs.
-
- - The new GNU libstdc++ in Android-L contains all
<tr1/cmath>
-Before defining your own math function, check _GLIBCXX_USE_C99_MATH_TR1
to see a
-function with that name already exists, in order to avoid "multiple definition" errors from the
-linker.
- - The cpu-features library has been updated for the ARMv8 kernel. The existing
-cpu-features library may fail to detect the presence of NEON on the ARMv8 platform. Recompile your
-code with the new version.
-
- - Added a new
platforms/android-L/
API directory. It includes:
-
- - Updated Bionic headers, which had not changed from Android API levels 3
-(Cupcake) to 19 (KitKat). This new version, for level L, is to be synchronized with AOSP.
- - New media APIs and a native-codec sample.
- - An updated
Android.h
header for SLES/OpenSLES, enabling support for
-single-precision, floating-point audio format in AudioPlayer.
- - GLES 3.1 and AEP extensions to
libGLESv3.so.
- - GLES2 and GLES3 headers updated to the latest official Khronos versions.
-
- - Added GCC 4.9 compilers to the 32-/64-bit ABIs. GCC 4.9 is the default (only) compiler
-for 64-bit ABIs, as previously mentioned. For 32-bit ABIs, you must explcitly enable GCC 4.9, as
-GCC 4.6 is still the default.
-
- - For ndk-build, enable 32-bit, GCC 4.9 building either by adding
-
NDK_TOOLCHAIN_VERSION=4.9
to Application.mk
, or exporting it as an
-environment variable from the command line.
- - For a standalone toolchain, use the
--toolchain=
option in the
-make-standalone-toolchain.sh
script. For example: --toolchain=arm-linux-androideabi-4.9.
-
- - Upgraded GDB to version 7.6 in GCC 4.8/4.9 and x86*. Since GDB is still at version GDB-7.3.x in
-GCC 4.6 (the default for ARM and MIPS), you must set
-
NDK_TOOLCHAIN_VERSION=4.8
or 4.9
to enable ndk-gdb to select GDB 7.6.
- - Added the
-mssse3
build option to provide SSSE3 support, and made it the default for ABI x86
-(upgrading from SSE3). The image released by Google does not contain SSSE3 instructions.
- - Updated GCC 4.8 to 4.8.3.
- - Improved ARM libc++ EH support by switching from gabi++ to libc++abi. For details, see the "C++ Support" section of the documentation.
- Note that:
-
- - All tests except for locale now pass for Clang 3.4 and GCC 4.8. For more
-information, see the "C++ Support" section of the documentation.
- - The libc++ libraries for X86 and MIPS libc++ still use gabi++.
- - GCC 4.7 and later can now use <atomic>.
- - You must add
-fno-strict-aliasing
if you use <list>
, because __list_imp::_end
_ breaks
- TBAA rules. (Issue 61571.)
- - As of GCC 4.6, LIBCXX_FORCE_REBUILD:=true no longer rebuilds libc++. Rebuilding it
-requires the use of a different compiler. Note that Clang 3.3 is untested.
-
- - mclinker is now version 2.7, and has aarch64 Linux support.
- - Added precompiled header support for headers specified by
LOCAL_PCH
. (Issue 25412).
-
-
-
-
- - Important bug fixes:
- -
-
- - Fixed libc++ so that it now compiles
std::feof
, etc. (Issue 66668).
- - Fixed a Clang 3.3/3.4 atomic library call that caused crashes in some of the libc++
-tests for ABI armeabi.
- - Fixed Clang 3.4 crashes that were occurring on reading precompiled headers. (Issue 66657).
- - Fixed the Clang 3.3/3.4
-O3
assert on:
- llvm-3.2/llvm/include/llvm/MDBuilder.h:64: llvm::MDNode*
-llvm::MDBuilder::createBranchWeights(llvm::ArrayRef): Assertion Weights.size() >= 2
-&& "Need at least two branch weights!"
(Issue 57381).
- - Fixed the following Clang 3.3/3.4 crash:
- Assertion failed: (!Fn && "cast failed but able to resolve overload expression!!"), function CheckCXXCStyleCast, file
-Volumes/data/ndk-toolchain/src/llvm-3.3/llvm/tools/clang/lib/Sema/SemaCast.cpp, line 2018
.
-(Issue 66950).
-
-
-
- - Other bug fixes:
- -
-
- - Fixed headers:
-
- - Fixed 32-bit
ssize_t
to be int
instead of long
-int
.
- - Fixed
WCHAR_MIN
and WCHAR_MAX
so that they they take
-appropriate signs according to the architecture they're running on:
-
- - X86/MIPS: signed.
-
- ARM: unsigned.
-
- To force X86/MIPS to default to unsigned, use
-
-D__WCHAR_UNSIGNED__
.
- - To force
wchar_t
to be 16 bits, use -fshort-wchar
.
-
- - Removed non-existent symbols from 32-bit
libc.so
, and added pread64
,
-pwrite64
, ftruncate64
for
-Android API level 12 and higher. (Issue 69319). For more
-information, see the commit message accompanying AOSP change list
- 94137.
-
- - Fixed GCC warning about redefinition of
putchar
. Warning message reads:
- include/stdio.h:236:5: warning: conflicts with previous declaration here
-[-Wattributes] int putchar(int);
(Change list 91185).
- - Fixed
make-standalone-toolchain.sh --stl=libc++
so that it:
-
- - Copies
cxxabi.h
. (Issue 68001).
- - Runs in directories other than the NDK install directory. (Issues 67690 and 68647).
-
- - Fixed GCC/Windows to quote arguments only when necessary for spawning processes in
-external programs. This change decreases the likelihood of exceeding the 32K length limit.
- - Fixed an issue that made it impossible to adjust the
APP_PLATFORM
-environment variable.
- - Fixed the implementation of
IsSystemLibrary()
in crazy_linker so that it
-uses strrchr()
- instead of strchr()
to find the library path's true basename.
- - Fixed native-audio's inability to build in debug mode.
- - Fixed gdb's inability to print extreme floating-point numbers. (Issue 69203).
- - Fixed Clang 3.4 inability to compile with
-Wl,-shared
(as opposed to
--shared
, which
- had no compilation issues). The problem was that Clang added -pie
for Android
-targets if neither -shared
nor -static
existed. This behavior, which was
-incorrect, caused the linker to complain that -shared
and -pie
could not
-co-exist.
-
-
-
-
-
- - Other changes:
- -
-
- - Added
arm_neon.h
to the x86 toolchain so that it now emulates ~47% of
-Neon. There is currently no support for 64-bit types. For more information, see the section on ARM
-Neon intrinsics support in the x86 documentation.
- - Ported ARM/GOT_PREL optimization (present in GCC 4.6 built from the GCC google branch) to
-ARM GCC 4.8/4.9. This optimization sometimes reduces instruction count when accessing global
-variables. As an example, see the build.sh script in
-
$NDK/tests/build/b14811006-GOT_PREL-optimization/
.
- - Added ARM version for STL gabi++, stlport, and libc++. They now have both it and Thumb
-mode.
- - It is now possible to call the make-standalone-toolchain.sh script with
-
--toolchain=x86_64-linux-android-4.9
, which is equivalent to
---toolchain=x86_64-4.9
.
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 9d (March 2014)
-
-
-
- - Important changes:
- -
-
- - Added support for the Clang 3.4 compiler. The
-
NDK_TOOLCHAIN_VERSION=clang
option now picks Clang 3.4. GCC 4.6 is
-still the default compiler.
- - Added
APP_ABI=armeabi-v7a-hard
, with
-additional multilib option -mfloat-abi=hard
. These options are for
-use with ARM GCC 4.6/4.8 and Clang 3.3/3.4 (which use 4.8's assembler, linker,
-and libs). When using these options, note the following changes:
-
- - Added the yasm assembler, as well as
LOCAL_ASMFLAGS
-and EXPORT_ASMFLAGS
flags for x86
-targets. The ndk-build
script uses
-prebuilts/*/bin/yasm*
to build LOCAL_SRC_FILES
that
-have the .asm
extension.
- - Updated MClinker to 2.6.0, which adds
-gc-sections
-support.
- - Added experimental libc++ support (upstream r201101). Use this new
-feature by following these steps:
-
- - Add
APP_STL := c++_static
or APP_STL :=
-c++_shared
in Application.mk
.
- You may rebuild from source via LIBCXX_FORCE_REBUILD :=
-true
- - Execute
make-standalone-toolchain.sh --stl=libc++
-to create a standalone toolchain with libc++ headers/lib.
-
- For more information, see
-CPLUSPLUS-SUPPORT.html
.
-(Issue 36496)
-
-
-
- - Important bug fixes:
- -
-
- - Fixed an uncaught throw from an unexpected
-exception handler for GCC 4.6/4.8 ARM EABI. (GCC Issue 59392)
- - Fixed GCC 4.8 so that it now correctly resolves partial
-specialization of a template with
- a dependent, non-type template argument. (GCC Issue 59052)
- - Added more modules to prebuilt python (Issue 59902):
-
- - Mac OS X:
zlib
, bz2
,
-_curses
, _curses_panel
, _hashlib
,
-_ssl
- - Linux:
zlib
, nis
,
-crypt
, _curses
, and _curses_panel
-
- - Fixed the x86 and MIPS gdbserver
-
event_getmsg_helper
.
- - Fixed numerous issues in the RenderScript NDK toolchain, including
-issues with compatibility across older devices and C++ reflection.
-
-
-
-
- - Other bug fixes:
- -
-
-
-
- Fixed gabi++
std::unexpected()
to call
-std::terminate()
so that
- a user-defined std::terminate()
handler has a chance to run.
-
- - Fixed gabi++ to catch
std::nullptr
.
- - Fixed samples Teapot and MoreTeapots:
-
- - Solved a problem with Tegra 2 and 3 chips by changing specular
-variables to use medium precision. Values for specular power can now be less
-than 1.0.
- - Changed the samples so that pressing the volume button restores
-immersive mode and invalidates
-
SYSTEM_UI_FLAG_IMMERSIVE_STICKY
. Screen rotation does not
-trigger onSystemUiVisibilityChange
, and so does not restore
-immersive mode.
-
-
- - Fixed the
ndk-build
script to add
--rpath-link=$SYSROOT/usr/lib
and
--rpath-link=$TARGET_OUT
in order to use ld.bfd
to
-link executables. (Issue 64266)
- - Removed
-Bsymbolic
from all STL builds.
- - Fixed
ndk-gdb-py.cmd
by setting SHELL
as
-an environment variable
-instead of passing it to
- python.exe
, which ignores the setting.
- (Issue 63054)
- - Fixed the
make-standalone-toolchain.sh
script so that
-the --stl=stlport
option copies the gabi++ headers instead of
-symlinking them; the cmd.exe
and MinGW shells do not understand
-symlinks created by cygwin.
-
-
-
- - Other changes:
- -
-
- - Applied execution permissions to all
*cmd
scripts
-previously intended for use only in the cmd.exe
shell, in case
-developers prefer to use ndk-build.cmd
in cygwin instead of the
-recommended ndk-build
script.
- - Improved the speed of the
make-standalone-toolchain.sh
-script by moving instead of copying if the specified destination directory does
-not exist.
-
-
-
-
-
-
-
-
- Android NDK, Revision 9c (December 2013)
-
-
-
This is a bug-fix-only release.
-
- - Important bug fixes:
- -
-
-
-
- - Other bug fixes:
- -
-
-
-
- - Other changes:
- -
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 9b (October 2013)
-
-
-
- - Important changes:
- -
-
-
-
- - Important bug fixes:
- -
-
- - Fixed problem with ARM GCC 4.6 {@code thumb2} failing to generate 16-bit relative jump
- tables. (GCC Issue)
- - Fixed GCC 4.8 internal compiler error (ICE) on
- {@code g++.dg/cpp0x/lambda/lambda-defarg3.C}.
- (Change 62770,
- GCC Issue)
- - Fixed a problem with Windows 32-bit {@code *-gdb.exe} executables failing to launch.
- (Issue 58975)
- - Fixed GCC 4.8 ICE when building bullet library. The error message is as follows:
-
internal compiler error: verify_flow_info failed
- (Issue 58916,
- GCC Issue)
- - Modified GDB/ARM build to skip {@code ARM.exidx} data for unwinding in prologue code and
- added a command ({@code set arm exidx-unwinding}) to control exidx-based stack unwinding.
- (Issue 55826)
- - Fixed Clang 3.3 MIPS compiler problem where HI and LO registers are incorrectly
- reused.
- - Fixed issue with MIPS 4.7 ICE in {@code dbx_reg_number}. The error message is as
-follows:
-
-external/icu4c/i18n/decimfmt.cpp:1322:1:
-internal compiler error: in dbx_reg_number, at dwarf2out.c:10185
-
- (GCC Patch)
-
-
-
-
-
-
- - Other bug fixes:
- -
-
- - Header fixes
-
- - Fixed the ARM {@code WCHAR_MIN} and {@code WCHAR_MAX} to be unsigned according to
- spec (the X86/MIPS versions are signed). Define {@code _WCHAR_IS_ALWAYS_SIGNED} to
- restore old behavior. (Issue 57749)
- - Fixed {@code include/netinet/tcp.h} to contain {@code TCP_INFO} state enum.
- (Issue 38881)
- - Fixed the {@code cdefs_elh.h} macro {@code _C_LABEL_STRING} to stop generating
- warnings in the GCC 4.8 toolchain when using c++11 mode.
- (Issue 58135,
- Issue 58652)
- - Removed non-existent functions {@code imaxabs} and {@code imaxdiv} from header
- {@code inttypes.h}.
- - Fixed issue with {@code pthread_exit()} return values and {@code pthread_self()}.
- (Issue 60686)
- - Added missing {@code mkdtemp()} function, which already exists in {@code bionic}
- header {@code stdlib.h}.
-
-
- - Fixed problem building {@code samples/gles3jni} with Clang on Android API level 11.
- - Fixed MCLinker to allow multiple occurrences of the following options:
- {@code -gc-sections} and {@code --eh-frame-hdr}.
- - Fixed MCLinker to accept the {@code --no-warn-mismatch} option.
- - Modified {@code cpu-features} option to not assume all VFPv4 devices support IDIV.
- Now this option only adds IDIV to white-listed devices, including Nexus 4.
- (Issue 57637)
- - Fixed problem with {@code android_native_app_glue.c} erroneously logging errors on event
- predispatch operations.
- - Fixed all operations on {@code gabi++} terminate and unexpected_handler to be
- thread-safe.
- - Fixed several issues with Clang
-integrated-as
option so it can pass
- tests for {@code ssax-instructions} and {@code fenv}.
- - Fixed GCC 4.6/4.7/4.8 compiler to pass the linker option {@code --eh-frame-hdr} even
- for static executables. For more information, see the
- GCC patch.
- - Fixed extra apostrophe in
CPU-ARCH-ABIS.html
. For more information, see
- NDK-DEPENDS.html
. (Issue 60142)
- - Fixed extra quotes in ndk-build output on Windows.
- (Issue 60649)
- - Fixed Clang 3.3 to compile ARM's built-in, atomic operations such as
- {@code __atomic_fetch_add}, {@code __atomic_fetch_sub}, and {@code __atomic_fetch_or}.
-
- - Fixed Clang 3.3 ICE with customized {@code vfprintf}.
- (Clang issue)
-
-
-
-
- - Other changes:
- -
-
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 9 (July 2013)
-
-
-
- - Important changes:
- -
-
- - Added support for Android 4.3 (API level 18). For more information, see
- {@code STABLE-APIS.html} and new code examples in {@code samples/gles3jni/README}.
-
- Added headers and libraries for OpenGL ES 3.0, which is supported by Android 4.3
- (API level 18) and higher.
- - Added GNU Compiler Collection (GCC) 4.8 compiler to the NDK. Since GCC 4.6 is still
- the default, you must explicitly enable this option:
-
- - For {@code ndk-build} builds, export {@code NDK_TOOLCHAIN_VERSION=4.8} or
- add it in {@code Application.mk}.
- - For standalone builds, use the {@code --toolchain=} option in
- {@code make-standalone-toolchain.sh}, for example:
- {@code --toolchain=arm-linux-androideabi-4.8}
-
- Note:
- The {@code -Wunused-local-typedefs} option is enabled by {@code -Wall}. Be
- sure to add {@code __attribute__((unused))} if you use compile-time asserts like
- {@code sources/cxx-stl/stlport/stlport/stl/config/features.h}, line #311. For more
- information, see
- Change 55460
- Note:
- In the GCC 4.7 release and later, ARM compilers generate unaligned access code by
- default for ARMv6 and higher build targets. You may need to add the
- {@code -mno-unaligned-access} build option when building for kernels that do not support
- this feature.
-
- - Added Clang 3.3 support. The {@code NDK_TOOLCHAIN_VERSION=clang} build option
- now picks Clang 3.3 by default.
-
Note:
- Both GCC 4.4.3 and Clang 3.1 are deprecated, and will be removed from the next NDK
- release.
- - Updated GNU Project Debugger (GDB) to support python 2.7.5.
- - Added MCLinker to support Windows hosts. Since {@code ld.gold}
- is the default where available, you must add {@code -fuse-ld=mcld} in
- {@code LOCAL_LDFLAGS} or {@code APP_LDFLAGS} to enable MCLinker.
- - Added {@code ndk-depends} tool which prints ELF library dependencies.
- For more information, see {@code NDK-DEPENDS.html}.
- (Issue 53486)
-
-
-
- - Important bug fixes:
- -
-
-
-
- - Other bug fixes:
- -
-
-
-
- - Other changes:
- -
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 8e (March 2013)
-
-
-
-
- - Important changes:
- -
-
- - Added 64-bit host toolchain set (package name suffix {@code *-x86_64.*}). For more
- information, see {@code CHANGES.HTML} and {@code NDK-BUILD.html}.
- - Added Clang 3.2 compiler. GCC 4.6 is still the default. For information on using the
- Clang compiler, see {@code CHANGES.HTML}.
- - Added static code analyzer for Linux/MacOSX hosts. For information on using the
- analyzer, see {@code CHANGES.HTML}.
- - Added MCLinker for Linux/MacOSX hosts as an experimental feature. The {@code ld.gold}
- linker is the default where available, so you must explicitly enable it. For more
- information, see {@code CHANGES.HTML}.
- - Updated ndk-build to use topological sort for module dependencies, which means the
- build automatically sorts out the order of libraries specified in
- {@code LOCAL_STATIC_LIBRARIES}, {@code LOCAL_WHOLE_STATIC_LIBRARIES} and
- {@code LOCAL_SHARED_LIBRARIES}. For more information, see {@code CHANGES.HTML}.
- (Issue 39378)
-
-
-
- - Important bug fixes:
- -
-
- - Fixed build script to build all toolchains in {@code -O2}. Toolchains in previous
- releases were incorrectly built without optimization.
- - Fixed build script which unconditionally builds Clang/llvm for MacOSX in 64-bit.
- - Fixed GCC 4.6/4.7 internal compiler error:
- {@code gen_thumb_movhi_clobber at config/arm/arm.md:5832}.
- (Issue 52732)
- - Fixed build problem where GCC/ARM 4.6/4.7 fails to link code using 64-bit atomic
- built-in functions.
- (Issue 41297)
- - Fixed GCC 4.7 linker DIV usage mismatch errors.
- (Sourceware Issue)
-
- Fixed GCC 4.7 internal compiler error {@code build_data_member_initialization, at
- cp/semantics.c:5790}.
- - Fixed GCC 4.7 internal compiler error {@code redirect_eh_edge_1, at tree-eh.c:2214}.
- (Issue 52909)
- - Fixed a GCC 4.7 segfault.
- (GCC Issue)
- - Fixed {@code <chrono>} clock resolution and enabled {@code steady_clock}.
- (Issue 39680)
- - Fixed toolchain to enable {@code _GLIBCXX_HAS_GTHREADS} for GCC 4.7 libstdc++.
- (Issue 41770,
- Issue 41859)
- - Fixed problem with the X86 MXX/SSE code failing to link due to missing
- {@code posix_memalign}.
- (Change 51872)
- - Fixed GCC4.7/X86 segmentation fault in {@code i386.c}, function
- {@code distance_non_agu_define_in_bb()}.
- (Change 50383)
- - Fixed GCC4.7/X86 to restore earlier {@code cmov} behavior.
- (GCC Issue)
- - Fixed handling NULL return value of {@code setlocale()} in libstdc++/GCC4.7.
- (Issue 46718)
-
- Fixed {@code ld.gold} runtime undefined reference to {@code __exidx_start} and
- {@code __exidx_start_end}.
- (Change 52134)
- - Fixed Clang 3.1 internal compiler error when using Eigen library.
- (Issue 41246)
- - Fixed Clang 3.1 internal compiler error including {@code <chrono>} in C++11
-mode.
- (Issue 39600)
- - Fixed Clang 3.1 internal compiler error when generating object code for a method
- call to a uniform initialized {@code rvalue}.
- (Issue 41387)
- - Fixed Clang 3.1/X86 stack realignment.
- (Change 52154)
- - Fixed problem with GNU Debugger (GDB) SIGILL when debugging on Android 4.1.2.
- (Issue 40941)
- - Fixed problem where GDB cannot set {@code source:line} breakpoints when symbols
-contain
- long, indirect file paths.
- (Issue 42448)
- - Fixed GDB {@code read_program_header} for MIPS PIE executables.
- (Change 49592)
- - Fixed {@code STLport} segmentation fault in {@code uncaught_exception()}.
- (Change 50236)
- - Fixed {@code STLport} bus error in exception handling due to unaligned access of
- {@code DW_EH_PE_udata2}, {@code DW_EH_PE_udata4}, and {@code DW_EH_PE_udata8}.
- - Fixed Gabi++ infinite recursion problem with {@code nothrow new[]} operator.
- (Issue 52833)
- - Fixed Gabi++ wrong offset to exception handler pointer.
- (Change 53446)
- - Removed Gabi++ redundant free on exception object
- (Change 53447)
-
-
-
- - Other bug fixes:
- -
-
- - Fixed NDK headers:
-
- - Removed redundant definitions of {@code size_t}, {@code ssize_t}, and
- {@code ptrdiff_t}.
- - Fixed MIPS and ARM {@code fenv.h} header.
- - Fixed {@code stddef.h} to not redefine {@code offsetof} since it already exists
- in the toolchain.
- - Fixed {@code elf.h} to contain {@code Elf32_auxv_t} and {@code Elf64_auxv_t}.
- (Issue 38441)
-
- - Fixed the {@code #ifdef} C++ definitions in the
- {@code OpenSLES_AndroidConfiguration.h} header file.
- (Issue 53163)
-
-
-
- - Fixed {@code STLport} to abort after out of memory error instead of silently exiting.
-
- - Fixed system and Gabi++ headers to be able to compile with API level 8 and lower.
- - Fixed {@code cpufeatures} to not parse {@code /proc/self/auxv}.
- (Issue 43055)
- - Fixed {@code ld.gold} to not depend on host libstdc++ and on Windows platforms,
- to not depend on the {@code libgcc_sjlj_1.dll} library.
- - Fixed Clang 3.1 which emits inconsistent register list in {@code .vsave} and fails
- assembler.
- (Change 49930)
- - Fixed Clang 3.1 to be able to compile libgabi++ and pass the {@code test-stlport}
- tests for MIPS build targets.
- (Change 51961)
- - Fixed Clang 3.1 to only enable exception by default for C++, not for C.
- - Fixed several issues in Clang 3.1 to pass most GNU exception tests.
- - Fixed scripts {@code clang} and {@code clang++} in standalone NDK compiler to detect
- {@code -cc1} and to not specify {@code -target} when found.
- - Fixed {@code ndk-build} to observe {@code NDK_APP_OUT} set in {@code Application.mk}.
-
- - Fixed X86 {@code libc.so} and {@code lib.a} which were missing the {@code sigsetjmp}
- and {@code siglongjmp} functions already declared in {@code setjmp.h}.
- (Issue 19851)
- - Patched GCC 4.4.3/4.6/4.7 libstdc++ to work with Clang in C++ 11.
- (Clang Issue)
- - Fixed cygwin path in argument passed to {@code HOST_AWK}.
- - Fixed {@code ndk-build} script warning in windows when running from project's JNI
- directory.
- (Issue 40192)
- - Fixed problem where the {@code ndk-build} script does not build if makefile has
- trailing whitespace in the {@code LOCAL_PATH} definition.
- (Issue 42841)
-
-
-
- - Other changes:
- -
-
- - Enabled threading support in GCC/MIPS toolchain.
- - Updated GCC exception handling helpers {@code __cxa_begin_cleanup} and
- {@code __cxa_type_match} to have default visibility from the previous
- hidden visibility in GNU libstdc++. For more information, see
- {@code CHANGES.HTML}.
- - Updated build scripts so that Gabi++ and STLport static libraries are now built with
- hidden visibility except for exception handling helpers.
- - Updated build so that {@code STLport} is built for ARM in Thumb mode.
- - Added support for {@code std::set_new_handler} in Gabi++.
- (Issue 52805)
- - Enabled {@code FUTEX} system call in GNU libstdc++.
- - Updated {@code ndk-build} so that it no longer copies prebuilt static library to
- a project's {@code obj/local/<abi>/} directory.
- (Issue 40302)
- - Removed {@code __ARM_ARCH_5*__} from ARM {@code toolchains/*/setup.mk} script.
- (Issue 21132)
- - Built additional GNU libstdc++ libraries in thumb for ARM.
- - Enabled MIPS floating-point {@code madd/msub/nmadd/nmsub/recip/rsqrt}
- instructions with 32-bit FPU.
- - Enabled graphite loop optimizer in GCC 4.6 and 4.7 to allow more optimizations:
- {@code -fgraphite}, {@code -fgraphite-identity}, {@code -floop-block}, {@code
--floop-flatten},
- {@code -floop-interchange}, {@code -floop-strip-mine}, {@code -floop-parallelize-all},
- and {@code -ftree-loop-linear}.
- (info)
- - Enabled {@code polly} for Clang 3.1 on Linux and Max OS X 32-bit hosts which analyzes
- and optimizes memory access. (info)
- - Enabled {@code -flto} in GCC 4.7, 4.6, Clang 3.2 and Clang 3.1 on linux (Clang LTO
- via LLVMgold.so). MIPS compiler targets are not supported because {@code ld.gold}
- is not available.
- - Enabled {@code --plugin} and {@code --plugin-opt} for {@code ld.gold} in GCC 4.6/4.7.
-
- - Enabled {@code --text-reorder} for {@code ld.gold} in GCC 4.7.
- - Configured GNU libstdc++ with {@code _GLIBCXX_USE_C99_MATH} which undefines the
- {@code isinf} script in the bionic header. For more information, see
- {@code CHANGES.html}.
- - Added {@code APP_LDFLAGS} to the build scripts. For more information, see
- {@code ANDROID-MK.html}.
- - Updated build scripts to allow {@code NDK_LOG=0} to disable the {@code NDK_LOG}.
- - Updated build scripts to allow {@code NDK_HOST_32BIT=0} to disable the host developer
- environment 32-bit toolchain.
- - Changed the default GCC/X86 flags {@code -march=} and {@code -mtune=} from
- {@code pentiumpro} and {@code generic} to {@code i686} and {@code atom}.
- - Enhanced toolchain build scripts:
-
- - Fixed a race condition in {@code build-gcc.sh} for the {@code mingw} build type
- which was preventing a significant amount of parallel build processing.
- - Updated {@code build-gabi++.sh} and {@code build-stlport.sh} so they can now run
- from the NDK package.
- (Issue 52835)
-
- - Fixed {@code run-tests.sh} in the {@code MSys} utilities collection.
- - Improved 64-bit host toolchain and Canadian Cross build support.
- - Updated {@code build-mingw64-toolchain.sh} script to more recent version.
- - Added option to build {@code libgnustl_static.a} and {@code stlport_static.a}
- without hidden visibility.
-
-
-
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 8d (December 2012)
-
-
-
-
- - Important changes:
- -
-
- - Added the GNU Compiler Collection (GCC) 4.7 compiler to the NDK. The GCC 4.6 compiler
- is still the default, so you must to explicitly enable the new version as follows:
-
-
- Note: This feature is experimental. Please try it and
- report any issues.
-
- - Added {@code stlport} exception support via gabi++. Note that the new gabi++
- depends on {@code dlopen} and related code, meaning that:
-
- - You can no longer build a static executable using the {@code -static}
- option or include {@code libstlport_static.a} using
- {@code APP_STL := stlport_static}. (You can still use the {@code -static} option
- with a standalone toolchain.) Compiling a dynamic executable using
- {@code include $(BUILD_EXECUTABLE)} continues to work because the compiler
- automatically adds the {@code -ldl} option.
- - If your project links using {@code -nostdlib} and {-Wl,--no-undefined}, you
- must manually include the {@code -ldl} option.
-
- For more information, see {@code CPLUSPLUS-SUPPORT.html}.
-
-
- Note: This feature is experimental and works better with the GCC
- 4.6/4.7 compilers than with GCC 4.4.3 or Clang 3.1. Please try it and
- report any issues.
-
- - Added a {@code -mstack-protector-guard=} option for x86 to choose between a
- global default path which is compatible with older Android C library (bionic)
- and a new tls path (%gs:20) for {@code -fstack-protector},
- {@code -fstack-protector-all} and {@code -fstack-protector-strong} using the GCC 4.6
- and higher compilers.
-
-
- Note: The {@code -mstack-protector-guard} setting itself does not
- enable any {@code -fstack-protector*} options.
-
- - Added {@code android_setCpu()} function to
- {@code sources/android/cpufeatures/cpu-features.c} for use when auto-detection via
- {@code /proc} is not possible in Android 4.1 and higher.
- (Chromium Issue
- 164154)
-
-
-
- - Important bug fixes:
- -
-
-
-
- - Other bug fixes:
- -
-
- - NDK header file fixes:
-
- - Fixed {@code __WINT_TYPE__} and {@code wint_t} to be the same type.
- - Corrected typo in {@code android/bitmap.h}.
- (Issue 15134)
-
- - Corrected typo in {@code errno.h}.
- - Added check for the presence of {@code __STDC_VERSION__} in {@code sys/cdefs.h}.
- (Issue 14627)
-
- - Reorganized headers in {@code byteswap.h} and {@code dirent.h}.
- - Fixed {@code limits.h} to include {@code page.h} which provides {@code PAGE_SIZE}
- settings.
- (Issue 39983)
-
- - Fixed return type of {@code glGetAttribLocation()} and
- {@code glGetUniformLocation()} from {@code int} to {@code GLint}.
- - Fixed {@code __BYTE_ORDER} constant for x86 builds.
- (Issue 39824)
-
-
-
- - Fixed {@code ndk-build} script to not overwrite {@code -Os} with {@code -O2} for ARM
- builds.
- - Fixed build scripts to allow overwriting of {@code HOST_AWK}, {@code HOST_SED}, and
- {@code HOST_MAKE} settings.
- - Fixed issue for {@code ld.gold} on {@code fsck_msdos} builds linking objects built by
- the Intel C/C++ compiler (ICC).
- - Fixed ARM EHABI support in Clang to conform to specifications.
- - Fixed GNU Debugger (GDB) to shorten the time spent on walking the target's link map
- during {@code solib} events.
- (Issue 38402)
- - Fixed missing {@code libgcc.a} file when linking shared libraries.
-
-
-
- - Other changes:
- -
-
- - Backported 64-bit built-in atomic functions for ARM to GCC 4.6.
- - Added documentation for audio output latency, along with other documentation and
- fixes.
- - Fixed debug builds with Clang so that non-void functions now raise a {@code SIGILL}
- signal for paths without a return statement.
- - Updated {@code make-standalone-toolchain.sh} to accept the suffix {@code -clang3.1}
- which is equivalent to adding {@code --llvm-version=3.1} to the GCC 4.6 toolchain.
- - Updated GCC and Clang bug report URL to:
- http://source.android.com/source/report-bug
-s.html
- - Added ARM ELF support to {@code llvm-objdump}.
- - Suppressed treating c input as c++ warning for Clang builds.
- - Updated build so that only the 32-bit version of {@code libiberty.a} is built and
- placed in {@code lib32/}.
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 8c (November 2012)
-
-
-
-
- - Important changes:
-
- -
-
-
-
-
-
- - Important bug fixes:
-
- -
-
- - Fixed an issue where running {@code make-standalone-toolchain.sh} with root privileges
- resulted in the stand alone tool chain being inaccessible to some users.
- (Issue 35279)
-
- - All files and executables in the NDK release package are set to have read and
- execute permissions for all.
- - The ownership/group of {@code libstdc++.a} is now preserved when copied.
-
-
- - Removed redundant {@code \r} from Windows prebuilt {@code echo.exe}. The redundant
- {@code \r} caused {@code gdb.setup} to fail in the GNU Debugger (GDB) because it
- incorrectly became part of the path.
- (Issue 36054)
- - Fixed Windows parallel builds that sometimes failed due to timing issues in the
- {@code host-mkdir} implementation.
- (Issue 25875)
- - Fixed GCC 4.4.3 GNU {@code libstdc++} to not merge {@code typeinfo} names by
- default. For more details, see
- {@code toolchain repo gcc/gcc-4.4.3/libstdc++-v3/libsupc++/typeinfo}.
- (Issue 22165)
- - Fixed problem on {@code null} context in GCC 4.6
- {@code cp/mangle.c::write_unscoped_name}, where GCC may crash when the context is
- {@code null} and dereferenced in {@code TREE_CODE}.
- - Fixed GCC 4.4.3 crashes on ARM NEON-specific type definitions for floats.
- (Issue 34613)
- - Fixed the {@code STLport} internal {@code _IteWrapper::operator*()} implementation
- where a stale stack location holding the dereferenced value was returned and caused
- runtime crashes.
- (Issue 38630)
-
- - ARM-specific fixes:
-
- - Fixed ARM GCC 4.4.3/4.6 {@code g++} to not warn that the mangling of
- <va_list> was changed in GCC 4.4. The workaround using the
- {@code -Wno-psabi} switch to avoid this warning is no longer required.
- - Fixed an issue when a project with {@code .arm} or {@code .neon} suffixes in
- {@code LOCAL_SRC_FILES} also used {@code APP_STL}. With {@code APP_STL}, the
- {@code ndk-build} script searches for C++ files in {@code LOCAL_SRC_FILES} before
- adding STL {@code header/lib} paths to compilation. Modified {@code ndk-build} to
- filter out {@code .arm} and {@code .neon} suffixes before the search, otherwise items
- in {@code LOCAL_SRC_FILES} like {@code myfile.cpp.arm.neon} won't be compiled as C++
- code.
- - Fixed {@code binutils-2.21/ld.bfd} to be capable of linking object from older
- binutils without {@code tag_FP_arch}, which was producing assertion fail
- error messages in GNU Binutils.
- (Issue 35209)
-
- - Removed Unknown EABI object attribute 44 warning when
- {@code binutils-2.19/ld} links prebuilt object by newer {@code binutils-2.21}
- - Fixed an issue in GNU {@code stdc++} compilation with both {@code -mthumb} and
- {@code -march=armv7-a}, by modifying {@code make-standalone-toolchain.sh} to populate
- {@code headers/libs} in sub-directory {@code armv7-a/thumb}.
- (Issue 35616)
-
- - Fixed unresolvable R_ARM_THM_CALL relocation error.
- (Issue 35342)
-
- - Fixed internal compiler error at {@code reload1.c:3633}, caused by the ARM
- back-end expecting the wrong operand type when sign-extend from {@code char}.
- (GCC Issue 50099)
- - Fixed internal compiler error with negative shift amount.
- (GCC Issue)
-
-
-
- - Fixed {@code -fstack-protector} for X86, which is also the default for the
- {@code ndk-build} x86 ABI target.
-
- - MIPS-specific fixes:
-
- - Fixed {@code STLport} endian-ness by setting {@code _STLP_LITTLE_ENDIAN} to 1 when
- compiling MIPS {@code libstlport_*}.
- - Fixed GCC {@code __builtin_unreachable} issue when compiling LLVM.
- (GCC Issue 54369)
- - Backported fix for {@code cc1} compile process consuming 100% CPU.
- (GCC Issue 50380)
-
-
-
- - GNU Debugger-specific fixes:
-
- - Disabled Python support in gdb-7.x at build, otherwise the gdb-7.x configure
- function may pick up whatever Python version is available on the host and build
- {@code gdb} with a hard-wired dependency on a specific version of Python.
- (Issue 36120)
-
- - Fixed {@code ndk-gdb} when {@code APP_ABI} contains {@code all} and matchs none
- of the known architectures.
- (Issue 35392)
-
- - Fixed Windows pathname support, by keeping the {@code :} character if it looks
- like it could be part of a Windows path starting with a drive letter.
- (GDB Issue 12843)
-
- - Fixed adding of hardware breakpoint support for ARM in {@code gdbserver}.
- (GDB Issue)
-
- - Added fix to only read the current {@code solibs} when the linker is consistent.
- This change speeds up {@code solib} event handling.
- (Issue 37677)
-
- - Added fix to make repeated attempts to find {@code solib} breakpoints. GDB now
- retries {@code enable_break()} during every call to {@code svr4_current_sos()} until
- it succeeds.
- (Change 43563)
- - Fixed an issue where {@code gdb} would not stop on breakpoints placed in
- {@code dlopen-ed} libraries.
- (Issue 34856)
-
- - Fixed {@code SIGILL} in dynamic linker when calling {@code dlopen()}, on system
- where {@code /system/bin/linker} is stripped of symbols and
- {@code rtld_db_dlactivity()} is implemented as {@code Thumb}, due to not preserving
- {@code LSB} of {@code sym_addr}.
- (Issue 37147)
-
-
-
-
-
-
-
-
- - Other bug fixes:
-
- -
-
- - Fixed NDK headers:
-
- - Fixed {@code arch-mips/include/asm/*} code that was incorrectly removed from
- original kernel. (Change
- 43335)
- - Replaced struct member data {@code __unused} with {@code __linux_unused} in
- {@code linux/sysctl.h} and {@code linux/icmp.h} to avoid conflict with
- {@code #define __unused} in {@code sys/cdefs.h}.
- - Fixed {@code fenv.h} for enclosed C functions with {@code __BEGIN_DECLS} and
- {@code __END_DECLS}.
- - Removed unimplemented functions in {@code malloc.h}.
- - Fixed {@code stdint.h} defintion of {@code uint64_t} for ANSI compilers.
- (Issue 1952)
- - Fixed preprocessor macros in {@code <arch>/include/machine/*}.
- - Replaced {@code link.h} for MIPS with new version supporting all platforms.
- - Removed {@code linux-unistd.h}
- - Move GLibc-specific macros {@code LONG_LONG_MIN}, {@code LONG_LONG_MAX} and
- {@code ULONG_LONG_MAX} from {@code <pthread.h>} to {@code
-<limits.h>}.
-
-
- - Fixed a buffer overflow in {@code ndk-stack-parser}.
- - Fixed {@code _STLP_USE_EXCEPTIONS}, when not defined, to omit all declarations
- and uses of {@code __Named_exception}. Compiling and use of {@code __Named_exception}
- settings only occurs when {@code STLport} is allowed to use exceptions.
- - Fixed building of Linux-only NDK packages without also building Windows code. Use the
- following settings to perform this type of build:
-
./build/tools/make-release.sh --force --systems=linux-x86
- - Fixed {@code libc.so} so it does not export {@code atexit()} and {@code __do_handler}.
- These symbols are exported for ARM builds by the system version of the C library to
- support legacy native libraries. NDK-generated should never reference them directly.
- Instead, each shared library or executable should embed its own version of these symbols,
- provided by {@code crtbegin_*.o}.
-
If your project is linked with the {@code -nostdlib -Wl,--no-undefined} options, you
- must provide your own {@code __dso_handle} because {@code crtbegin_so.o} is not linked in
- this case. The content of {@code __dso_handle} does not matter, as shown in the following
- example code:
-
-extern "C" {
- extern void *__dso_handle __attribute__((__visibility__ ("hidden")));
- void *__dso_handle;
-}
-
-
- - Fixed symbol decoder for ARM used in {@code objdump} for {@code plt} entries to
- generate a more readable form {@code function@plt}.
- - Removed the following symbols, introduced in GCC 4.6 {@code libgcc.a}, from
- the X86 platform {@code libc.so} library: {@code __aeabi_idiv0}, {@code __aeabi_ldiv0},
- {@code __aeabi_unwind_cpp_pr1}, and {@code __aeabi_unwind_cpp_pr2}.
- - Removed unused {@code .ctors}, {@code .dtors}, and {@code .eh_frame} in MIPS
- {@code crt*_so.S}.
- - Updated {@code ndk-gdb} so that it only takes the last line of output for
- {@code ndk-build} {@code DUMP_XXXX}. This change ensures that if {@code Application.mk} or
- {@code Android.mk} print something with {@code $(info ...)} syntax, it does not get
- injected into the result of {@code DUMP_XXXX}.
- (More info)
-
-
-
-
-
- - Other changes:
-
- -
-
- - Removed {@code arch-x86} and {@code arch-mips} headers from
- {@code platforms/android-[3,4,5,8]}. Those headers were incomplete, since both X86 and
- MIPS ABIs are only supported at API 9 or higher.
- - Simplified c++ include path in standalone packages, as shown below.
- (Issue 35279)
-
-<path>/arm-linux-androideabi/include/c++/4.6.x-google
- to:
-<path>/include/c++/4.6/
-
- - Fixed {@code ndk-build} to recognize more C++ file extensions by default:
- {@code .cc .cp .cxx .cpp .CPP .c++ .C}. You may still use {@code LOCAL_CPP_EXTENSION} to
- overwrite these extension settings.
- - Fixed an issue in {@code samples/san-angeles} that caused a black screen or freeze
- frame on re-launch.
- - Replaced deprecated APIs in NDK samples.
- (Issue 20017)
-
- - {@code hello-gl2} from android-5 to android-7
- - {@code native-activity} from android-9 to android-10
- - {@code native-audio} from android-9 to android-10
- - {@code native-plasma} from android-9 to android-10
-
-
- - Added new branding for Android executables with a simpler scheme in section
- {@code .note.android.ident} (defined in {@code crtbegin_static/dynamic.o}) so that
- debugging tools can act accordingly. The structure member and values are defined as
- follows:
-
-static const struct {
- int32_t namesz; /* = 8, sizeof ("Android") */
- int32_t descsz; /* = 1 * sizeof(int32_t) */
- int32_t type; /* = 1, ABI_NOTETYPE */
- char name[sizeof "Android"]; /* = "Android" */
- int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */
-}
-
- The previous branding options in section {@code .note.ABI-tag} are deprecated.
-
- - Added a new script {@code run-tests-all.sh} which calls {@code run-tests.sh} and
- {@code standalone/run.sh} with various conditions. The script {@code run-tests.sh} runs
- without the {@code --abi} option, and is enhanced to compile most of the tests for all
- supported ABIs and run on all attached devices
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 8b (July 2012)
-
-
-
-
The main features of this release are a new GNU Compiler Collection (GCC) 4.6 toolchain and
-GNU Debugger (GDB) 7.3.x which adds debugging support for the Android 4.1 (API Level 16) system
-image.
-
-
- - Important bug fixes:
-
- -
-
- - Fixed {@code LOCAL_SHORT_COMMANDS} issues on Mac OS, Windows Cygwin environments for
-static libraries. List file generation is faster, and it is not regenerated to avoid repeated
-project rebuilds.
- - Fixed several issues in {@code ndk-gdb}:
-
- - Updated tool to pass flags {@code -e}, {@code -d} and {@code -s} to adb more
-consistently.
- - Updated tool to accept device serial names containing spaces.
- - Updated tool to retrieve {@code /system/bin/link} information, so {@code gdb} on
-the host can set a breakpoint in {@code __dl_rtld_db_dlactivity} and be aware of linker activity
-(e.g., rescan {@code solib} symbols when {@code dlopen()} is called).
-
-
- - Fixed {@code ndk-build clean} on Windows, which was failing to remove
-{@code ./libs/*/lib*.so}.
- - Fixed {@code ndk-build.cmd} to return a non-zero {@code ERRORLEVEL} when {@code make}
-fails.
- - Fixed {@code libc.so} to stop incorrectly exporting the {@code __exidx_start} and
-{@code __exidx_end} symbols.
- - Fixed {@code SEGV} when unwinding the stack past {@code __libc_init} for ARM and
-MIPS.
-
-
-
-
-
- - Important changes:
-
- -
-
- - Added GCC 4.6 toolchain ({@code binutils} 2.21 with {@code gold} and GDB 7.3.x) to
-co-exist with the original GCC 4.4.3 toolchain ({@code binutils} 2.19 and GDB 6.6).
-
- - GCC 4.6 is now the default toolchain. You may set {@code
-NDK_TOOLCHAIN_VERSION=4.4.3} in {@code Application.mk} to select the original one.
- - Support for the {@code gold} linker is only available for ARM and x86
-architectures on Linux and Mac OS hosts. This support is disabled by default. Add {@code
-LOCAL_LDLIBS += -fuse-ld=gold} in {@code Android.mk} to enable it.
- - Programs compiled with {@code -fPIE} require the new {@code GDB} for debugging,
-including binaries in Android 4.1 (API Level 16) system images.
- - The {@code binutils} 2.21 {@code ld} tool contains back-ported fixes from
-version 2.22:
-
- - Fixed {@code ld --gc-sections}, which incorrectly retains zombie references to
-external libraries. (more
-info).
- - Fixed ARM {@code strip} command to preserve the original {@code p_align} and
-{@code p_flags} in {@code GNU_RELRO} section if they are valid. Without this fix, programs
-built with {@code -fPIE} could not be debugged. (mor
-e info)
-
-
- - Disabled {@code sincos()} optimization for compatibility with older
- platforms.
-
-
-
- - Updated build options to enable the Never eXecute (NX) bit and {@code relro}/{@code
-bind_now} protections by default:
-
-
-
- - Added branding for Android executables with the {@code .note.ABI-tag} section (in
-{@code crtbegin_static/dynamic.o}) so that debugging tools can act accordingly. The structure
-member and values are defined as follows:
-
-static const struct {
- int32_t namesz; /* = 4, sizeof ("GNU") */
- int32_t descsz; /* = 6 * sizeof(int32_t) */
- int32_t type; /* = 1 */
- char name[sizeof "GNU"]; /* = "GNU" */
- int32_t os; /* = 0 */
- int32_t major; /* = 2 */
- int32_t minor; /* = 6 */
- int32_t teeny; /* = 15 */
- int32_t os_variant; /* = 1 */
- int32_t android_api; /* = 3, 4, 5, 8, 9, 14 */
-}
-
-
-
-
-
-
- - Other bug fixes:
-
- -
-
- - Fixed {@code mips-linux-gnu} relocation truncated to fit {@code R_MIPS_TLS_LDM} issue.
- (more info)
- - Fixed {@code ld} tool segfaults when using {@code --gc-sections}.
- (more info)
-
- - Fixed MIPS {@code GOT_PAGE} counting issue.
- (more info)
- - Fixed follow warning symbol link for {@code mips_elf_count_got_symbols}.
- - Fixed follow warning symbol link for {@code mips_elf_allocate_lazy_stub}.
- - Moved MIPS {@code .dynamic} to the data segment, so that it is writable.
- - Replaced hard-coded values for symbols with correct segment sizes for MIPS.
- - Removed the {@code -mno-shared} option from the defaults in the MIPS toolchain.
-The default for Android toolchain is {@code -fPIC} (or {@code -fpic} if supported). If you do not
-explicitly specify {@code -mshared}, {@code -fpic}, {@code -fPIC}, {@code -fpie}, or {@code -fPIE},
-the MIPS compiler adds {@code -mno-shared} that turns off PIC. Fixed compiler not to add
-{@code -mno-shared} in this case.
- - Fixed wrong package names in samples {@code hello-jni} and {@code two-libs} so that
-the {@code tests} project underneath it can compile.
-
-
-
-
-
- - Other Changes:
-
- -
-
- - Changed locations of binaries:
-
- - Moved {@code gdbserver} from
-{@code toolchain/<arch-os-ver>/prebuilt/gdbserver} to
-{@code prebuilt/android-<arch>/gdbserver/gdbserver}.
- - Renamed x86 toolchain prefix from {@code i686-android-linux-} to
-{@code i686-linux-android-}.
- - Moved {@code sources/cxx-stl/gnu-libstdc++/include} and {@code lib} to
-{@code sources/cxx-stl/gnu-libstdc++/4.6} when compiled with GCC 4.6, or
-{@code sources/cxx-stl/gnu-libstdc++/4.4.3} when compiled with GCC 4.4.3.
- - Moved {@code libbfd.a} and {@code libintl.a} from {@code lib/} to {@code
-lib32/}.
-
-
-
- - Added and improved various scripts in the rebuild and test NDK toolchain:
-
- - Added {@code build-mingw64-toolchain.sh} to generate a new Linux-hosted toolchain
-that generates Win32 and Win64 executables.
- - Improved speed of {@code download-toolchain-sources.sh} by using the {@code
-clone} command and only using {@code checkout} for the directories that are needed to build the NDK
-toolchain binaries.
- - Added {@code build-host-gcc.sh} and {@code build-host-gdb.sh} scripts.
- - Added {@code tests/check-release.sh} to check the content of a given NDK
-installation directory, or an existing NDK package.
- - Rewrote the {@code tests/standalone/run.sh} standalone tests .
-
-
- - Removed {@code if_dl.h} header from all platforms and architectures. The {@code
-AF_LINK} and {@code sockaddr_dl} elements it describes are specific to BSD (i.e., they don't exist
-in Linux).
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 8 (May 2012)
-
-
-
-
This release of the NDK includes support for MIPS ABI and a few additional fixes.
-
-
- - New features:
-
- -
-
- - Added support for the MIPS ABI, which allows you to generate machine code that runs on
- compatible MIPS-based Android devices. Major features for MIPS include MIPS-specific
- toolchains, system headers, libraries and debugging support. For more details regarding
- MIPS support, see {@code docs/CPU-MIPS.html} in the NDK package.
-
-
By default, code is generated for ARM-based devices. You can add {@code mips} to
- your {@code APP_ABI} definition in your {@code Application.mk} file to build
- for MIPS platforms. For example, the following line instructs {@code ndk-build}
- to build your code for three distinct ABIs:
-
- APP_ABI := armeabi armeabi-v7a mips
-
- Unless you rely on architecture-specific assembly sources, such as ARM assembly
- code, you should not need to touch your {@code Android.mk} files to build MIPS
- machine code.
-
-
- - You can build a standalone MIPS toolchain using the {@code --arch=mips}
- option when calling
make-standalone-toolchain.sh
. See
- {@code docs/STANDALONE-TOOLCHAIN.html} for more details.
-
-
-
- Note: To ensure that your applications are available
-to users only if their devices are capable of running them, Google Play filters applications based
-on the instruction set information included in your application ? no action is needed on your part
-to enable the filtering. Additionally, the Android system itself also checks your application at
-install time and allows the installation to continue only if the application provides a library that
-is compiled for the device's CPU architecture.
-
-
- - Important bug fixes:
-
- -
-
- - Fixed a typo in GAbi++ implementation where the result of {@code
- dynamic_cast<D>(b)} of base class object {@code b} to derived class {@code D} is
- incorrectly adjusted in the opposite direction from the base class.
- (Issue 28721)
-
- - Fixed an issue in which {@code make-standalone-toolchain.sh} fails to copy
- {@code libsupc++.*}.
-
-
-
- - Other bug fixes:
-
- -
-
- - Fixed {@code ndk-build.cmd} to ensure that {@code ndk-build.cmd} works correctly even
- if the user has redefined the {@code SHELL} environment variable, which may be changed
- when installing a variety of development tools in Windows environments.
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 7c (April 2012)
-
-
-
-
This release of the NDK includes an important fix for Tegra2-based devices, and a few
-additional fixes and improvements:
-
-
- - Important bug fixes:
-
- -
-
- - Fixed GNU STL armeabi-v7a binaries to not crash on non-NEON
- devices. The files provided with NDK r7b were not configured properly,
- resulting in crashes on Tegra2-based devices and others when trying to use
- certain floating-point functions (e.g., {@code cosf}, {@code sinf}, {@code expf}).
-
-
-
- - Important changes:
-
- -
-
-
-
- - Other bug fixes:
-
- -
-
- - Fixed {@code android_getCpuCount()} implementation in the {@code cpufeatures}
-helper library. On certain devices, where cores are enabled dynamically by the system, the previous
-implementation would report the total number of active cores the first time the function
-was called, rather than the total number of physically available cores.
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 7b (February 2012)
-
-
-
-
This release of the NDK includes fixes for native Windows builds, Cygwin and many other
- improvements:
-
-
- - Important bug fixes:
-
- -
-
-
-
-
-
- - Other changes:
-
- -
-
- - When your application uses the GNU {@code libstdc++} runtime, the compiler will
- no longer forcibly enable exceptions and RTTI. This change results in smaller code.
-
If you need these features, you must do one of the following:
-
- - Enable exceptions and/or RTTI explicitly in your modules or
- {@code Application.mk}. (recommended)
- - Define {@code APP_GNUSTL_FORCE_CPP_FEATURES} to {@code 'exceptions'},
- {@code 'rtti'} or both in your {@code Application.mk}. See
- {@code docs/APPLICATION-MK.html} for more details.
-
-
- - {@code ndk-gdb} now works properly when your application has private services
- running in independent processes. It debugs the main application process, instead of the
- first process listed by {@code ps}, which is usually a service process.
- - Fixed a rare bug where NDK r7 would fail to honor the {@code LOCAL_ARM_MODE} value
- and always compile certain source files (but not all) to 32-bit instructions.
- - {@code STLport}: Refresh the sources to match the Android platform version. This
- update fixes a few minor bugs:
-
- - Fixed instantiation of an incomplete type
- - Fixed minor "==" versus "=" typo
- - Used {@code memmove} instead of {@code memcpy} in {@code string::assign}
- - Added better handling of {@code IsNANorINF}, {@code IsINF}, {@code IsNegNAN},
- etc.
-
- For complete details, see the commit log.
-
- - {@code STLport}: Removed 5 unnecessary static initializers from the library.
- - The GNU libstdc++ libraries for armeabi-v7a were mistakenly compiled for
- armeabi instead. This change had no impact on correctness, but using the right
- ABI should provide slightly better performance.
- - The {@code cpu-features} helper library was updated to report three optional
- x86 CPU features ({@code SSSE3}, {@code MOVBE} and {@code POPCNT}). See
- {@code docs/CPU-FEATURES.html} for more details.
- - {@code docs/NDK-BUILD.html} was updated to mention {@code NDK_APPLICATION_MK} instead
- of {@code NDK_APP_APPLICATION_MK} to select a custom {@code Application.mk} file.
- - Cygwin: {@code ndk-build} no longer creates an empty "NUL" file in the current
- directory when invoked.
- - Cygwin: Added better automatic dependency detection. In the previous version, it
- didn't work properly in the following cases:
-
- - When the Cygwin drive prefix was not {@code /cygdrive}.
- - When using drive-less mounts, for example, when Cygwin would translate
- {@code /home} to {@code \\server\subdir} instead of {@code C:\Some\Dir}.
-
-
- - Cygwin: {@code ndk-build} does not try to use the native Windows tools under
- {@code $NDK/prebuilt/windows/bin} with certain versions of Cygwin and/or GNU Make.
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 7 (November 2011)
-
-
-
-
This release of the NDK includes new features to support the Android 4.0 platform as well
- as many other additions and improvements:
-
-
- - New features
-
- -
-
- - Added official NDK APIs for Android 4.0 (API level 14), which adds the following
- native features to the platform:
-
-
- - Added native multimedia API based on the Khronos Group OpenMAX AL? 1.0.1
- standard. The new
<OMXAL/OpenMAXAL.h>
and
- <OMXAL/OpenMAXAL_Android.h>
headers allow applications targeting
- API level 14 to perform multimedia output directly from native code by using a new
- Android-specific buffer queue interface. For more details, see
- docs/openmaxal/index.html
and http://www.khronos.org/openmax/.
-
- - Updated the native audio API based on the Khronos Group OpenSL ES 1.0.1?
- standard. With API Level 14, you can now decode compressed audio (e.g. MP3, AAC,
- Vorbis) to PCM. For more details, see
docs/opensles/index.html
and
- http://www.khronos.org/opensles/.
-
-
-
- - Added CCache support. To speed up large rebuilds, define the
-
NDK_CCACHE
environment variable to ccache
(or the path to
- your ccache
binary). When declared, the NDK build system automatically
- uses CCache when compiling any source file. For example:
-
-export NDK_CCACHE=ccache
-
- Note: CCache is not included in the NDK release
- so you must have it installed prior to using it. For more information about CCache, see
- http://ccache.samba.org.
-
-
- - Added support for setting
APP_ABI
to all
to indicate that
- you want to build your NDK modules for all the ABIs supported by your given NDK
- release. This means that either one of the following two lines in your
- Application.mk
are equivalent with this release:
-
-APP_ABI := all
-APP_ABI := armeabi armeabi-v7a x86
-
-
- This also works if you define APP_ABI
when calling
- ndk-build
from the command-line, which is a quick way to check that your
- project builds for all supported ABIs without changing the project's
- Application.mk file
. For example:
-
-ndk-build APP_ABI=all
-
-
-
- - Added a
LOCAL_CPP_FEATURES
variable in Android.mk
that
- allows you to declare which C++ features (RTTI or Exceptions) your module uses. This
- ensures that the final linking works correctly if you have prebuilt modules that depend
- on these features. See docs/ANDROID-MK.html
and
- docs/CPLUSPLUS-SUPPORT.html
for more details.
-
- - Shortened paths to source and object files that are used in build commands. When
- invoking
$NDK/ndk-build
from your project path, the paths to the source,
- object, and binary files that are passed to the build commands are significantly
- shorter now, because they are passed relative to the current directory. This is useful
- when building projects with a lot of source files, to avoid limits on the maximum
- command line length supported by your host operating system. The behavior is unchanged
- if you invoke ndk-build
from a sub-directory of your project tree, or if
- you define NDK_PROJECT_PATH
to point to a specific directory.
-
-
-
- - Experimental features
-
- -
- You can now build your NDK source files on Windows without Cygwin by calling the
-
ndk-build.cmd
script from the command line from your project path. The
- script takes exactly the same arguments as the original ndk-build
script.
- The Windows NDK package comes with its own prebuilt binaries for GNU Make, Awk and other
- tools required by the build. You should not need to install anything else to get a
- working build system.
-
- Important: ndk-gdb
does not work on
- Windows, so you still need Cygwin to debug.
-
- This feature is still experimental, so feel free to try it and report issues on the
- public bug database or public forum. All samples and unit tests
- shipped with the NDK succesfully compile with this feature.
-
-
- - Important bug fixes
-
- -
-
- - Imported shared libraries are now installed by default to the target installation
- location (
libs/<abi>
) if APP_MODULES
is not defined in
- your Application.mk
. For example, if a top-level module foo
- imports a module bar
, then both libfoo.so
and
- libbar.so
are copied to the install location. Previously, only
- libfoo.so
was copied, unless you listed bar
in your
- APP_MODULES
too. If you define APP_MODULES
explicitly, the
- behavior is unchanged.
-
- ndk-gdb
now works correctly for activities with multiple categories in
- their MAIN intent filters.
-
- - Static library imports are now properly transitive. For example, if a top-level
- module
foo
imports static library bar
that imports static
- library zoo
, the libfoo.so
will now be linked against both
- libbar.a
and libzoo.a
.
-
-
-
- - Other changes
-
- -
-
- docs/NATIVE-ACTIVITY.HTML
: Fixed typo. The minimum API level should be
- 9, not 8 for native activities.
-
- docs/STABLE-APIS.html
: Added missing documentation listing EGL as a
- supported stable API, starting from API level 9.
-
- download-toolchain-sources.sh
: Updated to download the toolchain
- sources from android.googlesource.com,
- which is the new location for the AOSP servers.
-
- - Added a new C++ support runtime named
gabi++
. More details about it
- are available in the updated docs/CPLUSPLUS-SUPPORT.html
.
-
- - Added a new C++ support runtime named
gnustl_shared
that corresponds
- to the shared library version of GNU libstdc++ v3 (GPLv3 license). See more info at
- docs/CPLUSPLUS-SUPPORT.html
-
- - Added support for RTTI in the STLport C++ runtimes (no support for
- exceptions).
-
- - Added support for multiple file extensions in
LOCAL_CPP_EXTENSION
. For
- example, to compile both foo.cpp
and bar.cxx
as C++ sources,
- declare the following:
-
-LOCAL_CPP_EXTENSION := .cpp .cxx
-
-
-
- - Removed many unwanted exported symbols from the link-time shared system libraries
- provided by the NDK. This ensures that code generated with the standalone toolchain
- doesn't risk to accidentally depend on a non-stable ABI symbol (e.g. any libgcc.a
- symbol that changes each time the toolchain used to build the platform is changed)
-
- - Refreshed the EGL and OpenGLES Khronos headers to support more extensions. Note
- that this does not change the NDK ABIs for the corresponding libraries,
- because each extension must be probed at runtime by the client application.
-
-
The extensions that are available depend on your actual device and GPU drivers,
- not the platform version the device runs on. The header changes simply add new
- constants and types to make it easier to use the extensions when they have been
- probed with eglGetProcAddress()
or glGetProcAddress()
. The
- following list describes the newly supported extensions:
-
-
- - GLES 1.x
-
- -
-
- GL_OES_vertex_array_object
-
- GL_OES_EGL_image_external
-
- GL_APPLE_texture_2D_limited_npot
-
- GL_EXT_blend_minmax
-
- GL_EXT_discard_framebuffer
-
- GL_EXT_multi_draw_arrays
-
- GL_EXT_read_format_bgra
-
- GL_EXT_texture_filter_anisotropic
-
- GL_EXT_texture_format_BGRA8888
-
- GL_EXT_texture_lod_bias
-
- GL_IMG_read_format
-
- GL_IMG_texture_compression_pvrtc
-
- GL_IMG_texture_env_enhanced_fixed_function
-
- GL_IMG_user_clip_plane
-
- GL_IMG_multisampled_render_to_texture
-
- GL_NV_fence
-
- GL_QCOM_driver_control
-
- GL_QCOM_extended_get
-
- GL_QCOM_extended_get2
-
- GL_QCOM_perfmon_global_mode
-
- GL_QCOM_writeonly_rendering
-
- GL_QCOM_tiled_rendering
-
-
-
- - GLES 2.0
-
- -
-
- GL_OES_element_index_uint
-
- GL_OES_get_program_binary
-
- GL_OES_mapbuffer
-
- GL_OES_packed_depth_stencil
-
- GL_OES_texture_3D
-
- GL_OES_texture_float
-
- GL_OES_texture_float_linear
-
- GL_OES_texture_half_float_linear
-
- GL_OES_texture_npot
-
- GL_OES_vertex_array_object
-
- GL_OES_EGL_image_external
-
- GL_AMD_program_binary_Z400
-
- GL_EXT_blend_minmax
-
- GL_EXT_discard_framebuffer
-
- GL_EXT_multi_draw_arrays
-
- GL_EXT_read_format_bgra
-
- GL_EXT_texture_format_BGRA8888
-
- GL_EXT_texture_compression_dxt1
-
- GL_IMG_program_binary
-
- GL_IMG_read_format
-
- GL_IMG_shader_binary
-
- GL_IMG_texture_compression_pvrtc
-
- GL_IMG_multisampled_render_to_texture
-
- GL_NV_coverage_sample
-
- GL_NV_depth_nonlinear
-
- GL_QCOM_extended_get
-
- GL_QCOM_extended_get2
-
- GL_QCOM_writeonly_rendering
-
- GL_QCOM_tiled_rendering
-
-
-
- - EGL
-
- -
-
- EGL_ANDROID_recordable
-
- EGL_NV_system_time
-
-
-
-
-
-
-
-
-
-
-
-
-
- Android NDK, Revision 6b (August 2011)
-
-
-
-
This release of the NDK does not include any new features compared to r6. The r6b release
- addresses the following issues in the r6 release:
-
- - Important bug fixes
- -
-
- - Fixed the build when
APP_ABI="armeabi x86"
is used for
- multi-architecture builds.
- - Fixed the location of prebuilt STLport binaries in the NDK release package.
- A bug in the packaging script placed them in the wrong location.
- - Fixed
atexit()
usage in shared libraries with the x86standalone
- toolchain.
- - Fixed
make-standalone-toolchain.sh --arch=x86
. It used to fail
- to copy the proper GNU libstdc++ binaries to the right location.
- - Fixed the standalone toolchain linker warnings about missing the definition and
- size for the
__dso_handle
symbol (ARM only).
- - Fixed the inclusion order of
$(SYSROOT)/usr/include
for x86 builds.
- See the bug for
- more information.
- - Fixed the definitions of
ptrdiff_t
and size_t
in
- x86-specific systems when they are used with the x86 standalone toolchain.
-
-
-
-
-
-
-
-
- Android NDK, Revision 6 (July 2011)
-
-
-
-
This release of the NDK includes support for the x86 ABI and other minor changes.
- For detailed information describing the changes in this release, read the
- CHANGES.HTML
document included in the NDK package.
-
-
- - General notes:
- -
-
- - Adds support for the x86 ABI, which allows you to generate machine code
- that runs on compatible x86-based Android devices. Major features for x86
- include x86-specific toolchains, system headers, libraries and
- debugging support. For all of the details regarding x86 support,
- see
docs/CPU-X86.html
in the NDK package.
-
- By default, code is generated for ARM-based devices, but you can add x86 to your
- APP_ABI
definition in your Application.mk
file to build
- for x86 platforms. For example, the following line instructs ndk-build
- to build your code for three distinct ABIs:
-
- APP_ABI := armeabi armeabi-v7a x86
-
- Unless you rely on ARM-based assembly sources, you shouldn't need to touch
- your Android.mk
files to build x86 machine code.
-
-
-
- - You can build a standalone x86 toolchain using the
-
--toolchain=x86-4.4.3
- option when calling make-standalone-toolchain.sh
. See
- docs/STANDALONE-TOOLCHAIN.html
for more details.
-
- - The new
ndk-stack
tool lets you translate stack traces in
- logcat
that are generated by native code. The tool translates
- instruction addresses into a readable format that contains things such
- as the function, source file, and line number corresponding to each stack frame.
- For more information and a usage example, see docs/NDK-STACK.html
.
-
-
-
- - Other changes:
- arm-eabi-4.4.0
, which had been deprecated since NDK r5, has been
- removed from the NDK distribution.
-
-
-
-
-
-
-
- Android NDK, Revision 5c (June 2011)
-
-
-
-
This release of the NDK does not include any new features compared to r5b. The r5c release
- addresses the following problems in the r5b release:
-
- - Important bug fixes:
- -
-
- ndk-build
: Fixed a rare bug that appeared when trying to perform parallel
- builds of debuggable projects.
-
- - Fixed a typo that prevented
LOCAL_WHOLE_STATIC_LIBRARIES
to work
- correctly with the new toolchain and added documentation for this in
- docs/ANDROID-MK.html
.
-
- - Fixed a bug where code linked against
gnustl_static
crashed when run on
- platform releases older than API level 8 (Android 2.2).
-
- ndk-gdb
: Fixed a bug that caused a segmentation fault when debugging
-Android 3.0
- or newer devices.
-
- <android/input.h>
: Two functions that were introduced in API level
- 9 (Android 2.3) were incorrect and are fixed. While this breaks the source API, the
- binary interface to the system is unchanged. The incorrect functions were missing a
- history_index
parameter, and the correct definitions are shown below:
-
-float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event,
- size_t pointer_index,
- size_t history_index);
-
-float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event,
- size_t pointer_index,
- size_t history_index);
-
-
-
- - Updated the C library ARM binary for API level 9 (Android 2.3) to correctly expose at
- link time new functions that were added in that API level (for example,
-
pthread_rwlock_init
).
-
-
-
-
- - Minor improvements and fixes:
- -
-
- - Object files are now always linked in the order they appear in
-
LOCAL_SRC_FILES
. This was not the case previously because the files were
- grouped by source extensions instead.
-
- - When
import-module
fails, it now prints the list of directories that
- were searched. This is useful to check that the NDK_MODULE_PATH
definition
- used by the build system is correct.
-
- - When
import-module
succeeds, it now prints the directory where the
- module was found to the log (visible with NDK_LOG=1
).
-
- - Increased the build speed of debuggable applications when there is a very large number
- of include directories in the project.
-
- ndk-gdb
: Better detection of adb shell
failures and improved
- error messages.
-
- <pthread.h>
: Fixed the definition of
- PTHREAD_RWLOCK_INITIALIZER
for API level 9 (Android 2.3) and higher.
-
- - Fixed an issue where a module could import itself, resulting in an infinite loop in
- GNU Make.
-
- - Fixed a bug that caused the build to fail if
LOCAL_ARM_NEON
was set to
- true (typo in build/core/build-binary.mk
).
-
- - Fixed a bug that prevented the compilation of
.s
assembly files
- (.S
files were okay).
-
-
-
-
-
-
-
-
- Android NDK, Revision 5b (January 2011)
-
-
-
-
This release of the NDK does not include any new features compared to r5. The r5b release
-addresses the
- following problems in the r5 release:
-
-
- - The r5 binaries required glibc 2.11, but the r5b binaries are generated with a special
- toolchain that targets glibc 2.7 or higher instead. The Linux toolchain binaries now run on
-Ubuntu 8.04 or higher.
- - Fixes a compiler bug in the arm-linux-androideabi-4.4.3 toolchain.
- The previous binary generated invalid thumb instruction sequences when
- dealing with signed chars.
- - Adds missing documentation for the
- "gnustl_static" value for APP_STL, that allows you to link against
- a static library version of GNU libstdc++.
the
- - Fixed the following
ndk-build
issues:
-
- - A bug that created inconsistent dependency files when a
- compilation error occured on Windows. This prevented a proper build after
- the error was fixed in the source code.
- - A Cygwin-specific bug where using very short paths for
- the Android NDK installation or the project path led to the
- generation of invalid dependency files. This made incremental builds
- impossible.
- - A typo that prevented the cpufeatures library from working correctly
- with the new NDK toolchain.
- - Builds in Cygwin are faster by avoiding calls to
cygpath -m
- from GNU Make for every source or object file, which caused problems
- with very large source trees. In case this doesn't work properly, define
-NDK_USE_CYGPATH=1
in your
- environment to use cygpath -m
again.
- - The Cygwin installation now notifies the user of invalid installation paths that
-contain spaces. Previously, an invalid path
- would output an error that complained about an incorrect version of GNU Make, even if the
-right one was installed.
-
-
- - Fixed a typo that prevented the
NDK_MODULE_PATH
environment variable from
-working properly when
- it contained multiple directories separated with a colon.
- - The
prebuilt-common.sh
script contains fixes to check the compiler for 64-bit
- generated machine code, instead of relying on the host tag, which
- allows the 32-bit toolchain to rebuild properly on Snow Leopard. The toolchain rebuild scripts
-now also support
- using a 32-bit host toolchain.
- - A missing declaration for
INET_ADDRSTRLEN
was added to
-<netinet/in.h>
.
- - Missing declarations for
IN6_IS_ADDR_MC_NODELOCAL
and
-IN6_IS_ADDR_MC_GLOBAL
were added to <netinet/in6.h>
.
- - 'asm' was replaced with '__asm__' in
<asm/byteorder.h>
to allow
-compilation with -std=c99
.
-
-
-
-
-
-
- Android NDK, Revision 5 (December 2010)
-
-
-
-
This release of the NDK includes many new APIs, most of which are introduced to
- support the development of games and similar applications that make extensive use
- of native code. Using the APIs, developers have direct native access to events, audio,
- graphics and window management, assets, and storage. Developers can also implement the
- Android application lifecycle in native code with help from the new
- {@link android.app.NativeActivity} class. For detailed information describing the changes
-in this
- release, read the CHANGES.HTML
document included in the downloaded NDK
-package.
-
-
- - General notes:
- -
-
- - Adds support for native activities, which allows you to implement the
- Android application lifecycle in native code.
-
- - Adds native support for the following:
-
-
-
- - Input subsystem (such as the keyboard and touch screen)
-
- - Access to sensor data (accelerometer, compass, gyroscope, etc).
-
- - Event loop APIs to wait for things such as input and sensor events.
-
- - Window and surface subsystem
-
- - Audio APIs based on the OpenSL ES standard that support playback and recording
- as well as control over platform audio effects
-
- - Access to assets packaged in an
.apk
file.
-
-
-
-
- - Includes a new toolchain (based on GCC 4.4.3), which generates better code, and can
-also now
- be used as a standalone cross-compiler, for people who want to build their stuff with
-
./configure && make
. See
- docs/STANDALONE-TOOLCHAIN.html for the details. The binaries for GCC 4.4.0 are still
-provided,
- but the 4.2.1 binaries were removed.
-
- - Adds support for prebuilt static and shared libraries (docs/PREBUILTS.html) and
-module
- exports and imports to make sharing and reuse of third-party modules much easier
- (docs/IMPORT-MODULE.html explains why).
-
- - Provides a default C++ STL implementation (based on STLport) as a helper module. It
-can be used either
- as a static or shared library (details and usage examples are in
-sources/android/stlport/README). Prebuilt
- binaries for STLport (static or shared) and GNU libstdc++ (static only) are also
-provided if you choose to
- compile against those libraries instead of the default C++ STL implementation.
- C++ Exceptions and RTTI are not supported in the default STL implementation. For more
-information, see
- docs/CPLUSPLUS-SUPPORT.HTML.
-
- - Includes improvements to the
cpufeatures
helper library that improves
-reporting
- of the CPU type (some devices previously reported ARMv7 CPU when the device really was
-an ARMv6). We
- recommend developers that use this library to rebuild their applications then
- upload to Google Play to benefit from the improvements.
-
- - Adds an EGL library that lets you create and manage OpenGL ES textures and
- services.
-
- - Adds new sample applications,
native-plasma
and
-native-activity
,
- to demonstrate how to write a native activity.
-
- - Includes many bugfixes and other small improvements; see docs/CHANGES.html for a
-more
- detailed list of changes.
-
-
-
-
-
-
-
-
- Android NDK, Revision 4b (June 2010)
-
-
-
-
- - NDK r4b notes:
-
- -
-
Includes fixes for several issues in the NDK build and debugging scripts — if
- you are using NDK r4, we recommend downloading the NDK r4b build. For detailed
- information describing the changes in this release, read the CHANGES.TXT document
- included in the downloaded NDK package.
-
-
-
-
- - General notes:
-
- -
-
- - Provides a simplified build system through the new
ndk-build
build
- command.
-
- - Adds support for easy native debugging of generated machine code on production
- devices through the new
ndk-gdb
command.
-
- - Adds a new Android-specific ABI for ARM-based CPU architectures,
-
armeabi-v7a
. The new ABI extends the existing armeabi
ABI to
- include these CPU instruction set extensions:
-
-
- - Thumb-2 instructions
-
- - VFP hardware FPU instructions (VFPv3-D16)
-
- - Optional support for ARM Advanced SIMD (NEON) GCC intrinsics and VFPv3-D32.
- Supported by devices such as Verizon Droid by Motorola, Google Nexus One, and
- others.
-
-
-
- - Adds a new
cpufeatures
static library (with sources) that lets your
- app detect the host device's CPU features at runtime. Specifically, applications can
- check for ARMv7-A support, as well as VFPv3-D32 and NEON support, then provide separate
- code paths as needed.
-
- - Adds a sample application,
hello-neon
, that illustrates how to use the
- cpufeatures
library to check CPU features and then provide an optimized
- code path using NEON instrinsics, if supported by the CPU.
-
- - Lets you generate machine code for either or both of the instruction sets supported
- by the NDK. For example, you can build for both ARMv5 and ARMv7-A architectures at the
- same time and have everything stored to your application's final
-
.apk
.
-
- - To ensure that your applications are available to users only if their devices are
- capable of running them, Google Play now filters applications based on the
- instruction set information included in your application — no action is needed on
- your part to enable the filtering. Additionally, the Android system itself also checks
- your application at install time and allows the installation to continue only if the
- application provides a library that is compiled for the device's CPU architecture.
-
- - Adds support for Android 2.2, including a new stable API for accessing the pixel
- buffers of {@link android.graphics.Bitmap} objects from native code.
-
-
-
-
-
-
-
-
- Android NDK, Revision 3 (March 2010)
-
-
-
-
- - General notes:
-
- -
-
- - Adds OpenGL ES 2.0 native library support.
-
- - Adds a sample application,
hello-gl2
, that illustrates the use of
- OpenGL ES 2.0 vertex and fragment shaders.
-
- - The toolchain binaries have been refreshed for this release with GCC 4.4.0, which
- should generate slightly more compact and efficient machine code than the previous one
- (4.2.1). The NDK also still provides the 4.2.1 binaries, which you can optionally use
- to build your machine code.
-
-
-
-
-
-
-
-
- Android NDK, Revision 2 (September 2009)
-
-
-
-
Originally released as "Android 1.6 NDK, Release 1".
-
-
- - General notes:
-
- -
-
- - Adds OpenGL ES 1.1 native library support.
-
- - Adds a sample application,
san-angeles
, that renders 3D graphics
- through the native OpenGL ES APIs, while managing activity lifecycle with a {@link
- android.opengl.GLSurfaceView} object.
-
-
-
-
-
-
-
-
- Android NDK, Revision 1 (June 2009)
-
-
-
-
Originally released as "Android 1.5 NDK, Release 1".
-
-
- - General notes:
-
- -
-
- - Includes compiler support (GCC) for ARMv5TE instructions, including Thumb-1
- instructions.
-
- - Includes system headers for stable native APIs, documentation, and sample
- applications.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- System and Software Requirements
-
- The sections below describe the system and software requirements for using the Android NDK, as
- well as platform compatibility considerations that affect appplications using libraries produced
- with the NDK.
-
- The Android SDK
-
-
- - A complete Android SDK installation (including all dependencies) is required.
-
- - Android 1.5 SDK or later version is required.
-
-
- Supported operating systems
-
-
- - Windows XP (32-bit) or Vista (32- or 64-bit)
-
- - Mac OS X 10.4.8 or later (x86 only)
-
- - Linux (32 or 64-bit; Ubuntu 8.04, or other Linux distributions using GLibc 2.7 or
-later)
-
-
- Required development tools
-
-
- - For all development platforms, GNU Make 3.81 or later is required. Earlier versions of GNU
- Make might work but have not been tested.
-
- - A recent version of awk (either GNU Awk or Nawk) is also required.
-
- - For Windows, Cygwin 1.7 or higher is required. The NDK
- will not work with Cygwin 1.5 installations.
-
-
-
-
-
- - The native libraries created by the Android NDK can only be used on devices running
- specific minimum Android platform versions. The minimum required platform version depends on
- the CPU architecture of the devices you are targeting. The following table details which
- Android platform versions are compatible with native code developed for specific CPU
- architectures.
-
-
-
- Native Code CPU Architecture Used |
- Compatible Android Platform(s) |
-
-
-
- ARM, ARM-NEON |
- Android 1.5 (API Level 3) and higher |
-
-
-
- x86 |
- Android 2.3 (API Level 9) and higher |
-
-
-
- MIPS |
- Android 2.3 (API Level 9) and higher |
-
-
-
- These requirements mean you can use native libraries produced with the NDK in
- applications that are deployable to ARM-based devices running Android 1.5 or later. If you are
- deploying native libraries to x86 and MIPS-based devices, your application must target Android
- 2.3 or later.
-
-
- - To ensure compatibility, an application using a native library produced with the NDK
- must declare a
- <uses-sdk>
element in its manifest file, with an
- android:minSdkVersion
attribute value of "3" or higher. For example:
-
-
-<manifest>
- <uses-sdk android:minSdkVersion="3" />
- ...
-</manifest>
-
-
-
- - If you use this NDK to create a native library that uses the OpenGL ES APIs, the
- application containing the library can be deployed only to devices running the minimum platform
- versions described in the table below. To ensure compatibility, make sure that your application
- declares the proper
android:minSdkVersion
attribute value, as shown in the
- following table.
-
- -
-
-
- OpenGL ES Version Used |
-
- Compatible Android Platform(s) |
-
- Required uses-sdk Attribute |
-
-
-
- OpenGL ES 1.1 |
-
- Android 1.6 (API Level 4) and higher |
-
- android:minSdkVersion="4" |
-
-
-
- OpenGL ES 2.0 |
-
- Android 2.0 (API Level 5) and higher |
-
- android:minSdkVersion="5" |
-
-
-
- For more information about API Level and its relationship to Android platform versions,
- see Android API
-Levels.
-
-
- - Additionally, an application using the OpenGL ES APIs should declare a
-
<uses-feature>
element in its manifest, with an
- android:glEsVersion
attribute that specifies the minimum OpenGl ES version
- required by the application. This ensures that Google Play will show your application only
- to users whose devices are capable of supporting your application. For example:
-
-<manifest>
-
- <uses-feature android:glEsVersion="0x00020000" />
- ...
-</manifest>
-
-
- For more information, see the <uses-feature>
- documentation.
-
-
- - If you use this NDK to create a native library that uses the API to access Android {@link
- android.graphics.Bitmap} pixel buffers or utilizes native activities, the application
- containing the library can be deployed only to devices running Android 2.2 (API level 8) or
- higher. To ensure compatibility, make sure that your application declares
<uses-sdk
- android:minSdkVersion="8" />
attribute value in its manifest.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Installing the NDK
- Installing the NDK on your development computer is straightforward and involves extracting the
- NDK from its download package.
-
- Before you get started make sure that you have downloaded the latest Android SDK and upgraded your applications and environment as
- needed. The NDK is compatible with older platform versions but not older versions of the SDK
-tools.
- Also, take a moment to review the System and
-Software Requirements
- for the NDK, if you haven't already.
-
- To install the NDK, first download the appropriate package from the table at the top of this
- page. Then, follow the procedure for your development platform:
-
- - On Linux and Mac OS X (Darwin):
-
-
- - Download the appropriate package from this page.
- - Open a terminal window.
- - Go to the directory to which you downloaded the package.
- - Run
chmod a+x
on the downloaded package.
- - Execute the package. For example:
-
-ndk$ chmod a+x android-ndk-r10c-darwin-x86_64.bin
-ndk$ ./android-ndk-r10c-darwin-x86_64.bin
-
- The folder containing the NDK extracts itself.
- Note that you can also use a program like 7z to extract the package.
-
-
- - On Windows:
-
-
- - Download the appropriate package from this page.
- - Navigate to the folder to which you downloaded the package.
- - Double-click the downloaded file. The folder containing the NDK extracts itself.
-
-
-
When uncompressed, the NDK files are contained in a directory called
- android-ndk-<version>
. You can rename the NDK directory if necessary and you
- can move it to any location on your computer. This documentation refers to the NDK directory as
- <ndk>
.
-
-
- You are now ready to start working with the NDK.
-
-
-Getting Started with the NDK
-
-Once you've installed the NDK successfully, take a few minutes to read the documentation
-included in the NDK. You can find the documentation in the <ndk>/docs/
-directory. In particular, please read the OVERVIEW.HTML document completely, so that you
-understand the intent of the NDK and how to use it.
-
-If you used a previous version of the NDK, take a moment to review the list of NDK changes in
-the CHANGES.HTML document.
-
-Here's the general outline of how you work with the NDK tools:
-
-
- - Place your native sources under
<project>/jni/...
-
- - Create
<project>/jni/Android.mk
to describe your native sources to the
- NDK build system
-
- - Optional: Create
<project>/jni/Application.mk
.
-
- - Build your native code by running the 'ndk-build' script from your project's directory. It
- is located in the top-level NDK directory:
-
cd <project>
-<ndk>/ndk-build
-
-
- The build tools copy the stripped, shared libraries needed by your application to the
- proper location in the application's project directory.
-
-
- - Finally, compile your application using the SDK tools in the usual way. The SDK build tools
- will package the shared libraries in the application's deployable
.apk
file.
-
-
-For complete information on all of the steps listed above, please see the documentation
-included with the NDK package.
-
-
-Using the NDK
-
-The Android framework provides two ways to use native code:
-
-
- - Write your application using the Android framework and use JNI to access the APIs provided
- by the Android NDK. This technique allows you to take advantage of the convenience of the
- Android framework, but still allows you to write native code when necessary. If you use this
- approach, your application must target specific, minimum Android platform levels, see Android platform compatibility for more information.
-
- -
-
Write a native activity, which allows you to implement the lifecycle callbacks in native
- code. The Android SDK provides the {@link android.app.NativeActivity} class, which is a
- convenience class that notifies your
- native code of any activity lifecycle callbacks (onCreate()
,
-onPause()
,
- onResume()
, etc). You can implement the callbacks in your native code to handle
- these events when they occur. Applications that use native activities must be run on Android
- 2.3 (API Level 9) or later.
-
- You cannot access features such as Services and Content Providers natively, so if you want
- to use them or any other framework API, you can still write JNI code to do so.
-
-
-
-
-
-
-
- Contents of the NDK
-
- The NDK contains the APIs, documentation, and sample
- applications that help you write your native code. Specifically:
-
-
- - A set of tools and build files used to generate native code libraries from C and C++
- sources
-
- - A way to embed the corresponding native libraries into an application package file
- (
.apk
) that can be deployed on Android devices
-
- - A set of native system headers and libraries that will be supported in all future versions
- of the Android platform, starting from Android 1.5. Applications that use native activities
- must be run on Android 2.3 or later.
-
- - Documentation, samples, and tutorials
-
-
- The latest release of the NDK supports the following instruction sets:
-
-
- - ARMv5TE, including Thumb-1 instructions (see {@code docs/CPU-ARCH-ABIS.html} for more
-information)
-
- - ARMv7-A, including Thumb-2 and VFPv3-D16 instructions, with optional support for
- NEON/VFPv3-D32 instructions (see {@code docs/CPU-ARM-NEON.html} for more information)
-
- - x86 instructions (see {@code docs/CPU-X86.html} for more information)
-
- - MIPS instructions (see {@code docs/CPU-MIPS.html} for more information)
-
-
- ARMv5TE machine code will run on all ARM-based Android devices. ARMv7-A will run only on
- devices such as the Verizon Droid or Google Nexus One that have a compatible CPU. The main
- difference between the two instruction sets is that ARMv7-A supports hardware FPU, Thumb-2, and
- NEON instructions. You can target either or both of the instruction sets — ARMv5TE is the
- default, but switching to ARMv7-A is as easy as adding a single line to the application's
- Application.mk
file, without needing to change anything else in the file. You can
-also build for
- both architectures at the same time and have everything stored in the final .apk
.
- Complete information is provided in the CPU-ARCH-ABIS.HTML in the NDK package.
-
- The NDK provides stable headers for libc (the C library), libm (the Math library), OpenGL ES
- (3D graphics library), the JNI interface, and other libraries, as listed in the Development tools section.
-
-
-
-
- The NDK includes a set of cross-toolchains (compilers, linkers, etc.) that can generate
- native ARM binaries on Linux, OS X, and Windows (with Cygwin) platforms.
-
- It provides a set of system headers for stable native APIs that are guaranteed to be supported
- in all later releases of the platform:
-
-
- - libc (C library) headers
-
- - libm (math library) headers
-
- - JNI interface headers
-
- - libz (Zlib compression) headers
-
- - liblog (Android logging) header
-
- - OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers
-
- - libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).
-
- - A Minimal set of headers for C++ support
-
- - OpenSL ES native audio libraries
-
- - Android native application APIS
-
-
- The NDK also provides a build system that lets you work efficiently with your sources, without
- having to handle the toolchain/platform/CPU/ABI details. You create very short build files to
- describe which sources to compile and which Android application will use them — the build
- system compiles the sources and places the shared libraries directly in your application
- project.
-
- Important: With the exception of the libraries listed above,
- native system libraries in the Android platform are not stable and may change in future
- platform versions. Your applications should only make use of the stable native system
- libraries provided in this NDK.
-
-
-
- Documentation
-
- The NDK package includes a set of documentation that describes the capabilities of the NDK and
- how to use it to create shared libraries for your Android applications. In this release, the
- documentation is provided only in the downloadable NDK package. You can find the documentation in
- the <ndk>/docs/
directory. Included are these files (partial listing):
-
-
- -
- INSTALL.HTML — describes how to install the NDK and configure it for your host
- system
-
- - OVERVIEW.HTML — provides an overview of the NDK capabilities and usage
-
- - ANDROID-MK.HTML — describes the use of the Android.mk file, which defines the native
- sources you want to compile
-
- - APPLICATION-MK.HTML — describes the use of the Application.mk file, which describes
- the native sources required by your Android application
- - CPLUSPLUS-SUPPORT.HTML — describes the C++ support provided in the Android NDK
- - CPU-ARCH-ABIS.HTML — a description of supported CPU architectures and how to target
- them.
-
- - CPU-FEATURES.HTML — a description of the
cpufeatures
static library that
- lets your application code detect the target device's CPU family and the optional features at
- runtime.
-
- - CHANGES.HTML — a complete list of changes to the NDK across all releases.
-
- - DEVELOPMENT.HTML — describes how to modify the NDK and generate release packages for
-it
-
- - HOWTO.HTML — information about common tasks associated with NDK development
-
- - IMPORT-MODULE.HTML — describes how to share and reuse modules
-
- - LICENSES.HTML — information about the various open source licenses that govern the
-Android NDK
-
- - NATIVE-ACTIVITY.HTML — describes how to implement native activities
-
- - NDK-BUILD.HTML — describes the usage of the ndk-build script
-
- - NDK-GDB.HTML — describes how to use the native code debugger
-
- - PREBUILTS.HTML — information about how shared and static prebuilt libraries work
-
- - STANDALONE-TOOLCHAIN.HTML — describes how to use Android NDK toolchain as a standalone
- compiler (still in beta).
-
- - SYSTEM-ISSUES.HTML — known issues in the Android system images that you should be
- aware of, if you are developing using the NDK.
-
- - STABLE-APIS.HTML — a complete list of the stable APIs exposed by headers in the
- NDK.
-
-
-
- Additionally, the package includes detailed information about the "bionic" C library provided
- with the Android platform that you should be aware of, if you are developing using the NDK. You
- can find the documentation in the <ndk>/docs/system/libc/
directory:
-
-
- - OVERVIEW.HTML — provides an overview of the "bionic" C library and the features it
- offers.
-
-
-
-
-
-
-Sample apps
-
-The NDK includes sample applications that illustrate how to use native code in your Android
- applications:
-
-
- hello-jni
— a simple application that loads a string from a native
- method implemented in a shared library and then displays it in the application UI.
-
- two-libs
— a simple application that loads a shared library dynamically
- and calls a native method provided by the library. In this case, the method is implemented in a
- static library imported by the shared library.
-
- san-angeles
— a simple application that renders 3D graphics through the
- native OpenGL ES APIs, while managing activity lifecycle with a {@link
- android.opengl.GLSurfaceView} object.
-
- hello-gl2
— a simple application that renders a triangle using OpenGL ES
- 2.0 vertex and fragment shaders.
-
- hello-neon
— a simple application that shows how to use the
- cpufeatures
library to check CPU capabilities at runtime, then use NEON intrinsics
- if supported by the CPU. Specifically, the application implements two versions of a tiny
- benchmark for a FIR filter loop, a C version and a NEON-optimized version for devices that
- support it.
-
- bitmap-plasma
— a simple application that demonstrates how to access the
- pixel buffers of Android {@link android.graphics.Bitmap} objects from native code, and uses
- this to generate an old-school "plasma" effect.
-
- native-activity
— a simple application that demonstrates how to use the
- native-app-glue static library to create a native activity
-
- native-plasma
— a version of bitmap-plasma implemented with a native
- activity.
-
-
- For each sample, the NDK includes the corresponding C source code and the necessary Android.mk
- and Application.mk files. There are located under <ndk>/samples/<name>/
- and their source code can be found under <ndk>/samples/<name>/jni/
.
-
- You can build the shared libraries for the sample apps by going into
- <ndk>/samples/<name>/
then calling the ndk-build
command.
- The generated shared libraries will be located under
- <ndk>/samples/<name>/libs/armeabi/
for (ARMv5TE machine code) and/or
- <ndk>/samples/<name>/libs/armeabi-v7a/
for (ARMv7 machine code).
-
- Next, build the sample Android applications that use the shared libraries:
-
-
- - If you are developing in Eclipse with ADT, use the New Project Wizard to create a new
- Android project for each sample, using the "Import from Existing Source" option and importing
- the source from
<ndk>/samples/<name>/
. Then, set up an AVD,
- if necessary, and build/run the application in the emulator.
-
- - If you are developing with Ant, use the
android
tool to create the build file
- for each of the sample projects at <ndk>/samples/<name>/
.
- Then set up an AVD, if necessary, build your project in the usual way, and run it in the
- emulator.
-
-
-
- For more information about developing with the Android SDK tools and what
- you need to do to create, build, and run your applications, see
- the Overview
- section for developing on Android.
-
-
-
- Exploring the hello-jni Sample
-
- The hello-jni sample is a simple demonstration on how to use JNI from an Android application.
- The HelloJni activity receives a string from a simple C function and displays it in a
- TextView.
-
- The main components of the sample include:
-
-
- - The familiar basic structure of an Android application (an
AndroidManifest.xml
- file, a src/
and res
directories, and a main activity)
-
- - A
jni/
directory that includes the implemented source file for the native code
- as well as the Android.mk file
-
- - A
tests/
directory that contains unit test code.
-
-
-
- - Create a new project in Eclipse from the existing sample source or use the
-
android
tool to update the project so it generates a build.xml file that you can
- use to build the sample.
-
-
- - In Eclipse:
-
-
- - Click File > New Android Project...
-
- - Select the Create project from existing source radio button.
-
- - Select any API level above Android 1.5.
-
- - In the Location field, click Browse... and select
- the
<ndk-root>/samples/hello-jni
directory.
-
- - Click Finish.
-
-
-
- - On the command line:
-
-
- - Change to the
<ndk-root>/samples/hello-jni
directory.
-
- - Run the following command to generate a build.xml file:
-
android update project -p . -s
-
-
-
-
-
-
- - Compile the native code using the
ndk-build
command.
-
-cd <ndk-root>/samples/hello-jni
-<ndk_root>/ndk-build
-
-
-
- - Build and install the application as you would a normal Android application. If you are
- using Eclipse, run the application to build and install it on a device. If you are using Ant,
- run the following commands from the project directory:
-
-ant debug
-adb install bin/HelloJni-debug.apk
-
-
-
-
- When you run the application on the device, the string Hello JNI
should appear on
- your device. You can explore the rest of the samples that are located in the
- <ndk-root>/samples
directory for more examples on how to use the JNI.
-
-
-
- Exploring the native-activity Sample Application
-
- The native-activity sample provided with the Android NDK demonstrates how to use the
- android_native_app_glue static library. This static library makes creating a native activity
- easier by providing you with an implementation that handles your callbacks in another thread, so
- you do not have to worry about them blocking your main UI thread. The main parts of the sample
- are described below:
-
-
- - The familiar basic structure of an Android application (an
AndroidManifest.xml
- file, a src/
and res
directories). The AndroidManifest.xml declares
- that the application is native and specifies the .so file of the native activity. See {@link
- android.app.NativeActivity} for the source or see the
- <ndk_root>/platforms/samples/native-activity/AndroidManifest.xml
file.
-
- - A
jni/
directory contains the native activity, main.c, which uses the
- android_native_app_glue.h
interface to implement the activity. The Android.mk that
- describes the native module to the build system also exists here.
-
-
- To build this sample application:
-
-
- - Create a new project in Eclipse from the existing sample source or use the
-
android
tool to update the project so it generates a build.xml file that you can
- use to build the sample.
-
-
- - In Eclipse:
-
-
- - Click File > New Android Project...
-
- - Select the Create project from existing source radio button.
-
- - Select any API level above Android 2.3.
-
- - In the Location field, click Browse... and select
- the
<ndk-root>/samples/native-activity
directory.
-
- - Click Finish.
-
-
-
- - On the command line:
-
-
- - Change to the
<ndk-root>/samples/native-activity
directory.
-
- - Run the following command to generate a build.xml file:
-
-android update project -p . -s
-
-
-
-
-
-
-
- - Compile the native code using the
ndk-build
command.
-
-cd <ndk-root>/platforms/samples/android-9/samples/native-activity
-<ndk_root>/ndk-build
-
-
+ if it is essential to your app—never because you simply prefer to program in C/C++.
+ When examining whether or not you should develop in native code, think about your requirements and
+ see if the Android framework APIs provide the functionality that you need.
- - Build and install the application as you would a normal Android application. If you are
- using Eclipse, run the application to build and install it on a device. If you are using Ant,
- run the following commands in the project directory, then run the application on the device:
-
-ant debug
-adb install bin/NativeActivity-debug.apk
-
-
-
+
+ NDK Documentation and Downloads
--
cgit v1.1