d0116b680a
docs: fix ndk filename Change-Id: I7de46a11733bc262aaba61346d334de555408c85
588 lines
26 KiB
Plaintext
588 lines
26 KiB
Plaintext
ndk=true
|
|
|
|
ndk.win_download=android-ndk-r6b-windows.zip
|
|
ndk.win_bytes=67670219
|
|
ndk.win_checksum=f496b48fffb6d341303de170a081b812
|
|
|
|
ndk.mac_download=android-ndk-r6b-darwin-x86.tar.bz2
|
|
ndk.mac_bytes=52798843
|
|
ndk.mac_checksum=65f2589ac1b08aabe3183f9ed1a8ce8e
|
|
|
|
ndk.linux_download=android-ndk-r6b-linux-x86.tar.bz2
|
|
ndk.linux_bytes=46532436
|
|
ndk.linux_checksum=309f35e49b64313cfb20ac428df4cec2
|
|
|
|
page.title=Android NDK
|
|
@jd:body
|
|
|
|
<h2 id="notes">Revisions</h2>
|
|
|
|
<p>The sections below provide information and notes about successive releases of
|
|
the NDK, as denoted by revision number. </p>
|
|
|
|
<script type="text/javascript">
|
|
function toggleDiv(link) {
|
|
var toggleable = $(link).parent();
|
|
if (toggleable.hasClass("closed")) {
|
|
//$(".toggleme", toggleable).slideDown("fast");
|
|
toggleable.removeClass("closed");
|
|
toggleable.addClass("open");
|
|
$(".toggle-img", toggleable).attr("title", "hide").attr("src", "{@docRoot}assets/images/triangle-opened.png");
|
|
} else {
|
|
//$(".toggleme", toggleable).slideUp("fast");
|
|
toggleable.removeClass("open");
|
|
toggleable.addClass("closed");
|
|
$(".toggle-img", toggleable).attr("title", "show").attr("src", "/assets/images/triangle-closed.png");
|
|
}
|
|
return false;
|
|
}
|
|
</script>
|
|
<style>
|
|
.toggleable {
|
|
padding: .25em 1em;
|
|
}
|
|
.toggleme {
|
|
padding: 1em 1em 0 2em;
|
|
line-height:1em;
|
|
}
|
|
.toggleable a {
|
|
text-decoration:none;
|
|
}
|
|
.toggleme a {
|
|
text-decoration:underline;
|
|
}
|
|
.toggleable.closed .toggleme {
|
|
display:none;}
|
|
#jd-content .toggle-img {
|
|
margin:0;
|
|
}
|
|
</style>
|
|
|
|
<div class="toggleable open">
|
|
<a href="#" onclick="return toggleDiv(this)"><img src=
|
|
"{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px">
|
|
Android NDK, Revision 6b</a> <em>(August 2011)</em>
|
|
|
|
<div class="toggleme">
|
|
<p>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:</p>
|
|
<dl>
|
|
<dt>Important bug fixes</dt>
|
|
<dd>
|
|
<ul>
|
|
<li>Fixed the build when <code>APP_ABI="armeabi x86"</code> is used for
|
|
multi-architecture builds.</li>
|
|
<li>Fixed the location of prebuilt STLport binaries in the NDK release package.
|
|
A bug in the packaging script placed them in the wrong location.</li>
|
|
<li>Fixed <code>atexit()</code> usage in shared libraries with the x86standalone
|
|
toolchain.</li>
|
|
<li>Fixed <code>make-standalone-toolchain.sh --arch=x86</code>. It used to fail
|
|
to copy the proper GNU libstdc++ binaries to the right location.</li>
|
|
<li>Fixed the standalone toolchain linker warnings about missing the definition and
|
|
size for the <code>__dso_handle</code> symbol (ARM only).</li>
|
|
<li>Fixed the inclusion order of <code>$(SYSROOT)/usr/include</code> for x86 builds.
|
|
See the <a href="http://code.google.com/p/android/issues/detail?id=18540">bug</a> for
|
|
more information.</li>
|
|
<li>Fixed the definitions of <code>ptrdiff_t</code> and <code>size_t</code> in
|
|
x86-specific systems when they are used with the x86 standalone toolchain.</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggleable closed">
|
|
<a href="#" onclick="return toggleDiv(this)"><img src=
|
|
"{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px">
|
|
Android NDK, Revision 6</a> <em>(July 2011)</em>
|
|
|
|
<div class="toggleme">
|
|
<p>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
|
|
<code>CHANGES.HTML</code> document included in the NDK package.
|
|
</p>
|
|
<dl>
|
|
<dt>General notes:</dt>
|
|
<dd>
|
|
<ul>
|
|
<li>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 <code>docs/CPU-X86.html</code> in the NDK package.
|
|
|
|
<p>By default, code is generated for ARM-based devices, but you can add x86 to your
|
|
<code>APP_ABI</code> definition in your <code>Application.mk</code> file to build
|
|
for x86 platforms. For example, the following line instructs <code>ndk-build</code>
|
|
to build your code for three distinct ABIs:</p>
|
|
|
|
<pre>APP_ABI := armeabi armeabi-v7a x86</pre>
|
|
|
|
<p>Unless you rely on ARM-based assembly sources, you shouldn't need to touch
|
|
your <code>Android.mk</code> files to build x86 machine code.</p>
|
|
|
|
</li>
|
|
|
|
<li>You can build a standalone x86 toolchain using the <code>--toolchain=x86-4.4.3</code>
|
|
option when calling <code>make-standalone-toolchain.sh</code>. See
|
|
<code>docs/STANDALONE-TOOLCHAIN.html</code> for more details.
|
|
</li>
|
|
<li>The new <code>ndk-stack</code> tool lets you translate stack traces in
|
|
<code>logcat</code> 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 <code>docs/NDK-STACK.html</code>.
|
|
</li>
|
|
</ul>
|
|
</dd>
|
|
<dt>Other changes:</dt>
|
|
<dd><code>arm-eabi-4.4.0</code>, which had been deprecated since NDK r5, has been
|
|
removed from the NDK distribution.</dd>
|
|
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggleable closed">
|
|
<a href="#" onclick="return toggleDiv(this)"><img src=
|
|
"{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px">
|
|
Android NDK, Revision 5c</a> <em>(June 2011)</em>
|
|
|
|
<div class="toggleme">
|
|
<p>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:</p>
|
|
<dl>
|
|
<dt>Important bug fixes:</dt>
|
|
<dd>
|
|
<ul>
|
|
<li><code>ndk-build</code>: Fixed a rare bug that appeared when trying to perform parallel
|
|
builds of debuggable projects.</li>
|
|
|
|
<li>Fixed a typo that prevented <code>LOCAL_WHOLE_STATIC_LIBRARIES</code> to work
|
|
correctly with the new toolchain and added documentation for this in
|
|
<code>docs/ANDROID-MK.html</code>.</li>
|
|
|
|
<li>Fixed a bug where code linked against <code>gnustl_static</code> crashed when run on
|
|
platform releases older than API level 8 (Android 2.2).</li>
|
|
|
|
<li><code>ndk-gdb</code>: Fixed a bug that caused a segmentation fault when debugging Android 3.0
|
|
or newer devices.</li>
|
|
|
|
<li><code><android/input.h></code>: 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
|
|
<code>history_index</code> parameter, and the correct definitions are shown below:
|
|
<pre>
|
|
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);
|
|
</pre>
|
|
</li>
|
|
|
|
<li>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,
|
|
<code>pthread_rwlock_init</code>).</li>
|
|
|
|
</ul>
|
|
</dd>
|
|
|
|
<dt>Minor improvements and fixes:</dt>
|
|
<dd>
|
|
<ul>
|
|
<li>Object files are now always linked in the order they appear in
|
|
<code>LOCAL_SRC_FILES</code>. This was not the case previously because the files were
|
|
grouped by source extensions instead.</li>
|
|
|
|
<li>When <code>import-module</code> fails, it now prints the list of directories that
|
|
were searched. This is useful to check that the <code>NDK_MODULE_PATH</code> definition
|
|
used by the build system is correct.</li>
|
|
|
|
<li>When <code>import-module</code> succeeds, it now prints the directory where the
|
|
module was found to the log (visible with <code>NDK_LOG=1</code>).</li>
|
|
|
|
<li>Increased the build speed of debuggable applications when there is a very large number
|
|
of include directories in the project.</li>
|
|
|
|
<li><code>ndk-gdb</code>: Better detection of <code>adb shell</code> failures and improved
|
|
error messages.</li>
|
|
|
|
<li><code><pthread.h></code>: Fixed the definition of
|
|
<code>PTHREAD_RWLOCK_INITIALIZER</code> for API level 9 (Android 2.3) and higher.</li>
|
|
|
|
<li>Fixed an issue where a module could import itself, resulting in an infinite loop in
|
|
GNU Make.</li>
|
|
|
|
<li>Fixed a bug that caused the build to fail if <code>LOCAL_ARM_NEON</code> was set to
|
|
true (typo in <code>build/core/build-binary.mk</code>).</li>
|
|
|
|
<li>Fixed a bug that prevented the compilation of </code>.s</code> assembly files
|
|
(<code>.S</code> files were okay).</li>
|
|
</ul>
|
|
</dd>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggleable closed">
|
|
<a href="#"
|
|
onclick="return toggleDiv(this)"><img src="{@docRoot}assets/images/triangle-closed.png"
|
|
class="toggle-img"
|
|
height="9px"
|
|
width="9px" /> Android NDK, Revision 5b</a> <em>(January 2011)</em>
|
|
|
|
<div class="toggleme">
|
|
<p>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:
|
|
</p>
|
|
<ul>
|
|
<li>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. </li>
|
|
<li>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.</li>
|
|
<li>Adds missing documentation for the
|
|
"gnustl_static" value for APP_STL, that allows you to link against
|
|
a static library version of GNU libstdc++. </li>
|
|
<li>The following <code>ndk-build</code> issues are fixed:
|
|
<ul>
|
|
<li>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.</li>
|
|
<li>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.</li>
|
|
<li>A typo that prevented the cpufeatures library from working correctly
|
|
with the new NDK toolchain.</li>
|
|
<li>Builds in Cygwin are faster by avoiding calls to <code>cygpath -m</code>
|
|
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 <code>NDK_USE_CYGPATH=1</code> in your
|
|
environment to use <code>cygpath -m</code> again.</li>
|
|
<li>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.
|
|
</ul>
|
|
</li>
|
|
<li>Fixed a typo that prevented the <code>NDK_MODULE_PATH</code> environment variable from working properly when
|
|
it contained multiple directories separated with a colon. </li>
|
|
<li>The <code>prebuilt-common.sh</code> 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.</li>
|
|
<li>A missing declaration for <code>INET_ADDRSTRLEN</code> was added to <code><netinet/in.h></code>.</li>
|
|
<li>Missing declarations for <code>IN6_IS_ADDR_MC_NODELOCAL</code> and <code>IN6_IS_ADDR_MC_GLOBAL</code> were added to <code><netinet/in6.h></code>.</li>
|
|
<li>'asm' was replaced with '__asm__' in <code><asm/byteorder.h></code> to allow compilation with <code>-std=c99</code>.</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggleable closed">
|
|
<a href="#"
|
|
onclick="return toggleDiv(this)"><img src="{@docRoot}assets/images/triangle-closed.png"
|
|
class="toggle-img"
|
|
height="9px"
|
|
width="9px" /> Android NDK, Revision 5</a> <em>(December 2010)</em>
|
|
|
|
<div class="toggleme">
|
|
<p>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 <code>CHANGES.HTML</code> document included in the downloaded NDK package.
|
|
</p>
|
|
<dl>
|
|
<dt>General notes:</dt>
|
|
<dd>
|
|
<ul>
|
|
<li>Adds support for native activities, which allows you to implement the
|
|
Android application lifecycle in native code.</li>
|
|
|
|
<li>Adds native support for the following:
|
|
|
|
<ul>
|
|
|
|
<li>Input subsystem (such as the keyboard and touch screen)</li>
|
|
|
|
<li>Access to sensor data (accelerometer, compass, gyroscope, etc).</li>
|
|
|
|
<li>Event loop APIs to wait for things such as input and sensor events.</li>
|
|
|
|
<li>Window and surface subsystem</li>
|
|
|
|
<li>Audio APIs based on the OpenSL ES standard that support playback and recording
|
|
as well as control over platform audio effects</li>
|
|
|
|
<li>Access to assets packaged in an <code>.apk</code> file.</li>
|
|
|
|
</ul>
|
|
</li>
|
|
|
|
<li>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
|
|
<code>./configure && make</code>. 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.</li>
|
|
|
|
<li>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).</li>
|
|
|
|
<li>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.</li>
|
|
|
|
<li>Includes improvements to the <code>cpufeatures</code> 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 Market to benefit from the improvements.</li>
|
|
|
|
<li>Adds an EGL library that lets you create and manage OpenGL ES textures and
|
|
services.</li>
|
|
|
|
<li>Adds new sample applications, <code>native-plasma</code> and <code>native-activity</code>,
|
|
to demonstrate how to write a native activity.</li>
|
|
|
|
<li>Includes many bugfixes and other small improvements; see docs/CHANGES.html for a more
|
|
detailed list of changes.</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggleable closed">
|
|
<a href="#"
|
|
onclick="return toggleDiv(this)"><img src="{@docRoot}assets/images/triangle-closed.png"
|
|
class="toggle-img"
|
|
height="9px"
|
|
width="9px" /> Android NDK, Revision 4b</a> <em>(June 2010)</em>
|
|
|
|
<div class="toggleme">
|
|
<dl>
|
|
<dt>NDK r4b notes:</dt>
|
|
|
|
<dd>
|
|
<p>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.</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<dl>
|
|
<dt>General notes:</dt>
|
|
|
|
<dd>
|
|
<ul>
|
|
<li>Provides a simplified build system through the new <code>ndk-build</code> build
|
|
command.</li>
|
|
|
|
<li>Adds support for easy native debugging of generated machine code on production
|
|
devices through the new <code>ndk-gdb</code> command.</li>
|
|
|
|
<li>Adds a new Android-specific ABI for ARM-based CPU architectures,
|
|
<code>armeabi-v7a</code>. The new ABI extends the existing <code>armeabi</code> ABI to
|
|
include these CPU instruction set extensions:
|
|
|
|
<ul>
|
|
<li>Thumb-2 instructions</li>
|
|
|
|
<li>VFP hardware FPU instructions (VFPv3-D16)</li>
|
|
|
|
<li>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.</li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li>Adds a new <code>cpufeatures</code> 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.</li>
|
|
|
|
<li>Adds a sample application, <code>hello-neon</code>, that illustrates how to use the
|
|
<code>cpufeatures</code> library to check CPU features and then provide an optimized
|
|
code path using NEON instrinsics, if supported by the CPU.</li>
|
|
|
|
<li>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
|
|
<code>.apk</code>.</li>
|
|
|
|
<li>To ensure that your applications are available to users only if their devices are
|
|
capable of running them, Android Market 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.</li>
|
|
|
|
<li>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.</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggleable closed">
|
|
<a href="#"
|
|
onclick="return toggleDiv(this)"><img src="{@docRoot}assets/images/triangle-closed.png"
|
|
class="toggle-img"
|
|
height="9px"
|
|
width="9px" /> Android NDK, Revision 3</a> <em>(March 2010)</em>
|
|
|
|
<div class="toggleme">
|
|
<dl>
|
|
<dt>General notes:</dt>
|
|
|
|
<dd>
|
|
<ul>
|
|
<li>Adds OpenGL ES 2.0 native library support.</li>
|
|
|
|
<li>Adds a sample application,<code>hello-gl2</code>, that illustrates the use of
|
|
OpenGL ES 2.0 vertex and fragment shaders.</li>
|
|
|
|
<li>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.</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggleable closed">
|
|
<a href="#"
|
|
onclick="return toggleDiv(this)"><img src="{@docRoot}assets/images/triangle-closed.png"
|
|
class="toggle-img"
|
|
height="9px"
|
|
width="9px" /> Android NDK, Revision 2</a> <em>(September 2009)</em>
|
|
|
|
<div class="toggleme">
|
|
<p>Originally released as "Android 1.6 NDK, Release 1".</p>
|
|
|
|
<dl>
|
|
<dt>General notes:</dt>
|
|
|
|
<dd>
|
|
<ul>
|
|
<li>Adds OpenGL ES 1.1 native library support.</li>
|
|
|
|
<li>Adds a sample application, <code>san-angeles</code>, that renders 3D graphics
|
|
through the native OpenGL ES APIs, while managing activity lifecycle with a {@link
|
|
android.opengl.GLSurfaceView} object.</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toggleable closed">
|
|
<a href="#"
|
|
onclick="return toggleDiv(this)"><img src="{@docRoot}assets/images/triangle-closed.png"
|
|
class="toggle-img"
|
|
height="9px"
|
|
width="9px" /> Android NDK, Revision 1</a> <em>(June 2009)</em>
|
|
|
|
<div class="toggleme">
|
|
<p>Originally released as "Android 1.5 NDK, Release 1".</p>
|
|
|
|
<dl>
|
|
<dt>General notes:</dt>
|
|
|
|
<dd>
|
|
<ul>
|
|
<li>Includes compiler support (GCC) for ARMv5TE instructions, including Thumb-1
|
|
instructions.</li>
|
|
|
|
<li>Includes system headers for stable native APIs, documentation, and sample
|
|
applications.</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<h2 id="installing">Installing the NDK</h2>
|
|
<p>Installing the NDK on your development computer is straightforward and involves extracting the
|
|
NDK from its download package.</p>
|
|
|
|
<p>Before you get started make sure that you have downloaded the latest <a href=
|
|
"{@docRoot}sdk/index.html">Android SDK</a> 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 <a href="{@docRoot}sdk/ndk/overview.html#reqs">System and
|
|
Software Requirements</a>
|
|
for the NDK, if you haven't already.</p>
|
|
|
|
<p>To install the NDK, follow these steps:</p>
|
|
|
|
<ol>
|
|
<li>From the table at the top of this page, select the NDK package that is appropriate for your
|
|
development computer and download the package.</li>
|
|
|
|
<li>Uncompress the NDK download package using tools available on your computer. When
|
|
uncompressed, the NDK files are contained in a directory called
|
|
<code>android-ndk-<version></code>. 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
|
|
<code><ndk></code>.</li>
|
|
</ol>
|
|
|
|
<p>You are now ready to start working with the NDK.</p>
|
|
|
|
<h2 id="gettingstarted">Getting Started with the NDK</h2>
|
|
|
|
<p>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 <code><ndk>/docs/</code>
|
|
directory. In particular, please read the OVERVIEW.HTML document completely, so that you
|
|
understand the intent of the NDK and how to use it.</p>
|
|
|
|
<p>If you used a previous version of the NDK, take a moment to review the list of NDK changes in
|
|
the CHANGES.HTML document.</p>
|
|
|
|
<p>Here's the general outline of how you work with the NDK tools:</p>
|
|
|
|
<ol>
|
|
<li>Place your native sources under <code><project>/jni/...</code></li>
|
|
|
|
<li>Create <code><project>/jni/Android.mk</code> to describe your native sources to the
|
|
NDK build system</li>
|
|
|
|
<li>Optional: Create <code><project>/jni/Application.mk</code>.</li>
|
|
|
|
<li>Build your native code by running the 'ndk-build' script from your project's directory. It
|
|
is located in the top-level NDK directory:
|
|
<pre class="no-pretty-print">cd <project>
|
|
<ndk>/ndk-build
|
|
</pre>
|
|
|
|
<p>The build tools copy the stripped, shared libraries needed by your application to the
|
|
proper location in the application's project directory.</p>
|
|
</li>
|
|
|
|
<li>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 <code>.apk</code> file.</li>
|
|
</ol>
|
|
|
|
<p>For complete information on all of the steps listed above, please see the documentation
|
|
included with the NDK package.</p>
|
|
|
|
<h2 id="samples">Sample Applications</h2>
|
|
|
|
<p>The NDK includes sample Android applications that illustrate how to use native code in your
|
|
Android applications. For more information, see <a href=
|
|
"{@docRoot}sdk/ndk/overview.html#samples">Sample Applications</a>.</p>
|
|
|
|
<h2 id="forum">Discussion Forum and Mailing List</h2>
|
|
|
|
<p>If you have questions about the NDK or would like to read or contribute to discussions about
|
|
it, please visit the <a href="http://groups.google.com/group/android-ndk">android-ndk</a> group
|
|
and mailing list.</p>
|