Skip to content

Commit 5ad6f64

Browse files
Robert LyAndroid (Google) Code Review
authored andcommitted
Merge "docs: ndk r7 rel notes" into ics-mr0
2 parents 7b8bec2 + d992aaa commit 5ad6f64

File tree

2 files changed

+316
-10
lines changed

2 files changed

+316
-10
lines changed

docs/html/sdk/ndk/index.jd

Lines changed: 314 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
ndk=true
22

3-
ndk.win_download=android-ndk-r6b-windows.zip
4-
ndk.win_bytes=67670219
5-
ndk.win_checksum=f496b48fffb6d341303de170a081b812
3+
ndk.win_download=android-ndk-r7-windows.zip
4+
ndk.win_bytes=81270552
5+
ndk.win_checksum=55483482cf2b75e8dd1a5d9a7caeb6e5
66

7-
ndk.mac_download=android-ndk-r6b-darwin-x86.tar.bz2
8-
ndk.mac_bytes=52798843
9-
ndk.mac_checksum=65f2589ac1b08aabe3183f9ed1a8ce8e
7+
ndk.mac_download=android-ndk-r7-darwin-x86.tar.bz2
8+
ndk.mac_bytes=71262092
9+
ndk.mac_checksum=817ca5675a1dd44078098e43070f19b6
1010

11-
ndk.linux_download=android-ndk-r6b-linux-x86.tar.bz2
12-
ndk.linux_bytes=46532436
13-
ndk.linux_checksum=309f35e49b64313cfb20ac428df4cec2
11+
ndk.linux_download=android-ndk-r7-linux-x86.tar.bz2
12+
ndk.linux_bytes=64884365
13+
ndk.linux_checksum=bf15e6b47bf50824c4b96849bf003ca3
1414

1515
page.title=Android NDK
16+
1617
@jd:body
1718

