|
1 | 1 | ndk=true |
2 | 2 |
|
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 |
6 | 6 |
|
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 |
10 | 10 |
|
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 |
14 | 14 |
|
15 | 15 | page.title=Android NDK |
| 16 | + |
16 | 17 | @jd:body |
17 | 18 |
|
18 | 19 | <h2 id="notes">Revisions</h2> |
@@ -61,6 +62,310 @@ padding: .25em 1em; |
61 | 62 | <div class="toggleable open"> |
62 | 63 | <a href="#" onclick="return toggleDiv(this)"><img src= |
63 | 64 | "{@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><OMXAL/OpenMAXAL.h></code> and |
| 82 | + <code><OMXAL/OpenMAXAL_Android.h></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/<abi></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"> |
64 | 369 | Android NDK, Revision 6b</a> <em>(August 2011)</em> |
65 | 370 |
|
66 | 371 | <div class="toggleme"> |
|
0 commit comments