auto import from //branches/cupcake/...@130745
This commit is contained in:
@@ -200,7 +200,7 @@ h1,h2,h3 {
|
||||
<a href="#androidTestingLocationFiles">Location of Files</a><br/>
|
||||
<a href="#androidTestingContentMakefile">Contents of makefile</a><br/>
|
||||
<a href="#androidTestingContentManifest">Content of Manifest</a><br/>
|
||||
<a href="#androidInstrumentationTestingCreatingTestRunner">New Instrumentation TestRunner</a><br/>
|
||||
<a href="#androidInstrumentationTestingCreatingTestRunner">New InstrumentationTestRunner</a><br/>
|
||||
<a href="#androidInstrumentationTestingCreatingTestCase">New InstrumentationTestCase</a><br/>
|
||||
<a href="#androidInstrumentationFrameworkTestCase">Exploring a Test Case</a><br/>
|
||||
<a href="#androidTestingKindsofTests">Deciding Kinds of Tests to Write</a><br/></div>
|
||||
@@ -493,23 +493,28 @@ include $(BUILD_PACKAGE)
|
||||
|
||||
<a name="androidTestingContentManifest"></a><h3>Content of Manifest</h3>
|
||||
|
||||
<p>Use the following example to create an <code>AndroidManifest.xml</code> file that declares the instrumentation. Specify that the framework supplied Instrumentation TestRunner targest the package of your application, allowing the tests that are run with the instrumentation to get access to all of the classes of your application without having to build the source into the test app. The name of the test application is typically the same as your target application with <code>.tests</code> appended. </p>
|
||||
<p>Use the following example to create an <code>AndroidManifest.xml</code> file that declares the instrumentation. Specify that the framework supplied InstrumentationTestRunner targets the package of your application, allowing the tests that are run with the instrumentation to get access to all of the classes of your application without having to build the source into the test app. The name of the test application is typically the same as your target application with <code>.tests</code> appended. </p>
|
||||
<pre>
|
||||
# Add appropriate copyright banner here
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.android.samples.tests">
|
||||
|
||||
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
|
||||
|
||||
package="com.example.android.apis.tests">
|
||||
|
||||
<!-- We add an application tag here just so that we can indicate that
|
||||
this package needs to link against the android.test library,
|
||||
which is needed when building test cases. -->
|
||||
<application>
|
||||
<uses-library android:name="android.test.runner" />
|
||||
</application>
|
||||
|
||||
<!--
|
||||
This declares that this app uses the instrumentation test runner targeting
|
||||
the package of com.android.samples. To run the tests use the command:
|
||||
"adb shell am instrument -w com.android.samples.tests/android.test.InstrumentationTestRunner"
|
||||
-->
|
||||
the package of com.example.android.apis. To run the tests use the command:
|
||||
"adb shell am instrument -w com.example.android.apis.tests/android.test.InstrumentationTestRunner"
|
||||
-->
|
||||
<instrumentation android:name="android.test.InstrumentationTestRunner"
|
||||
android:targetPackage="com.android.samples"
|
||||
android:label="Tests for Api Demos."/>
|
||||
|
||||
android:targetPackage="com.example.android.apis"
|
||||
android:label="Tests for Api Demos."/>
|
||||
|
||||
</manifest>
|
||||
</pre>
|
||||
<p> </p>
|
||||
@@ -520,7 +525,7 @@ $ adb shell am instrument -w \
|
||||
</pre>
|
||||
|
||||
|
||||
<a name="androidInstrumentationTestingCreatingTestRunner"></a><h3>New Instrumentation TestRunner</h3>
|
||||
<a name="androidInstrumentationTestingCreatingTestRunner"></a><h3>New InstrumentationTestRunner</h3>
|
||||
|
||||
<p>Create a class that derives from this class. You must override two abstract methods; one that returns the class loader of the target package, and another that defines all of the tests within the package. For example, the snippet below displays the test runner for the framework tests.</p>
|
||||
<pre class="prettify">
|
||||
@@ -544,8 +549,6 @@ public class FrameworkInstrumentationTestRunner extends InstrumentationTestRunne
|
||||
</pre>
|
||||
<p> Next, in an appropriate <code>AndroidManifest.xml</code>, define the instrumentation for the derived class with the appropriate <code>android:targetPackage</code> set. For example, the snippet below defines the instrumentation runner for the framework tests.</p>
|
||||
<pre class="prettify">
|
||||
<uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
|
||||
|
||||
<instrumentation android:name="android.tests.FrameworkInstrumentationTestRunner"
|
||||
android:targetPackage="com.google.android.frameworktest"
|
||||
android:label="framework instrumentation test runner" />
|
||||
|
||||
741
pdk/ndk/Android_NDK_README.html
Normal file
741
pdk/ndk/Android_NDK_README.html
Normal file
@@ -0,0 +1,741 @@
|
||||
|
||||
<!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_ndk.tar.gz into your working directory<br>
|
||||
<br>
|
||||
<div style=MARGIN-LEFT:40px>
|
||||
<span style="FONT-FAMILY:Courier New">tar -zxvf
|
||||
android_ndk.tar.gz</span><br>
|
||||
</div>
|
||||
<br>
|
||||
This will create a directory called ndk. 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>
|
||||
@@ -100,7 +100,7 @@ ndk_src_dest_dir := $(ndk_src_tree)/ndk
|
||||
bionic_src_dest_dir := $(ndk_src_dest_dir)/include/bionic
|
||||
|
||||
# Destinations of all common files (not picked up by tree rules below)
|
||||
ndk_common_dest_files := $(ndk_common_dest_dir)/README \
|
||||
ndk_common_dest_files := $(ndk_common_dest_dir)/Android_NDK_README.html \
|
||||
$(ndk_common_dest_dir)/config/armelf.x \
|
||||
$(ndk_common_dest_dir)/config/armelflib.x \
|
||||
$(ndk_common_dest_dir)/lib/crtbegin_dynamic.o \
|
||||
@@ -114,8 +114,8 @@ ndk_common_full_dest_files := \
|
||||
$(ndk_common_full_dest_dir)/lib/libstdc++.so
|
||||
|
||||
# Install common files outside common trees
|
||||
$(ndk_common_dest_dir)/README: $(LOCAL_PATH)/README | $(ACP)
|
||||
@echo "NDK README: from $? to $@"
|
||||
$(ndk_common_dest_dir)/Android_NDK_README.html: $(LOCAL_PATH)/Android_NDK_README.html | $(ACP)
|
||||
@echo "NDK Android_NDK_README.html: from $? to $@"
|
||||
$(copy-file-to-target)
|
||||
|
||||
$(ndk_common_dest_dir)/config/armelf.x: $(BUILD_SYSTEM)/armelf.x | $(ACP)
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
Using the Native Development Kit (NDK)
|
||||
version 1.2
|
||||
|
||||
PRECONDITIONS
|
||||
|
||||
The Native Development Kit may be installed on either Linux or OS X.
|
||||
|
||||
The NDK must be installed on a case-sensitive file system. Linux
|
||||
file systems are always case-sensitive, but the default OS X file
|
||||
system is case-insenstive. A case-sensitive file sytem can be
|
||||
created either by partitioning your drive to include a case-sensitive
|
||||
partition or by creating a disk image that is case-sensitive.
|
||||
|
||||
STEP 1
|
||||
Installing arm-eabi-gcc
|
||||
-----------------------
|
||||
|
||||
1) Untar the android_ndk.tar.gz:
|
||||
|
||||
tar -zxvf android_ndk.tar.gz
|
||||
|
||||
This will create a directory called ndk. It should include a README file (this
|
||||
file) and the following directories: config, include, lib, sample and toolchain.
|
||||
|
||||
|
||||
STEP 2
|
||||
Samples
|
||||
-------
|
||||
|
||||
Look in the "samples" directory for samples of how to use the NDK.
|
||||
Reference in New Issue
Block a user