741 lines
19 KiB
HTML
741 lines
19 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
|
|
<html>
|
|
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
|
|
<base target="_top">
|
|
|
|
<style type="text/css">
|
|
|
|
|
|
/* default css */
|
|
|
|
table {
|
|
font-size: 1em;
|
|
line-height: inherit;
|
|
}
|
|
|
|
|
|
tr {
|
|
|
|
text-align: left;
|
|
|
|
}
|
|
|
|
|
|
div, address, ol, ul, li, option, select {
|
|
margin-top: 0px;
|
|
margin-bottom: 0px;
|
|
}
|
|
|
|
p {
|
|
margin: 0px;
|
|
}
|
|
|
|
body {
|
|
margin: 6px;
|
|
padding: 0px;
|
|
font-family: Verdana, sans-serif;
|
|
font-size: 10pt;
|
|
background-color: #ffffff;
|
|
}
|
|
|
|
|
|
img {
|
|
-moz-force-broken-image-icon: 1;
|
|
}
|
|
|
|
@media screen {
|
|
html.pageview {
|
|
background-color: #f3f3f3 !important;
|
|
}
|
|
|
|
|
|
|
|
body {
|
|
min-height: 1100px;
|
|
|
|
counter-reset: __goog_page__;
|
|
}
|
|
* html body {
|
|
height: 1100px;
|
|
}
|
|
.pageview body {
|
|
border-top: 1px solid #ccc;
|
|
border-left: 1px solid #ccc;
|
|
border-right: 2px solid #bbb;
|
|
border-bottom: 2px solid #bbb;
|
|
width: 648px !important;
|
|
margin: 15px auto 25px;
|
|
padding: 40px 50px;
|
|
}
|
|
/* IE6 */
|
|
* html {
|
|
overflow-y: scroll;
|
|
}
|
|
* html.pageview body {
|
|
overflow-x: auto;
|
|
}
|
|
/* Prevent repaint errors when scrolling in Safari. This "Star-7" css hack
|
|
targets Safari 3.1, but not WebKit nightlies and presumably Safari 4.
|
|
That's OK because this bug is fixed in WebKit nightlies/Safari 4 :-). */
|
|
html*#wys_frame::before {
|
|
content: '\A0';
|
|
position: fixed;
|
|
overflow: hidden;
|
|
width: 0;
|
|
height: 0;
|
|
top: 0;
|
|
left: 0;
|
|
}
|
|
|
|
|
|
|
|
|
|
.writely-callout-data {
|
|
display: none;
|
|
*display: inline-block;
|
|
*width: 0;
|
|
*height: 0;
|
|
*overflow: hidden;
|
|
}
|
|
.writely-footnote-marker {
|
|
background-image: url('MISSING');
|
|
background-color: transparent;
|
|
background-repeat: no-repeat;
|
|
width: 7px;
|
|
overflow: hidden;
|
|
height: 16px;
|
|
vertical-align: top;
|
|
|
|
|
|
-moz-user-select: none;
|
|
}
|
|
.editor .writely-footnote-marker {
|
|
cursor: move;
|
|
}
|
|
.writely-footnote-marker-highlight {
|
|
background-position: -15px 0;
|
|
-moz-user-select: text;
|
|
}
|
|
.writely-footnote-hide-selection ::-moz-selection, .writely-footnote-hide-selection::-moz-selection {
|
|
background: transparent;
|
|
}
|
|
.writely-footnote-hide-selection ::selection, .writely-footnote-hide-selection::selection {
|
|
background: transparent;
|
|
}
|
|
.writely-footnote-hide-selection {
|
|
cursor: move;
|
|
}
|
|
|
|
|
|
.editor .writely-comment-yellow {
|
|
background-color: #FF9;
|
|
background-position: -240px 0;
|
|
}
|
|
.editor .writely-comment-yellow-hover {
|
|
background-color: #FF0;
|
|
background-position: -224px 0;
|
|
}
|
|
.editor .writely-comment-blue {
|
|
background-color: #C0D3FF;
|
|
background-position: -16px 0;
|
|
}
|
|
.editor .writely-comment-blue-hover {
|
|
background-color: #6292FE;
|
|
background-position: 0 0;
|
|
}
|
|
.editor .writely-comment-orange {
|
|
background-color: #FFDEAD;
|
|
background-position: -80px 0;
|
|
}
|
|
.editor .writely-comment-orange-hover {
|
|
background-color: #F90;
|
|
background-position: -64px 0;
|
|
}
|
|
.editor .writely-comment-green {
|
|
background-color: #99FBB3;
|
|
background-position: -48px 0;
|
|
}
|
|
.editor .writely-comment-green-hover {
|
|
background-color: #00F442;
|
|
background-position: -32px 0;
|
|
}
|
|
.editor .writely-comment-cyan {
|
|
background-color: #CFF;
|
|
background-position: -208px 0;
|
|
}
|
|
.editor .writely-comment-cyan-hover {
|
|
background-color: #0FF;
|
|
background-position: -192px 0;
|
|
}
|
|
.editor .writely-comment-purple {
|
|
background-color: #EBCCFF;
|
|
background-position: -144px 0;
|
|
}
|
|
.editor .writely-comment-purple-hover {
|
|
background-color: #90F;
|
|
background-position: -128px 0;
|
|
}
|
|
.editor .writely-comment-magenta {
|
|
background-color: #FCF;
|
|
background-position: -112px 0;
|
|
}
|
|
.editor .writely-comment-magenta-hover {
|
|
background-color: #F0F;
|
|
background-position: -96px 0;
|
|
}
|
|
.editor .writely-comment-red {
|
|
background-color: #FFCACA;
|
|
background-position: -176px 0;
|
|
}
|
|
.editor .writely-comment-red-hover {
|
|
background-color: #FF7A7A;
|
|
background-position: -160px 0;
|
|
}
|
|
|
|
.editor .writely-comment-marker {
|
|
background-image: url('MISSING');
|
|
background-color: transparent;
|
|
padding-right: 11px;
|
|
background-repeat: no-repeat;
|
|
width: 16px;
|
|
height: 16px;
|
|
-moz-user-select: none;
|
|
}
|
|
|
|
.editor .writely-comment-hidden {
|
|
padding: 0;
|
|
background: none;
|
|
}
|
|
.editor .writely-comment-marker-hidden {
|
|
background: none;
|
|
padding: 0;
|
|
width: 0;
|
|
}
|
|
.editor .writely-comment-none {
|
|
opacity: .2;
|
|
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);
|
|
-moz-opacity: .2;
|
|
}
|
|
.editor .writely-comment-none-hover {
|
|
opacity: .2;
|
|
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=20);
|
|
-moz-opacity: .2;
|
|
}
|
|
|
|
|
|
|
|
|
|
.br_fix br:not(:-moz-last-node):not(:-moz-first-node) {
|
|
|
|
position:relative;
|
|
|
|
left: -1ex
|
|
|
|
}
|
|
|
|
.br_fix br+br {
|
|
position: static !important
|
|
}
|
|
}
|
|
|
|
h6 { font-size: 8pt }
|
|
h5 { font-size: 8pt }
|
|
h4 { font-size: 10pt }
|
|
h3 { font-size: 12pt }
|
|
h2 { font-size: 14pt }
|
|
h1 { font-size: 18pt }
|
|
|
|
blockquote {padding: 10px; border: 1px #DDD dashed }
|
|
|
|
a img {border: 0}
|
|
|
|
.pb {
|
|
border-width: 0;
|
|
page-break-after: always;
|
|
/* We don't want this to be resizeable, so enforce a width and height
|
|
using !important */
|
|
height: 1px !important;
|
|
width: 100% !important;
|
|
}
|
|
|
|
.editor .pb {
|
|
border-top: 1px dashed #C0C0C0;
|
|
border-bottom: 1px dashed #C0C0C0;
|
|
}
|
|
|
|
div.google_header, div.google_footer {
|
|
position: relative;
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
|
|
|
|
/* Table of contents */
|
|
.editor div.writely-toc {
|
|
background-color: #f3f3f3;
|
|
border: 1px solid #ccc;
|
|
}
|
|
.writely-toc > ol {
|
|
padding-left: 3em;
|
|
font-weight: bold;
|
|
}
|
|
ol.writely-toc-subheading {
|
|
padding-left: 1em;
|
|
font-weight: normal;
|
|
}
|
|
/* IE6 only */
|
|
* html writely-toc ol {
|
|
list-style-position: inside;
|
|
}
|
|
.writely-toc-none {
|
|
list-style-type: none;
|
|
}
|
|
.writely-toc-decimal {
|
|
list-style-type: decimal;
|
|
}
|
|
.writely-toc-upper-alpha {
|
|
list-style-type: upper-alpha;
|
|
}
|
|
.writely-toc-lower-alpha {
|
|
list-style-type: lower-alpha;
|
|
}
|
|
.writely-toc-upper-roman {
|
|
list-style-type: upper-roman;
|
|
}
|
|
.writely-toc-lower-roman {
|
|
list-style-type: lower-roman;
|
|
}
|
|
.writely-toc-disc {
|
|
list-style-type: disc;
|
|
}
|
|
|
|
/* end default css */
|
|
|
|
|
|
/* default print css */
|
|
|
|
@media print {
|
|
body {
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
div.google_header, div.google_footer {
|
|
display: block;
|
|
min-height: 0;
|
|
border: none;
|
|
}
|
|
|
|
div.google_header {
|
|
flow: static(header);
|
|
}
|
|
|
|
/* used to insert page numbers */
|
|
div.google_header::before, div.google_footer::before {
|
|
position: absolute;
|
|
top: 0;
|
|
}
|
|
|
|
div.google_footer {
|
|
flow: static(footer);
|
|
}
|
|
|
|
/* always consider this element at the start of the doc */
|
|
div#google_footer {
|
|
flow: static(footer, start);
|
|
}
|
|
|
|
span.google_pagenumber {
|
|
content: counter(page);
|
|
}
|
|
|
|
span.google_pagecount {
|
|
content: counter(pages);
|
|
}
|
|
|
|
|
|
callout.google_footnote {
|
|
|
|
display: prince-footnote;
|
|
footnote-style-position: inside;
|
|
/* These styles keep the footnote from taking on the style of the text
|
|
surrounding the footnote marker. They can be overridden in the
|
|
document CSS. */
|
|
color: #000;
|
|
font-family: Verdana;
|
|
font-size: 10.0pt;
|
|
font-weight: normal;
|
|
}
|
|
|
|
/* Table of contents */
|
|
#WritelyTableOfContents a::after {
|
|
content: leader('.') target-counter(attr(href), page);
|
|
}
|
|
|
|
#WritelyTableOfContents a {
|
|
text-decoration: none;
|
|
color: black;
|
|
}
|
|
}
|
|
|
|
@page {
|
|
@top {
|
|
content: flow(header);
|
|
}
|
|
@bottom {
|
|
content: flow(footer);
|
|
}
|
|
@footnotes {
|
|
border-top: solid black thin;
|
|
padding-top: 8pt;
|
|
}
|
|
}
|
|
/* end default print css */
|
|
|
|
|
|
/* custom css */
|
|
|
|
|
|
/* end custom css */
|
|
|
|
|
|
|
|
/* ui edited css */
|
|
|
|
body {
|
|
font-family: Verdana;
|
|
|
|
font-size: 10.0pt;
|
|
line-height: normal;
|
|
background-color: #ffffff;
|
|
}
|
|
/* end ui edited css */
|
|
|
|
|
|
|
|
/* editor CSS */
|
|
.editor a:visited {color: #551A8B}
|
|
.editor table.zeroBorder {border: 1px dotted gray}
|
|
.editor table.zeroBorder td {border: 1px dotted gray}
|
|
.editor table.zeroBorder th {border: 1px dotted gray}
|
|
|
|
|
|
.editor div.google_header, .editor div.google_footer {
|
|
border: 2px #DDDDDD dashed;
|
|
position: static;
|
|
width: 100%;
|
|
min-height: 2em;
|
|
}
|
|
|
|
.editor .misspell {background-color: yellow}
|
|
|
|
.editor .writely-comment {
|
|
font-size: 9pt;
|
|
line-height: 1.4;
|
|
padding: 1px;
|
|
border: 1px dashed #C0C0C0
|
|
}
|
|
|
|
|
|
/* end editor CSS */
|
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
<body onload="DoPageLoad();"
|
|
|
|
revision="cfnx2f69_111dp3jzfgb:107">
|
|
|
|
|
|
|
|
|
|
<h1>
|
|
Using the Android Native Development Kit (NDK)
|
|
</h1>
|
|
version 1.3<br>
|
|
<br>
|
|
<h2>
|
|
Introduction
|
|
</h2>
|
|
The Android Native Development Kit enables developers to write shared libraries
|
|
in C or C++ and call them from Java code. The native shared libraries can be
|
|
packaged into apk files along with a normal Android application written in Java,
|
|
so that the resulting Android application can be downloaded and installed on an
|
|
Android phone.<br>
|
|
<br>
|
|
The Native Development Kit consists of:<br>
|
|
<ul>
|
|
<li>
|
|
C/C++ headers for native APIs<br>
|
|
</li>
|
|
<li>
|
|
C/C++ libraries for native APIs<br>
|
|
</li>
|
|
<li>
|
|
Documentation
|
|
</li>
|
|
<li>
|
|
Sample Code
|
|
</li>
|
|
</ul>
|
|
<br>
|
|
The Native Development Kit is designed to be used with the Android SDK:<br>
|
|
<ul>
|
|
<li>
|
|
The NDK is used to create a shared library containing native code.
|
|
</li>
|
|
<li>
|
|
The SDK is used to create an Android application written in Java that calls
|
|
into the native code shared library.
|
|
</li>
|
|
</ul>
|
|
<h1>
|
|
</h1>
|
|
<h2>
|
|
Setting up your machine<br>
|
|
</h2>
|
|
The Native Development Kit may be installed on either Linux or OS X. Developing
|
|
under Windows is not yet supported.<br>
|
|
<div>
|
|
<h3>
|
|
Linux Installation
|
|
</h3>
|
|
The
|
|
Android build is routinely tested on recent versions of Ubuntu (6.06 and later), but
|
|
may work on other distributions as well.<br>
|
|
<h4>
|
|
<a name=TOC-Ubuntu-Linux-i386-></a><span style=FONT-FAMILY:Verdana>Ubuntu
|
|
Linux (i386)</span>
|
|
</h4>
|
|
<div style=FONT-FAMILY:Verdana>
|
|
To set up your Linux development environment, make sure you have the
|
|
following:<span style="WORD-SPACING:0px; FONT-STYLE:normal; FONT-VARIANT:normal; FONT-WEIGHT:normal; font-size-adjust:none; font-stretch:normal; TEXT-TRANSFORM:none; COLOR:#000000; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate"><font size=2>
|
|
</font></span>
|
|
</div>
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:Verdana">
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
|
|
<ul style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
|
|
<li style="MARGIN-TOP:8px; MARGIN-BOTTOM:8px">
|
|
Git 1.5.4 or
|
|
newer<span style="FONT-WEIGHT:normal; WORD-SPACING:0px; TEXT-TRANSFORM:none; COLOR:#000000; FONT-STYLE:normal; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate; FONT-VARIANT:normal"><font size=2>. </font></span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<blockquote style="BORDER:medium none ; MARGIN:0pt 0pt 0pt 40px; PADDING:0px">
|
|
<span style=FONT-FAMILY:arial><span style="FONT-WEIGHT:normal; WORD-SPACING:0px; TEXT-TRANSFORM:none; COLOR:#000000; FONT-STYLE:normal; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate; FONT-VARIANT:normal"><span style="FONT-FAMILY:courier new,monospace">$
|
|
</span></span><span style="FONT-FAMILY:courier new,monospace">sudo apt-get
|
|
install git-core<br>
|
|
</span></span>
|
|
</blockquote>
|
|
<div>
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:arial,sans-serif">
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px">
|
|
<h4>
|
|
<a name=TOC-Ubuntu-Linux-amd64-></a><span style=FONT-FAMILY:Verdana>Ubuntu
|
|
Linux (amd64)</span>
|
|
</h4>
|
|
<span style=FONT-FAMILY:Verdana>This has not been as well
|
|
tested.</span>
|
|
</div>
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:Verdana">
|
|
<br>
|
|
</div>
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:Verdana">
|
|
The Android build requires a 32-bit build environment:
|
|
</div>
|
|
<div style="MARGIN-TOP:0px; MARGIN-BOTTOM:0px; FONT-FAMILY:Verdana">
|
|
<ul>
|
|
<li>
|
|
Get the packages as listed above in the i386
|
|
instructions:<span style="FONT-WEIGHT:normal; WORD-SPACING:0px; TEXT-TRANSFORM:none; COLOR:#000000; FONT-STYLE:normal; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate; FONT-VARIANT:normal"> </span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<blockquote style="BORDER:medium none ; MARGIN:0pt 0pt 0pt 40px; PADDING:0px">
|
|
<span style=FONT-FAMILY:arial><span style="FONT-WEIGHT:normal; WORD-SPACING:0px; TEXT-TRANSFORM:none; COLOR:#000000; FONT-STYLE:normal; WHITE-SPACE:normal; LETTER-SPACING:normal; border-collapse:separate; FONT-VARIANT:normal"><span style="FONT-FAMILY:courier new,monospace">$ </span></span><span style="FONT-FAMILY:courier new,monospace">sudo
|
|
apt-get install git-core<br>
|
|
</span></span>
|
|
</blockquote>
|
|
<h4>
|
|
<a name=TOC-Other-Linux></a>Other Linux
|
|
</h4>
|
|
<p>
|
|
There's
|
|
no reason why Android cannot be built on non-Ubuntu systems<span style=FONT-WEIGHT:normal><font size=2>. In general you will need:</font></span>
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Git 1.5.4 or newer. You can find it at <a href=http://git.or.cz/ rel=nofollow>http://git.or.cz/</a><span style=FONT-FAMILY:arial></span>
|
|
</li>
|
|
</ul>
|
|
<div>
|
|
<h3>
|
|
Mac OS Installation
|
|
</h3>
|
|
<ul>
|
|
<li>
|
|
<span style=FONT-FAMILY:arial,sans-serif>To build the Android files in a
|
|
Mac OS environment, you need an Intel/x86 machine. The Android build
|
|
system and tools do not support the older PowerPC architecture.</span>
|
|
</li>
|
|
<li>
|
|
<span style=FONT-FAMILY:arial,sans-serif>Android must be built on a
|
|
case-sensitive file system.<br>
|
|
</span>
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
We recommend that you build Android on a partition that has been
|
|
formatted with the "Case-sensitive Journaled HFS+" file system:
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
A case-sensitive file system is required because the sources contain
|
|
files that differ only in case.
|
|
</li>
|
|
<li>
|
|
Journaled systems are more robust. (This is optional, but
|
|
recommended.)
|
|
</li>
|
|
<li>
|
|
HFS+ is required to successfully build Mac OS applications such as
|
|
the Android Emulator for OS X.
|
|
</li>
|
|
</ul>
|
|
<li>
|
|
If you want to avoid partitioning/formatting your hard drive, you can
|
|
use a case-sensitive disk image instead.
|
|
</li>
|
|
<ul>
|
|
<li>
|
|
To create the image:<br>
|
|
<ul>
|
|
<li>
|
|
launch /Applications/Utilities/Disk Utility
|
|
</li>
|
|
<li>
|
|
select "New Image"
|
|
</li>
|
|
<li>
|
|
size: 8 GB (this will work, but you can choose more if you want
|
|
to)
|
|
</li>
|
|
<li>
|
|
volume format: case sensitive, journaled
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
This will create a .dmg file which, once mounted, acts as a drive
|
|
with the required formatting for Android development. For a disk
|
|
image named "android.dmg" stored in your home directory, you can add
|
|
the following to your ~/.bash_profile to mount the image when you
|
|
execute "mountAndroid":<br>
|
|
<br>
|
|
<div style=MARGIN-LEFT:40px>
|
|
<span style="FONT-FAMILY:courier new,monospace"># command to mount
|
|
the android file
|
|
image</span><br style="FONT-FAMILY:courier new,monospace">
|
|
<span style="FONT-FAMILY:courier new,monospace">function
|
|
mountAndroid { hdiutil attach ~/android.dmg
|
|
-mountpoint /Volumes/android; }</span><br>
|
|
</div>
|
|
<br>
|
|
Once mounted, you'll do all your work in the "android" volume. You
|
|
can eject it (unmount it) just like you would with an external
|
|
drive.
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
</ul>
|
|
<div>
|
|
<br>
|
|
<ul>
|
|
<li>
|
|
Install git 1.5.4 or newer. You can find it at
|
|
<a href=http://git.or.cz/ rel=nofollow>http://git.or.cz/</a>
|
|
</li>
|
|
</ul>
|
|
<h2>
|
|
Installing the Android SDK
|
|
</h2>
|
|
The Android NDK uses the Android SDK. You can find the Android SDK at
|
|
<a href=http://code.google.com/android/download.html id=a.-o title=http://code.google.com/android/download.html>http://code.google.com/android/download.html</a><br>
|
|
This version of the Android NDK requires the Cupcake version of the
|
|
Android SDK.<br>
|
|
<br>
|
|
<h2>
|
|
Installing the Prebuilt Native Toolchain<br>
|
|
</h2>
|
|
The NDK uses the prebuilt native toolchain from the Android Open Source
|
|
git repository.<br>
|
|
<br>
|
|
To download the prebuilt native toolchain to your working directory,
|
|
execute the following commands:<br>
|
|
<br>
|
|
<span style="FONT-FAMILY:Courier New"></span>
|
|
<div style=MARGIN-LEFT:40px>
|
|
<span style="FONT-FAMILY:Courier New">git clone
|
|
git://android.git.kernel.org/platform/prebuilt.git</span><br>
|
|
<span style="FONT-FAMILY:Courier New">cd prebuilt</span><br>
|
|
<span style="FONT-FAMILY:Courier New">git checkout -b cupcake -t
|
|
origin/cupcake</span><br>
|
|
</div>
|
|
<div style=MARGIN-LEFT:40px>
|
|
<span style="FONT-FAMILY:Courier New"></span>
|
|
</div>
|
|
<br>
|
|
<h2>
|
|
Setting Environment Variables
|
|
</h2>
|
|
The NDK requires that you set two environment variables:<br>
|
|
<ul>
|
|
<li>
|
|
PREBUILT must be set to the directory that contains the prebuilt
|
|
toolchain. Include the "prebuilt" directory in the path. Example:
|
|
/Volumes/android/prebuilt<br>
|
|
</li>
|
|
<li>
|
|
ANDROID_SDK_BASE must be set to the directory that contains the
|
|
Android SDK. Example: ~/AndroidSDK<br>
|
|
</li>
|
|
</ul>
|
|
<br>
|
|
<h2>
|
|
<span style=FONT-FAMILY:Verdana>Unpacking the NDK</span>
|
|
</h2>
|
|
Unpack the android_pndk.tar.gz into your working directory<br>
|
|
<br>
|
|
<div style=MARGIN-LEFT:40px>
|
|
<span style="FONT-FAMILY:Courier New">tar -zxvf
|
|
android_pndk.tar.gz</span><br>
|
|
</div>
|
|
<br>
|
|
This will create a directory called pndk. It should contain a README.html
|
|
file (this file) and the following directories: config, include, lib, and
|
|
sample.<br>
|
|
<br>
|
|
Look in the "samples" directory for samples showing how to use the NDK.<br>
|
|
<br>
|
|
<br>
|
|
</div>
|
|
<br>
|
|
</div>
|
|
<br>
|
|
</div>
|
|
<br></body>
|
|
</html> |