1819
<h2 id="notes">Revisions</h2>
@@ -61,6 +62,310 @@ padding: .25em 1em;
6162
<div class="toggleable open">
6263
<a href="#" onclick="return toggleDiv(this)"><img src=
6364
"{@docRoot}assets/images/triangle-opened.png" class="toggle-img" height="9px" width="9px">
65+
Android NDK, Revision 7</a> <em>(November 2011)</em>
66+
67+
<div class="toggleme">
68+
<p>This release of the NDK includes new features to support the Android 4.0 platform as well
69+
as many other additions and improvements:</p>
70+
71+
<dl>
72+
<dt>New features</dt>
73+
74+
<dd>
75+
<ul>
76+
<li>Added official NDK APIs for Android 4.0 (API level 14), which adds the following
77+
native features to the platform:
78+
79+
<ul>
80+
<li>Added native multimedia API based on the Khronos Group OpenMAX AL™ 1.0.1
81+
standard. The new <code>&lt;OMXAL/OpenMAXAL.h&gt;</code> and
82+
<code>&lt;OMXAL/OpenMAXAL_Android.h&gt;</code> headers allow applications targeting
83+
API level 14 to perform multimedia output directly from native code by using a new
84+
Android-specific buffer queue interface. For more details, see
85+
<code>docs/openmaxal/index.html</code> and <a href=
86+
"http://www.khronos.org/openmax/">http://www.khronos.org/openmax/</a>.</li>
87+
88+
<li>Updated the native audio API based on the Khronos Group OpenSL ES 1.0.1™
89+
standard. With API Level 14, you can now decode compressed audio (e.g. MP3, AAC,
90+
Vorbis) to PCM. For more details, see <code>docs/opensles/index.html</code> and
91+
<a href=
92+
"http://www.khronos.org/opensles">http://www.khronos.org/opensles/</a>.</li>
93+
</ul>
94+
</li>
95+
96+
<li>Added CCache support. To speed up large rebuilds, define the
97+
<code>NDK_CCACHE</code> environment variable to <code>ccache</code> (or the path to
98+
your <code>ccache</code> binary). When declared, the NDK build system automatically
99+
uses CCache when compiling any source file. For example:
100+
<pre>
101+
export NDK_CCACHE=ccache
102+
</pre>
103+
<p class="note"><strong>Note:</strong> CCache is not included in the NDK release
104+
so you must have it installed prior to using it. For more information about CCache, see
105+
<a href="http://ccache.samba.org">http://ccache.samba.org</a>.</p>
106+
</li>
107+
108+
<li>Added support for setting <code>APP_ABI</code> to <code>all</code> to indicate that
109+
you want to build your NDK modules for all the ABIs supported by your given NDK
110+
release. This means that either one of the following two lines in your
111+
<code>Application.mk</code> are equivalent with this release:
112+
<pre>
113+
APP_ABI := all
114+
APP_ABI := armeabi armeabi-v7a x86
115+
</pre>
116+
117+
<p>This also works if you define <code>APP_ABI</code> when calling
118+
<code>ndk-build</code> from the command-line, which is a quick way to check that your
119+
project builds for all supported ABIs without changing the project's
120+
<code>Application.mk file</code>. For example:</p>
121+
<pre>
122+
ndk-build APP_ABI=all
123+
</pre>
124+
</li>
125+
126+
<li>Added a <code>LOCAL_CPP_FEATURES</code> variable in <code>Android.mk</code> that
127+
allows you to declare which C++ features (RTTI or Exceptions) your module uses. This
128+
ensures that the final linking works correctly if you have prebuilt modules that depend
129+
on these features. See <code>docs/ANDROID-MK.html</code> and
130+
<code>docs/CPLUSPLUS-SUPPORT.html</code> for more details.</li>
131+
132+
<li>Shortened paths to source and object files that are used in build commands. When
133+
invoking <code>$NDK/ndk-build</code> from your project path, the paths to the source,
134+
object, and binary files that are passed to the build commands are significantly
135+
shorter now, because they are passed relative to the current directory. This is useful
136+
when building projects with a lot of source files, to avoid limits on the maximum
137+
command line length supported by your host operating system. The behavior is unchanged
138+
if you invoke <code>ndk-build</code> from a sub-directory of your project tree, or if
139+
you define <code>NDK_PROJECT_PATH</code> to point to a specific directory.</li>
140+
</ul>
141+
</dd>
142+
143+
<dt>Experimental features</dt>
144+
145+
<dd>
146+
You can now build your NDK source files on Windows <em>without</em> Cygwin by calling the
147+
<code>ndk-build.cmd</code> script from the command line from your project path. The
148+
script takes exactly the same arguments as the original <code>ndk-build</code> script.
149+
The Windows NDK package comes with its own prebuilt binaries for GNU Make, Awk and other
150+
tools required by the build. You should not need to install anything else to get a
151+
working build system.
152+
153+
<p class="caution"><strong>Important:</strong> <code>ndk-gdb</code> does not work on
154+
Windows, so you still need Cygwin to debug.</p>
155+
156+
<p>This feature is still experimental, so feel free to try it and report issues on the
157+
<a href="http://b.android.com">public bug database</a> or <a href=
158+
"http://groups.google.com/group/android-ndk">public forum</a>. All samples and unit tests
159+
shipped with the NDK succesfully compile with this feature.</p>
160+
</dd>
161+
162+
<dt>Important bug fixes</dt>
163+
164+
<dd>
165+
<ul>
166+
<li>Imported shared libraries are now installed by default to the target installation
167+
location (<code>libs/&lt;abi&gt;</code>) if <code>APP_MODULES</code> is not defined in
168+
your <code>Application.mk</code>. For example, if a top-level module <code>foo</code>
169+
imports a module <code>bar</code>, then both <code>libfoo.so</code> and
170+
<code>libbar.so</code> are copied to the install location. Previously, only
171+
<code>libfoo.so</code> was copied, unless you listed <code>bar</code> in your
172+
<code>APP_MODULES</code> too. If you define <code>APP_MODULES</code> explicitly, the
173+
behavior is unchanged.</li>
174+
175+
<li><code>ndk-gdb</code> now works correctly for activities with multiple categories in
176+
their MAIN intent filters.</li>
177+
178+
<li>Static library imports are now properly transitive. For example, if a top-level
179+
module <code>foo</code> imports static library <code>bar</code> that imports static
180+
library <code>zoo</code>, the <code>libfoo.so</code> will now be linked against both
181+
<code>libbar.a</code> and <code>libzoo.a</code>.</li>
182+
</ul>
183+
</dd>
184+
185+
<dt>Other changes</dt>
186+
187+
<dd>
188+
<ul>
189+
<li><code>docs/NATIVE-ACTIVITY.HTML</code>: Fixed typo. The minimum API level should be
190+
9, not 8 for native activities.</li>
191+
192+
<li><code>docs/STABLE-APIS.html</code>: Added missing documentation listing EGL as a
193+
supported stable API, starting from API level 9.</li>
194+
195+
<li><code>download-toolchain-sources.sh</code>: Updated to download the toolchain
196+
sources from <a href="http://android.googlesource.com">android.googlesource.com</a>,
197+
which is the new location for the AOSP servers.</li>
198+
199+
<li>Added a new C++ support runtime named <code>gabi++</code>. More details about it
200+
are available in the updated <code>docs/CPLUSPLUS-SUPPORT.html</code>.</li>
201+
202+
<li>Added a new C++ support runtime named <code>gnustl_shared</code> that corresponds
203+
to the shared library version of GNU libstdc++ v3 (GPLv3 license). See more info at
204+
<code>docs/CPLUSPLUS-SUPPORT.html</code></li>
205+
206+
<li>Added support for RTTI in the STLport C++ runtimes (no support for
207+
exceptions).</li>
208+
209+
<li>Added support for multiple file extensions in <code>LOCAL_CPP_EXTENSION</code>. For
210+
example, to compile both <code>foo.cpp</code> and <code>bar.cxx</code> as C++ sources,
211+
declare the following:
212+
<pre>
213+
LOCAL_CPP_EXTENSION := .cpp .cxx
214+
</pre>
215+
</li>
216+
217+
<li>Removed many unwanted exported symbols from the link-time shared system libraries
218+
provided by the NDK. This ensures that code generated with the standalone toolchain
219+
doesn't risk to accidentally depend on a non-stable ABI symbol (e.g. any libgcc.a
220+
symbol that changes each time the toolchain used to build the platform is changed)</li>
221+
222+
<li>Refreshed the EGL and OpenGLES Khronos headers to support more extensions. Note
223+
that this does <em>not</em> change the NDK ABIs for the corresponding libraries,
224+
because each extension must be probed at runtime by the client application.
225+
226+
<p>The extensions that are available depend on your actual device and GPU drivers,
227+
not the platform version the device runs on. The header changes simply add new
228+
constants and types to make it easier to use the extensions when they have been
229+
probed with <code>eglGetProcAddress()</code> or <code>glGetProcAddress()</code>. The
230+
following list describes the newly supported extensions:</p>
231+
232+
<dl>
233+
<dt>GLES 1.x</dt>
234+
235+
<dd>
236+
<ul>
237+
<li><code>GL_OES_vertex_array_object</code></li>
238+
239+
<li><code>GL_OES_EGL_image_external</code></li>
240+
241+
<li><code>GL_APPLE_texture_2D_limited_npot</code></li>
242+
243+
<li><code>GL_EXT_blend_minmax</code></li>
244+
245+
<li><code>GL_EXT_discard_framebuffer</code></li>
246+
247+
<li><code>GL_EXT_multi_draw_arrays</code></li>
248+
249+
<li><code>GL_EXT_read_format_bgra</code></li>
250+
251+
<li><code>GL_EXT_texture_filter_anisotropic</code></li>
252+
253+
<li><code>GL_EXT_texture_format_BGRA8888</code></li>
254+
255+
<li><code>GL_EXT_texture_lod_bias</code></li>
256+
257+
<li><code>GL_IMG_read_format</code></li>
258+
259+
<li><code>GL_IMG_texture_compression_pvrtc</code></li>
260+
261+
<li><code>GL_IMG_texture_env_enhanced_fixed_function</code></li>
262+
263+
<li><code>GL_IMG_user_clip_plane</code></li>
264+
265+
<li><code>GL_IMG_multisampled_render_to_texture</code></li>
266+
267+
<li><code>GL_NV_fence</code></li>
268+
269+
<li><code>GL_QCOM_driver_control</code></li>
270+
271+
<li><code>GL_QCOM_extended_get</code></li>
272+
273+
<li><code>GL_QCOM_extended_get2</code></li>
274+
275+
<li><code>GL_QCOM_perfmon_global_mode</code></li>
276+
277+
<li><code>GL_QCOM_writeonly_rendering</code></li>
278+
279+
<li><code>GL_QCOM_tiled_rendering</code></li>
280+
</ul>
281+
</dd>
282+
283+
<dt>GLES 2.0</dt>
284+
285+
<dd>
286+
<ul>
287+
<li><code>GL_OES_element_index_uint</code></li>
288+
289+
<li><code>GL_OES_get_program_binary</code></li>
290+
291+
<li><code>GL_OES_mapbuffer</code></li>
292+
293+
<li><code>GL_OES_packed_depth_stencil</code></li>
294+
295+
<li><code>GL_OES_texture_3D</code></li>
296+
297+
<li><code>GL_OES_texture_float</code></li>
298+
299+
<li><code>GL_OES_texture_float_linear</code></li>
300+
301+
<li><code>GL_OES_texture_half_float_linear</code></li>
302+
303+
<li><code>GL_OES_texture_npot</code></li>
304+
305+
<li><code>GL_OES_vertex_array_object</code></li>
306+
307+
<li><code>GL_OES_EGL_image_external</code></li>
308+
309+
<li><code>GL_AMD_program_binary_Z400</code></li>
310+
311+
<li><code>GL_EXT_blend_minmax</code></li>
312+
313+
<li><code>GL_EXT_discard_framebuffer</code></li>
314+
315+
<li><code>GL_EXT_multi_draw_arrays</code></li>
316+
317+
<li><code>GL_EXT_read_format_bgra</code></li>
318+
319+
<li><code>GL_EXT_texture_format_BGRA8888</code></li>
320+
321+
<li><code>GL_EXT_texture_compression_dxt1</code></li>
322+
323+
<li><code>GL_IMG_program_binary</code></li>
324+
325+
<li><code>GL_IMG_read_format</code></li>
326+
327+
<li><code>GL_IMG_shader_binary</code></li>
328+
329+
<li><code>GL_IMG_texture_compression_pvrtc</code></li>
330+
331+
<li><code>GL_IMG_multisampled_render_to_texture</code></li>
332+
333+
<li><code>GL_NV_coverage_sample</code></li>
334+
335+
<li><code>GL_NV_depth_nonlinear</code></li>
336+
337+
<li><code>GL_QCOM_extended_get</code></li>
338+
339+
<li><code>GL_QCOM_extended_get2</code></li>
340+
341+
<li><code>GL_QCOM_writeonly_rendering</code></li>
342+
343+
<li><code>GL_QCOM_tiled_rendering</code></li>
344+
</ul>
345+
</dd>
346+
347+
<dt>EGL</dt>
348+
349+
<dd>
350+
<ul>
351+
<li><code>EGL_ANDROID_recordable</code></li>
352+
353+
<li><code>EGL_NV_system_time</code></li>
354+
</ul>
355+
</dd>
356+
</dl>
357+
</li>
358+
</ul>
359+
</dd>
360+
</dl>
361+
</div>
362+
</div>
363+
364+
365+
366+
<div class="toggleable closed">
367+
<a href="#" onclick="return toggleDiv(this)"><img src=
368+
"{@docRoot}assets/images/triangle-closed.png" class="toggle-img" height="9px" width="9px">
64369
Android NDK, Revision 6b</a> <em>(August 2011)</em>
65370

66371
<div class="toggleme">

docs/html/sdk/sdk_toc.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@
192192
<span style="display:none" class="zh-TW"></span>
193193
</h2>
194194
<ul>
195-
<li><a href="<?cs var:toroot ?>sdk/ndk/index.html">Android NDK, r6b</a>
195+
<li><a href="<?cs var:toroot ?>sdk/ndk/index.html">Android NDK, r7</a>
196+
<span class="new">new!</span>
196197
</li>
197198
<li><a href="<?cs var:toroot ?>sdk/ndk/overview.html">What is the NDK?</a></li>
198199
</ul>

0 commit comments

Comments
 (0)