summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.xml63
-rw-r--r--core/java/android/content/res/AssetManager.java53
-rw-r--r--core/java/android/widget/RemoteViews.java69
-rw-r--r--core/java/android/widget/ViewAnimator.java25
-rw-r--r--core/java/android/widget/ViewFlipper.java128
-rw-r--r--core/java/com/android/internal/widget/ContactHeaderWidget.java82
-rw-r--r--core/java/com/android/internal/widget/SlidingTab.java96
-rw-r--r--core/res/res/drawable-mdpi/blank_tile.pngbin557 -> 0 bytes
-rw-r--r--core/res/res/drawable-mdpi/loading_tile.pngbin729 -> 0 bytes
-rw-r--r--core/res/res/drawable-mdpi/no_tile_128.pngbin1392 -> 0 bytes
-rw-r--r--core/res/res/drawable-nodpi/blank_tile.png (renamed from core/res/res/drawable-hdpi/blank_tile.png)bin557 -> 557 bytes
-rw-r--r--core/res/res/drawable-nodpi/loading_tile.png (renamed from core/res/res/drawable-hdpi/loading_tile.png)bin729 -> 729 bytes
-rw-r--r--core/res/res/drawable-nodpi/no_tile_128.png (renamed from core/res/res/drawable-hdpi/no_tile_128.png)bin1392 -> 1392 bytes
-rw-r--r--core/res/res/values/attrs.xml2
-rw-r--r--core/res/res/values/public.xml2
-rw-r--r--docs/html/robots.txt7
-rw-r--r--docs/html/sdk/1.0_r1/index.jd67
-rw-r--r--docs/html/sdk/1.0_r1/installing.jd223
-rw-r--r--docs/html/sdk/1.0_r1/requirements.jd53
-rw-r--r--docs/html/sdk/1.0_r2/index.jd67
-rw-r--r--docs/html/sdk/1.0_r2/installing.jd223
-rw-r--r--docs/html/sdk/1.0_r2/requirements.jd52
-rw-r--r--docs/html/sdk/1.1_r1/index.jd65
-rw-r--r--docs/html/sdk/1.1_r1/installing.jd314
-rw-r--r--docs/html/sdk/1.1_r1/requirements.jd50
-rw-r--r--docs/html/sdk/1.5_r1/index.jd90
-rw-r--r--docs/html/sdk/1.5_r1/installing.jd334
-rw-r--r--docs/html/sdk/1.5_r1/requirements.jd47
-rw-r--r--docs/html/sdk/1.5_r2/index.jd88
-rw-r--r--docs/html/sdk/1.5_r2/installing.jd334
-rw-r--r--docs/html/sdk/1.5_r2/requirements.jd47
-rw-r--r--docs/html/sdk/1.5_r3/index.jd89
-rw-r--r--docs/html/sdk/1.5_r3/installing.jd334
-rw-r--r--docs/html/sdk/1.5_r3/requirements.jd50
-rw-r--r--docs/html/sdk/1.6_r1/index.jd139
-rw-r--r--docs/html/sdk/1.6_r1/installing.jd443
-rw-r--r--docs/html/sdk/1.6_r1/requirements.jd59
-rw-r--r--docs/html/sdk/RELEASENOTES.jd58
-rw-r--r--docs/html/sdk/older_releases.jd472
-rw-r--r--docs/html/sdk/requirements.jd19
-rw-r--r--docs/html/sdk/sdk_toc.cs6
-rw-r--r--graphics/java/android/renderscript/RenderScript.java16
-rw-r--r--graphics/jni/android_renderscript_RenderScript.cpp11
-rw-r--r--libs/rs/rs.spec2
-rw-r--r--libs/rs/rsContext.cpp34
-rw-r--r--libs/rs/rsContext.h2
-rw-r--r--libs/surfaceflinger/Android.mk3
-rw-r--r--libs/surfaceflinger/LayerBlur.cpp1
-rw-r--r--media/java/android/media/MediaScanner.java5
-rw-r--r--opengl/java/android/opengl/GLSurfaceView.java259
-rw-r--r--services/java/com/android/server/PowerManagerService.java2
-rw-r--r--services/java/com/android/server/WallpaperManagerService.java110
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java68
-rw-r--r--services/java/com/android/server/status/StatusBarService.java18
-rw-r--r--test-runner/android/test/AndroidTestRunner.java10
-rw-r--r--test-runner/android/test/InstrumentationTestRunner.java62
-rw-r--r--test-runner/android/test/PerformanceCollectorTestCase.java37
-rw-r--r--test-runner/android/test/PerformanceTestBase.java89
-rw-r--r--test-runner/android/test/TimedTest.java (renamed from core/java/android/test/TimedTest.java)16
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java19
-rw-r--r--tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeAssetManager.java12
61 files changed, 1372 insertions, 3654 deletions
diff --git a/api/current.xml b/api/current.xml
index 6ddd4391465e..808e91ccdd75 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -1967,6 +1967,17 @@
visibility="public"
>
</field>
+<field name="autoStart"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843446"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="autoText"
type="int"
transient="false"
@@ -189616,6 +189627,21 @@
<parameter name="parcel" type="android.os.Parcel">
</parameter>
</constructor>
+<method name="addView"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="viewId" type="int">
+</parameter>
+<parameter name="nestedView" type="android.widget.RemoteViews">
+</parameter>
+</method>
<method name="apply"
return="android.view.View"
abstract="false"
@@ -189692,6 +189718,19 @@
<parameter name="v" type="android.view.View">
</parameter>
</method>
+<method name="removeAllViews"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="viewId" type="int">
+</parameter>
+</method>
<method name="setBitmap"
return="void"
abstract="false"
@@ -196277,6 +196316,17 @@
<parameter name="attrs" type="android.util.AttributeSet">
</parameter>
</constructor>
+<method name="isAutoStart"
+ return="boolean"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
<method name="isFlipping"
return="boolean"
abstract="false"
@@ -196288,6 +196338,19 @@
visibility="public"
>
</method>
+<method name="setAutoStart"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="autoStart" type="boolean">
+</parameter>
+</method>
<method name="setFlipInterval"
return="void"
abstract="false"
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index 0d43b2a83c72..5894c4f166b6 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -59,11 +59,12 @@ public final class AssetManager {
private static final String TAG = "AssetManager";
private static final boolean localLOGV = Config.LOGV || false;
- private static final Object mSync = new Object();
- private static final TypedValue mValue = new TypedValue();
- private static final long[] mOffsets = new long[2];
- private static AssetManager mSystem = null;
+ private static final Object sSync = new Object();
+ private static AssetManager sSystem = null;
+ private final TypedValue mValue = new TypedValue();
+ private final long[] mOffsets = new long[2];
+
// For communication with native code.
private int mObject;
@@ -71,9 +72,7 @@ public final class AssetManager {
private int mNumRefs = 1;
private boolean mOpen = true;
- private String mAssetDir;
- private String mAppName;
-
+
/**
* Create a new AssetManager containing only the basic system assets.
* Applications will not generally use this method, instead retrieving the
@@ -82,7 +81,7 @@ public final class AssetManager {
* {@hide}
*/
public AssetManager() {
- synchronized (mSync) {
+ synchronized (this) {
init();
if (localLOGV) Log.v(TAG, "New asset manager: " + this);
ensureSystemAssets();
@@ -90,11 +89,11 @@ public final class AssetManager {
}
private static void ensureSystemAssets() {
- synchronized (mSync) {
- if (mSystem == null) {
+ synchronized (sSync) {
+ if (sSystem == null) {
AssetManager system = new AssetManager(true);
system.makeStringBlocks(false);
- mSystem = system;
+ sSystem = system;
}
}
}
@@ -111,14 +110,14 @@ public final class AssetManager {
*/
public static AssetManager getSystem() {
ensureSystemAssets();
- return mSystem;
+ return sSystem;
}
/**
* Close this asset manager.
*/
public void close() {
- synchronized(mSync) {
+ synchronized(this) {
//System.out.println("Release: num=" + mNumRefs
// + ", released=" + mReleased);
if (mOpen) {
@@ -133,7 +132,7 @@ public final class AssetManager {
* identifier for the current configuration / skin.
*/
/*package*/ final CharSequence getResourceText(int ident) {
- synchronized (mSync) {
+ synchronized (this) {
TypedValue tmpValue = mValue;
int block = loadResourceValue(ident, tmpValue, true);
if (block >= 0) {
@@ -151,7 +150,7 @@ public final class AssetManager {
* identifier for the current configuration / skin.
*/
/*package*/ final CharSequence getResourceBagText(int ident, int bagEntryId) {
- synchronized (mSync) {
+ synchronized (this) {
TypedValue tmpValue = mValue;
int block = loadResourceBagValue(ident, bagEntryId, tmpValue, true);
if (block >= 0) {
@@ -229,7 +228,7 @@ public final class AssetManager {
/*package*/ final void ensureStringBlocks() {
if (mStringBlocks == null) {
- synchronized (mSync) {
+ synchronized (this) {
if (mStringBlocks == null) {
makeStringBlocks(true);
}
@@ -238,14 +237,14 @@ public final class AssetManager {
}
private final void makeStringBlocks(boolean copyFromSystem) {
- final int sysNum = copyFromSystem ? mSystem.mStringBlocks.length : 0;
+ final int sysNum = copyFromSystem ? sSystem.mStringBlocks.length : 0;
final int num = getStringBlockCount();
mStringBlocks = new StringBlock[num];
if (localLOGV) Log.v(TAG, "Making string blocks for " + this
+ ": " + num);
for (int i=0; i<num; i++) {
if (i < sysNum) {
- mStringBlocks[i] = mSystem.mStringBlocks[i];
+ mStringBlocks[i] = sSystem.mStringBlocks[i];
} else {
mStringBlocks[i] = new StringBlock(getNativeStringBlock(i), true);
}
@@ -293,7 +292,7 @@ public final class AssetManager {
*/
public final InputStream open(String fileName, int accessMode)
throws IOException {
- synchronized (mSync) {
+ synchronized (this) {
if (!mOpen) {
throw new RuntimeException("Assetmanager has been closed");
}
@@ -308,7 +307,7 @@ public final class AssetManager {
public final AssetFileDescriptor openFd(String fileName)
throws IOException {
- synchronized (mSync) {
+ synchronized (this) {
if (!mOpen) {
throw new RuntimeException("Assetmanager has been closed");
}
@@ -384,7 +383,7 @@ public final class AssetManager {
*/
public final InputStream openNonAsset(int cookie, String fileName, int accessMode)
throws IOException {
- synchronized (mSync) {
+ synchronized (this) {
if (!mOpen) {
throw new RuntimeException("Assetmanager has been closed");
}
@@ -404,7 +403,7 @@ public final class AssetManager {
public final AssetFileDescriptor openNonAssetFd(int cookie,
String fileName) throws IOException {
- synchronized (mSync) {
+ synchronized (this) {
if (!mOpen) {
throw new RuntimeException("Assetmanager has been closed");
}
@@ -463,7 +462,7 @@ public final class AssetManager {
*/
/*package*/ final XmlBlock openXmlBlockAsset(int cookie, String fileName)
throws IOException {
- synchronized (mSync) {
+ synchronized (this) {
if (!mOpen) {
throw new RuntimeException("Assetmanager has been closed");
}
@@ -477,13 +476,13 @@ public final class AssetManager {
}
/*package*/ void xmlBlockGone() {
- synchronized (mSync) {
+ synchronized (this) {
decRefsLocked();
}
}
/*package*/ final int createTheme() {
- synchronized (mSync) {
+ synchronized (this) {
if (!mOpen) {
throw new RuntimeException("Assetmanager has been closed");
}
@@ -493,7 +492,7 @@ public final class AssetManager {
}
/*package*/ final void releaseTheme(int theme) {
- synchronized (mSync) {
+ synchronized (this) {
deleteTheme(theme);
decRefsLocked();
}
@@ -523,7 +522,7 @@ public final class AssetManager {
return len > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int)len;
}
public final void close() throws IOException {
- synchronized (AssetManager.mSync) {
+ synchronized (AssetManager.this) {
if (mAsset != 0) {
destroyAsset(mAsset);
mAsset = 0;
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index 67717114a431..3b1f7a01f403 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -457,6 +457,46 @@ public class RemoteViews implements Parcelable, Filter {
}
}
+ /**
+ * Equivalent to calling {@link ViewGroup#addView(View)} after inflating the
+ * given {@link RemoteViews}, or calling {@link ViewGroup#removeAllViews()}
+ * when null. This allows users to build "nested" {@link RemoteViews}.
+ */
+ private class ViewGroupAction extends Action {
+ public ViewGroupAction(int viewId, RemoteViews nestedViews) {
+ this.viewId = viewId;
+ this.nestedViews = nestedViews;
+ }
+
+ public ViewGroupAction(Parcel parcel) {
+ viewId = parcel.readInt();
+ nestedViews = parcel.readParcelable(null);
+ }
+
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeInt(TAG);
+ dest.writeInt(viewId);
+ dest.writeParcelable(nestedViews, 0 /* no flags */);
+ }
+
+ @Override
+ public void apply(View root) {
+ final Context context = root.getContext();
+ final ViewGroup target = (ViewGroup) root.findViewById(viewId);
+ if (nestedViews != null) {
+ // Inflate nested views and add as children
+ target.addView(nestedViews.apply(context, target));
+ } else if (target != null) {
+ // Clear all children when nested views omitted
+ target.removeAllViews();
+ }
+ }
+
+ int viewId;
+ RemoteViews nestedViews;
+
+ public final static int TAG = 4;
+ }
/**
* Create a new RemoteViews object that will display the views contained
@@ -493,6 +533,9 @@ public class RemoteViews implements Parcelable, Filter {
case ReflectionAction.TAG:
mActions.add(new ReflectionAction(parcel));
break;
+ case ViewGroupAction.TAG:
+ mActions.add(new ViewGroupAction(parcel));
+ break;
default:
throw new ActionException("Tag " + tag + " not found");
}
@@ -519,7 +562,31 @@ public class RemoteViews implements Parcelable, Filter {
}
mActions.add(a);
}
-
+
+ /**
+ * Equivalent to calling {@link ViewGroup#addView(View)} after inflating the
+ * given {@link RemoteViews}. This allows users to build "nested"
+ * {@link RemoteViews}. In cases where consumers of {@link RemoteViews} may
+ * recycle layouts, use {@link #removeAllViews(int)} to clear any existing
+ * children.
+ *
+ * @param viewId The id of the parent {@link ViewGroup} to add child into.
+ * @param nestedView {@link RemoteViews} that describes the child.
+ */
+ public void addView(int viewId, RemoteViews nestedView) {
+ addAction(new ViewGroupAction(viewId, nestedView));
+ }
+
+ /**
+ * Equivalent to calling {@link ViewGroup#removeAllViews()}.
+ *
+ * @param viewId The id of the parent {@link ViewGroup} to remove all
+ * children from.
+ */
+ public void removeAllViews(int viewId) {
+ addAction(new ViewGroupAction(viewId, null));
+ }
+
/**
* Equivalent to calling View.setVisibility
*
diff --git a/core/java/android/widget/ViewAnimator.java b/core/java/android/widget/ViewAnimator.java
index fa8935e3bc55..41125013fe4e 100644
--- a/core/java/android/widget/ViewAnimator.java
+++ b/core/java/android/widget/ViewAnimator.java
@@ -43,7 +43,7 @@ public class ViewAnimator extends FrameLayout {
public ViewAnimator(Context context) {
super(context);
- initViewAnimator();
+ initViewAnimator(context, null);
}
public ViewAnimator(Context context, AttributeSet attrs) {
@@ -61,11 +61,28 @@ public class ViewAnimator extends FrameLayout {
}
a.recycle();
- initViewAnimator();
+ initViewAnimator(context, attrs);
}
- private void initViewAnimator() {
- mMeasureAllChildren = true;
+ /**
+ * Initialize this {@link ViewAnimator}, possibly setting
+ * {@link #setMeasureAllChildren(boolean)} based on {@link FrameLayout} flags.
+ */
+ private void initViewAnimator(Context context, AttributeSet attrs) {
+ if (attrs == null) {
+ // For compatibility, always measure children when undefined.
+ mMeasureAllChildren = true;
+ return;
+ }
+
+ // For compatibility, default to measure children, but allow XML
+ // attribute to override.
+ final TypedArray a = context.obtainStyledAttributes(attrs,
+ com.android.internal.R.styleable.FrameLayout);
+ final boolean measureAllChildren = a.getBoolean(
+ com.android.internal.R.styleable.FrameLayout_measureAllChildren, true);
+ setMeasureAllChildren(measureAllChildren);
+ a.recycle();
}
/**
diff --git a/core/java/android/widget/ViewFlipper.java b/core/java/android/widget/ViewFlipper.java
index 8a7946b951b1..aee25b029894 100644
--- a/core/java/android/widget/ViewFlipper.java
+++ b/core/java/android/widget/ViewFlipper.java
@@ -16,12 +16,15 @@
package android.widget;
-
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.res.TypedArray;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
+import android.util.Log;
import android.widget.RemoteViews.RemoteView;
/**
@@ -30,10 +33,22 @@ import android.widget.RemoteViews.RemoteView;
* requested, can automatically flip between each child at a regular interval.
*
* @attr ref android.R.styleable#ViewFlipper_flipInterval
+ * @attr ref android.R.styleable#ViewFlipper_autoStart
*/
+@RemoteView
public class ViewFlipper extends ViewAnimator {
- private int mFlipInterval = 3000;
- private boolean mKeepFlipping = false;
+ private static final String TAG = "ViewFlipper";
+ private static final boolean LOGD = true;
+
+ private static final int DEFAULT_INTERVAL = 3000;
+
+ private int mFlipInterval = DEFAULT_INTERVAL;
+ private boolean mAutoStart = false;
+
+ private boolean mRunning = false;
+ private boolean mStarted = false;
+ private boolean mVisible = false;
+ private boolean mUserPresent = true;
public ViewFlipper(Context context) {
super(context);
@@ -44,14 +59,62 @@ public class ViewFlipper extends ViewAnimator {
TypedArray a = context.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.ViewFlipper);
- mFlipInterval = a.getInt(com.android.internal.R.styleable.ViewFlipper_flipInterval,
- 3000);
+ mFlipInterval = a.getInt(
+ com.android.internal.R.styleable.ViewFlipper_flipInterval, DEFAULT_INTERVAL);
+ mAutoStart = a.getBoolean(
+ com.android.internal.R.styleable.ViewFlipper_autoStart, false);
a.recycle();
}
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ if (Intent.ACTION_SCREEN_OFF.equals(action)) {
+ mUserPresent = false;
+ updateRunning();
+ } else if (Intent.ACTION_USER_PRESENT.equals(action)) {
+ mUserPresent = true;
+ updateRunning();
+ }
+ }
+ };
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+
+ // Listen for broadcasts related to user-presence
+ final IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_SCREEN_OFF);
+ filter.addAction(Intent.ACTION_USER_PRESENT);
+ getContext().registerReceiver(mReceiver, filter);
+
+ if (mAutoStart) {
+ // Automatically start when requested
+ startFlipping();
+ }
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mVisible = false;
+
+ getContext().unregisterReceiver(mReceiver);
+ updateRunning();
+ }
+
+ @Override
+ protected void onWindowVisibilityChanged(int visibility) {
+ super.onWindowVisibilityChanged(visibility);
+ mVisible = visibility == VISIBLE;
+ updateRunning();
+ }
+
/**
* How long to wait before flipping to the next view
- *
+ *
* @param milliseconds
* time in milliseconds
*/
@@ -64,26 +127,61 @@ public class ViewFlipper extends ViewAnimator {
* Start a timer to cycle through child views
*/
public void startFlipping() {
- if (!mKeepFlipping) {
- mKeepFlipping = true;
- showOnly(mWhichChild);
- Message msg = mHandler.obtainMessage(FLIP_MSG);
- mHandler.sendMessageDelayed(msg, mFlipInterval);
- }
+ mStarted = true;
+ updateRunning();
}
/**
* No more flips
*/
public void stopFlipping() {
- mKeepFlipping = false;
+ mStarted = false;
+ updateRunning();
+ }
+
+ /**
+ * Internal method to start or stop dispatching flip {@link Message} based
+ * on {@link #mRunning} and {@link #mVisible} state.
+ */
+ private void updateRunning() {
+ boolean running = mVisible && mStarted && mUserPresent;
+ if (running != mRunning) {
+ if (running) {
+ showOnly(mWhichChild);
+ Message msg = mHandler.obtainMessage(FLIP_MSG);
+ mHandler.sendMessageDelayed(msg, mFlipInterval);
+ } else {
+ mHandler.removeMessages(FLIP_MSG);
+ }
+ mRunning = running;
+ }
+ if (LOGD) {
+ Log.d(TAG, "updateRunning() mVisible=" + mVisible + ", mStarted=" + mStarted
+ + ", mUserPresent=" + mUserPresent + ", mRunning=" + mRunning);
+ }
}
/**
* Returns true if the child views are flipping.
*/
public boolean isFlipping() {
- return mKeepFlipping;
+ return mStarted;
+ }
+
+ /**
+ * Set if this view automatically calls {@link #startFlipping()} when it
+ * becomes attached to a window.
+ */
+ public void setAutoStart(boolean autoStart) {
+ mAutoStart = autoStart;
+ }
+
+ /**
+ * Returns true if this view automatically calls {@link #startFlipping()}
+ * when it becomes attached to a window.
+ */
+ public boolean isAutoStart() {
+ return mAutoStart;
}
private final int FLIP_MSG = 1;
@@ -92,7 +190,7 @@ public class ViewFlipper extends ViewAnimator {
@Override
public void handleMessage(Message msg) {
if (msg.what == FLIP_MSG) {
- if (mKeepFlipping) {
+ if (mRunning) {
showNext();
msg = obtainMessage(FLIP_MSG);
sendMessageDelayed(msg, mFlipInterval);
diff --git a/core/java/com/android/internal/widget/ContactHeaderWidget.java b/core/java/com/android/internal/widget/ContactHeaderWidget.java
index d4411552948c..19debec8e529 100644
--- a/core/java/com/android/internal/widget/ContactHeaderWidget.java
+++ b/core/java/com/android/internal/widget/ContactHeaderWidget.java
@@ -119,6 +119,14 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
int CONTACT_STATUS_RES_PACKAGE = 8;
int CONTACT_STATUS_LABEL = 9;
}
+
+ private interface PhotoQuery {
+ String[] COLUMNS = new String[] {
+ Photo.PHOTO
+ };
+
+ int PHOTO = 0;
+ }
//Projection used for looking up contact id from phone number
protected static final String[] PHONE_LOOKUP_PROJECTION = new String[] {
@@ -144,6 +152,7 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
private static final int TOKEN_CONTACT_INFO = 0;
private static final int TOKEN_PHONE_LOOKUP = 1;
private static final int TOKEN_EMAIL_LOOKUP = 2;
+ private static final int TOKEN_PHOTO_QUERY = 3;
public ContactHeaderWidget(Context context) {
this(context, null);
@@ -229,11 +238,36 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
try{
switch (token) {
- case TOKEN_CONTACT_INFO: {
- bindContactInfo(cursor);
+ case TOKEN_PHOTO_QUERY: {
+ //Set the photo
+ Bitmap photoBitmap = null;
+ if (cursor != null && cursor.moveToFirst()
+ && !cursor.isNull(PhotoQuery.PHOTO)) {
+ byte[] photoData = cursor.getBlob(PhotoQuery.PHOTO);
+ photoBitmap = BitmapFactory.decodeByteArray(photoData, 0,
+ photoData.length, null);
+ }
+
+ if (photoBitmap == null) {
+ photoBitmap = loadPlaceholderPhoto(null);
+ }
+ mPhotoView.setImageBitmap(photoBitmap);
+ if (cookie != null && cookie instanceof Uri) {
+ mPhotoView.assignContactUri((Uri) cookie);
+ }
invalidate();
break;
}
+ case TOKEN_CONTACT_INFO: {
+ if (cursor != null && cursor.moveToFirst()) {
+ bindContactInfo(cursor);
+ Uri lookupUri = Contacts.getLookupUri(cursor.getLong(ContactQuery._ID),
+ cursor.getString(ContactQuery.LOOKUP_KEY));
+ startPhotoQuery(cursor.getLong(ContactQuery.PHOTO_ID), lookupUri);
+ invalidate();
+ }
+ break;
+ }
case TOKEN_PHONE_LOOKUP: {
if (cursor != null && cursor.moveToFirst()) {
long contactId = cursor.getLong(PHONE_LOOKUP_CONTACT_ID_COLUMN_INDEX);
@@ -375,8 +409,6 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
*/
public void bindFromContactUri(Uri contactUri) {
mContactUri = contactUri;
- long contactId = ContentUris.parseId(contactUri);
-
startContactQuery(contactUri);
}
@@ -424,30 +456,24 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
null, null, null);
}
+ protected void startPhotoQuery(long photoId, Uri lookupKey) {
+ mQueryHandler.startQuery(TOKEN_PHOTO_QUERY, lookupKey,
+ ContentUris.withAppendedId(Data.CONTENT_URI, photoId), PhotoQuery.COLUMNS,
+ null, null, null);
+ }
+
/**
* Bind the contact details provided by the given {@link Cursor}.
*/
protected void bindContactInfo(Cursor c) {
- if (c == null || !c.moveToFirst()) return;
-
// TODO: Bring back phonetic name
final String displayName = c.getString(ContactQuery.DISPLAY_NAME);
- final long contactId = c.getLong(ContactQuery._ID);
- final String lookupKey = c.getString(ContactQuery.LOOKUP_KEY);
final String phoneticName = null;
this.setDisplayName(displayName, null);
final boolean starred = c.getInt(ContactQuery.STARRED) != 0;
mStarredView.setChecked(starred);
- //Set the photo
- Bitmap photoBitmap = loadContactPhoto(c.getLong(ContactQuery.PHOTO_ID), null);
- if (photoBitmap == null) {
- photoBitmap = loadPlaceholderPhoto(null);
- }
- mPhotoView.setImageBitmap(photoBitmap);
- mPhotoView.assignContactUri(Contacts.getLookupUri(contactId, lookupKey));
-
//Set the presence status
if (!c.isNull(ContactQuery.CONTACT_PRESENCE_STATUS)) {
int presence = c.getInt(ContactQuery.CONTACT_PRESENCE_STATUS);
@@ -554,30 +580,6 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
}
}
- private Bitmap loadContactPhoto(long photoId, BitmapFactory.Options options) {
- Cursor photoCursor = null;
- Bitmap photoBm = null;
-
- try {
- photoCursor = mContentResolver.query(
- ContentUris.withAppendedId(Data.CONTENT_URI, photoId),
- new String[] { Photo.PHOTO },
- null, null, null);
-
- if (photoCursor != null && photoCursor.moveToFirst() && !photoCursor.isNull(0)) {
- byte[] photoData = photoCursor.getBlob(0);
- photoBm = BitmapFactory.decodeByteArray(photoData, 0,
- photoData.length, options);
- }
- } finally {
- if (photoCursor != null) {
- photoCursor.close();
- }
- }
-
- return photoBm;
- }
-
private Bitmap loadPlaceholderPhoto(BitmapFactory.Options options) {
if (mNoPhotoResource == 0) {
return null;
diff --git a/core/java/com/android/internal/widget/SlidingTab.java b/core/java/com/android/internal/widget/SlidingTab.java
index b5a0a55e4658..b7dd27ddcaca 100644
--- a/core/java/com/android/internal/widget/SlidingTab.java
+++ b/core/java/com/android/internal/widget/SlidingTab.java
@@ -64,6 +64,8 @@ public class SlidingTab extends ViewGroup {
private static final int TRACKING_MARGIN = 50;
private static final int ANIM_DURATION = 250; // Time for most animations (in ms)
private static final int ANIM_TARGET_TIME = 500; // Time to show targets (in ms)
+ private boolean mHoldLeftOnTransition = true;
+ private boolean mHoldRightOnTransition = true;
private OnTriggerListener mOnTriggerListener;
private int mGrabbedState = OnTriggerListener.NO_HANDLE;
@@ -86,6 +88,23 @@ public class SlidingTab extends ViewGroup {
private Rect mTmpRect;
/**
+ * Listener used to reset the view when the current animation completes.
+ */
+ private final AnimationListener mAnimationDoneListener = new AnimationListener() {
+ public void onAnimationStart(Animation animation) {
+
+ }
+
+ public void onAnimationRepeat(Animation animation) {
+
+ }
+
+ public void onAnimationEnd(Animation animation) {
+ onAnimationDone();
+ }
+ };
+
+ /**
* Interface definition for a callback to be invoked when a tab is triggered
* by moving it beyond a threshold.
*/
@@ -274,7 +293,6 @@ public class SlidingTab extends ViewGroup {
alphaAnim.setDuration(ANIM_TARGET_TIME);
target.startAnimation(alphaAnim);
target.setVisibility(View.VISIBLE);
- target.startAnimation(alphaAnim);
}
void reset(boolean animate) {
@@ -302,6 +320,9 @@ public class SlidingTab extends ViewGroup {
text.offsetTopAndBottom(dy);
tab.offsetTopAndBottom(dy);
}
+ text.clearAnimation();
+ tab.clearAnimation();
+ target.clearAnimation();
}
}
@@ -406,7 +427,11 @@ public class SlidingTab extends ViewGroup {
public void startAnimation(Animation animation) {
tab.startAnimation(animation);
text.startAnimation(animation);
- target.setVisibility(View.GONE);
+ }
+
+ public void hideTarget() {
+ target.clearAnimation();
+ target.setVisibility(View.INVISIBLE);
}
}
@@ -522,6 +547,16 @@ public class SlidingTab extends ViewGroup {
}
@Override
+ public void setVisibility(int visibility) {
+ // Clear animations so sliders don't continue to animate when we show the widget again.
+ if (visibility != getVisibility() && visibility == View.INVISIBLE) {
+ mLeftSlider.reset(false);
+ mRightSlider.reset(false);
+ }
+ super.setVisibility(visibility);
+ }
+
+ @Override
public boolean onTouchEvent(MotionEvent event) {
if (mTracking) {
final int action = event.getAction();
@@ -546,10 +581,11 @@ public class SlidingTab extends ViewGroup {
mTriggered = true;
mTracking = false;
mCurrentSlider.setState(Slider.STATE_ACTIVE);
- dispatchTriggerEvent(mCurrentSlider == mLeftSlider ?
+ boolean isLeft = mCurrentSlider == mLeftSlider;
+ dispatchTriggerEvent(isLeft ?
OnTriggerListener.LEFT_HANDLE : OnTriggerListener.RIGHT_HANDLE);
- startAnimating();
+ startAnimating(isLeft ? mHoldLeftOnTransition : mHoldRightOnTransition);
setGrabbedState(OnTriggerListener.NO_HANDLE);
}
break;
@@ -562,6 +598,7 @@ public class SlidingTab extends ViewGroup {
mTriggered = false;
mOtherSlider.show(true);
mCurrentSlider.reset(false);
+ mCurrentSlider.hideTarget();
mCurrentSlider = null;
mOtherSlider = null;
setGrabbedState(OnTriggerListener.NO_HANDLE);
@@ -572,40 +609,52 @@ public class SlidingTab extends ViewGroup {
return mTracking || super.onTouchEvent(event);
}
- void startAnimating() {
+ void startAnimating(final boolean holdAfter) {
mAnimating = true;
- final Animation appear = new AlphaAnimation(0.5f, 1.0f); appear.setDuration(ANIM_DURATION);
final Animation trans;
- Slider slider = mCurrentSlider;
- int dx;
- int dy;
+ final Slider slider = mCurrentSlider;
+ final Slider other = mOtherSlider;
+ final int dx;
+ final int dy;
if (isHorizontal()) {
int right = slider.tab.getRight();
int width = slider.tab.getWidth();
int left = slider.tab.getLeft();
int viewWidth = getWidth();
- dx = slider == mRightSlider ? - (right + viewWidth - width)
- : (viewWidth - left) + viewWidth - width;
+ int holdOffset = holdAfter ? 0 : width; // how much of tab to show at the end of anim
+ dx = slider == mRightSlider ? - (right + viewWidth - holdOffset)
+ : (viewWidth - left) + viewWidth - holdOffset;
dy = 0;
} else {
int top = slider.tab.getTop();
int bottom = slider.tab.getBottom();
int height = slider.tab.getHeight();
int viewHeight = getHeight();
+ int holdOffset = holdAfter ? 0 : height; // how much of tab to show at end of anim
dx = 0;
- dy = slider == mRightSlider ? (top + viewHeight - height)
- : - ((viewHeight - bottom) + viewHeight - height);
+ dy = slider == mRightSlider ? (top + viewHeight - holdOffset)
+ : - ((viewHeight - bottom) + viewHeight - holdOffset);
}
trans = new TranslateAnimation(0, dx, 0, dy);
trans.setDuration(ANIM_DURATION);
trans.setInterpolator(new LinearInterpolator());
+ trans.setFillAfter(true);
trans.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation) {
- resetView();
- mLeftSlider.startAnimation(appear);
- mRightSlider.startAnimation(appear);
- mAnimating = false;
+ Animation anim;
+ if (holdAfter) {
+ anim = new TranslateAnimation(dx, dx, dy, dy);
+ anim.setDuration(1000); // plenty of time for transitions
+ mAnimating = false;
+ } else {
+ anim = new AlphaAnimation(0.5f, 1.0f);
+ anim.setDuration(ANIM_DURATION);
+ resetView();
+ }
+ anim.setAnimationListener(mAnimationDoneListener);
+ mLeftSlider.startAnimation(anim);
+ mRightSlider.startAnimation(anim);
}
public void onAnimationRepeat(Animation animation) {
@@ -618,9 +667,15 @@ public class SlidingTab extends ViewGroup {
});
+ slider.hideTarget();
slider.startAnimation(trans);
}
+ private void onAnimationDone() {
+ resetView();
+ mAnimating = false;
+ }
+
private boolean withinView(final float x, final float y, final View view) {
return isHorizontal() && y > - TRACKING_MARGIN && y < TRACKING_MARGIN + view.getHeight()
|| !isHorizontal() && x > -TRACKING_MARGIN && x < TRACKING_MARGIN + view.getWidth();
@@ -643,8 +698,6 @@ public class SlidingTab extends ViewGroup {
// Center the widgets in the view
mLeftSlider.layout(l, t, r, b, isHorizontal() ? Slider.ALIGN_LEFT : Slider.ALIGN_BOTTOM);
mRightSlider.layout(l, t, r, b, isHorizontal() ? Slider.ALIGN_RIGHT : Slider.ALIGN_TOP);
-
- invalidate(); // TODO: be more conservative about what we're invalidating
}
private void moveHandle(float x, float y) {
@@ -722,6 +775,11 @@ public class SlidingTab extends ViewGroup {
}
}
+ public void setHoldAfterTrigger(boolean holdLeft, boolean holdRight) {
+ mHoldLeftOnTransition = holdLeft;
+ mHoldRightOnTransition = holdRight;
+ }
+
/**
* Triggers haptic feedback.
*/
diff --git a/core/res/res/drawable-mdpi/blank_tile.png b/core/res/res/drawable-mdpi/blank_tile.png
deleted file mode 100644
index 63b9296b1276..000000000000
--- a/core/res/res/drawable-mdpi/blank_tile.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/loading_tile.png b/core/res/res/drawable-mdpi/loading_tile.png
deleted file mode 100644
index f5a80c953979..000000000000
--- a/core/res/res/drawable-mdpi/loading_tile.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/no_tile_128.png b/core/res/res/drawable-mdpi/no_tile_128.png
deleted file mode 100644
index a9b007d45ae9..000000000000
--- a/core/res/res/drawable-mdpi/no_tile_128.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/blank_tile.png b/core/res/res/drawable-nodpi/blank_tile.png
index 63b9296b1276..63b9296b1276 100644
--- a/core/res/res/drawable-hdpi/blank_tile.png
+++ b/core/res/res/drawable-nodpi/blank_tile.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/loading_tile.png b/core/res/res/drawable-nodpi/loading_tile.png
index f5a80c953979..f5a80c953979 100644
--- a/core/res/res/drawable-hdpi/loading_tile.png
+++ b/core/res/res/drawable-nodpi/loading_tile.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/no_tile_128.png b/core/res/res/drawable-nodpi/no_tile_128.png
index a9b007d45ae9..a9b007d45ae9 100644
--- a/core/res/res/drawable-hdpi/no_tile_128.png
+++ b/core/res/res/drawable-nodpi/no_tile_128.png
Binary files differ
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index fbf4076bebf9..9d1b2c896987 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -2138,6 +2138,8 @@
</declare-styleable>
<declare-styleable name="ViewFlipper">
<attr name="flipInterval" format="integer" min="0" />
+ <!-- When true, automatically start animating -->
+ <attr name="autoStart" format="boolean" />
</declare-styleable>
<declare-styleable name="ViewSwitcher">
</declare-styleable>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 5eb1c8e2345e..4ede62013646 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1201,8 +1201,8 @@
<public type="attr" name="quickContactBadgeStyleSmallWindowSmall" />
<public type="attr" name="quickContactBadgeStyleSmallWindowMedium" />
<public type="attr" name="quickContactBadgeStyleSmallWindowLarge" />
-
<public type="attr" name="wallpaperAuthor" />
<public type="attr" name="wallpaperDescription" />
+ <public type="attr" name="autoStart" />
</resources>
diff --git a/docs/html/robots.txt b/docs/html/robots.txt
index 7046373e9570..878996fb7042 100644
--- a/docs/html/robots.txt
+++ b/docs/html/robots.txt
@@ -4,5 +4,12 @@ Disallow: /gae_shell/
Disallow: /assets/
Disallow: /images/
Disallow: /sdk/preview/
+Disallow: /sdk/1.0_r1/
+Disallow: /sdk/1.0_r2/
+Disallow: /sdk/1.1_r1/
+Disallow: /sdk/1.5_r1/
+Disallow: /sdk/1.5_r2/
+Disallow: /sdk/1.5_r3/
+Disallow: /sdk/1.6_r1/
Disallow: /shareables/
Sitemap: http://developer.android.com/sitemap.txt
diff --git a/docs/html/sdk/1.0_r1/index.jd b/docs/html/sdk/1.0_r1/index.jd
index 6ef860f53951..b38048331191 100644
--- a/docs/html/sdk/1.0_r1/index.jd
+++ b/docs/html/sdk/1.0_r1/index.jd
@@ -1,68 +1,5 @@
page.title=Android 1.0 SDK, release 1
-
-sdk.not_latest_version=true
-
-sdk.version=1.0_r1
-sdk.date=September 23, 2008
-
-sdk.win_download=android-sdk-windows-1.0_r1.zip
-sdk.win_bytes=89.7 MB
-sdk.win_checksum=d69f4ee93d4010f726c04302662fd999
-
-sdk.mac_download=android-sdk-mac_x86-1.0_r1.zip
-sdk.mac_bytes=87.5 MB
-sdk.mac_checksum=564876ada22872e50c2866806de9fc5c
-
-sdk.linux_download=android-sdk-linux_x86-1.0_r1.zip
-sdk.linux_bytes=87.8 MB
-sdk.linux_checksum=2660b4029039b7d714e59827e9a9a11d
-
+sdk.redirect=true
+sdk.redirect.path=index.html
@jd:body
-
-<p>For more information on this SDK release, read the
-<a href="{@docRoot}sdk/RELEASENOTES.html#1.0_r1">Release Notes</a>.</p>
-
-<h2>Included in this SDK</h2>
-
-<h4>Development tools</h4>
-
-<p>The SDK includes a variety of tools for developing and debugging application code and designing
-an application UI. You can read about the tools in the documentation included with the SDK.
-You can access the tools in the <code>&lt;sdk&gt;/tools/</code> directory.</p>
-
-<h4 id="system_images">System Images</h4>
-
-<p>The Android system images listed below are included in this SDK.</p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>System Image</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-
-<tr>
-<td width="5%"><nobr>Android 1.0</nobr></td>
-<td width="5%">1</td>
-<td width="5%"><nobr>N/A</nobr></td>
-<td>Includes the {@code com.google.android.maps} external library and a set of standard development
-applications. </td>
-
-</tr>
-
-</table>
-
-<h4>Sample Code and Applications</h4>
-
-<p>You can look at a variety of tutorials and samples in the
-documentation included with the SDK and access the sample code itself
-in the <code>&lt;sdk&gt;/samples/</code> directory of the SDK package.</p>
-
-<h4>Documentation</h4>
-
-<p>The SDK package provides a full set of local documentation, including installation and upgrade
-instructions. To view it, open the <code>&lt;sdk&gt;/documentation.html</code> file in a web browser.
-If you are developing in an IDE such as Eclipse, you can also view the reference documentation
-directly in the IDE. </p>
-
-
-
diff --git a/docs/html/sdk/1.0_r1/installing.jd b/docs/html/sdk/1.0_r1/installing.jd
index 8ac524c44363..2ea04e468754 100644
--- a/docs/html/sdk/1.0_r1/installing.jd
+++ b/docs/html/sdk/1.0_r1/installing.jd
@@ -1,221 +1,8 @@
-page.title=Installing the SDK
-sdk.version=1.0_r1
@jd:body
-<p>For the current SDK release, see the links under <strong>Current SDK Release</strong> in the side navigation.</p>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/installing.html"
+</script>
-<p>This page describes how to install the Android 1.0 SDK, Release 1, and set up your development environment.
-If you haven't downloaded the SDK yet, you can so from the <a href="{@docRoot}sdk/1.0_r1/index.html">Download</a> page.</p>
-
-<p>Before you begin, be sure that your development environment meets the SDK
-<a href="{@docRoot}sdk/1.0_r1/requirements.html">System Requirements</a>. If you encounter any problems during installation,
-see the <a href="#installnotes">Installation Notes</a> at the bottom of this page.</p>
-
-<h4 style="margin-top">Upgrading?</h4>
-<p>If you have already developed applications using an earlier version of the
-SDK, please skip this page and read the
-<a href="{@docRoot}sdk/1.0_r1/upgrading.html"><strong>Upgrading the SDK</strong></a></b> document instead.
-</p>
-
-<a name="installingsdk"></a>
-<a name="setup"></a>
-<h2>Installing the SDK</h2>
-
- <p>After downloading the SDK, unpack the .zip archive to a suitable location on your machine. By default, the SDK files are unpacked into a directory named <code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em>_<em>&lt;build&gt;</em></code>. The directory contains a link to a local copy of the documentation and the subdirectories <code>tools/</code>, <code>samples/</code>, and others. </p>
-
- <p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you will need to refer to the SDK directory later, when setting up the Android plugin or using SDK tools. </p>
-
- <p>Optionally, you can add the path to the SDK <code>tools</code> directory to your path. As mentioned above, the <code>tools/</code> directory is located in the SDK directory. </p>
- <ul>
- <li>On Linux, edit your ~/.bash_profile or ~/.bashrc file. Look
- for a line that sets the PATH environment variable and add the
- full path to the <code>tools/</code> directory to it. If you don't
- see a line setting the path, you can add one:</li>
-
- <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
-
- <li>On a Mac, look in your home directory for .bash_profile and
- proceed as for Linux. You can create the .bash_profile, if
- you haven't already set one up on your machine. </li>
-
- <li>On Windows, right click on My Computer, and select Properties.
- Under the Advanced tab, hit the Environment Variables button, and in the
- dialog that comes up, double-click on Path under System Variables. Add the full path to the <code>tools/</code> directory to the path. </li>
- </ul>
-
- <p>Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without needing to supply the full path to the tools directory. Note that, if you update your SDK, you should remember to update your PATH settings to point to the new location, if different.</p>
-
-
-<p>If you will be using the Eclipse IDE as your environment for developing Android applications, continue reading the next
-section in order to install the Android Development Tools plugin and setup Eclipse. If you choose not to use Eclipse, you can
-develop Android applications using other tools &mdash; read the guide to developing
-<a href="{@docRoot}guide/developing/other-ide.html">In other IDEs</a>.</p>
-
-
-<h2>Setting up Eclipse</h2>
-
-<p>First, you should install a custom plugin called Android Development Tools (ADT), which adds integrated support for Android projects and tools. The ADT plugin includes a variety of powerful extensions that make creating, running, and debugging Android applications faster and easier. Developing in ADT/Eclipse is highly recommended for Eclipse users and those new to Android.</p>
-
-<p>To download and install the ADT plugin, follow the steps below for your respective Eclipse version. </p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="45%">
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; <strong>Find
- and Install...</strong>. </li>
-
- <li>In the dialog that appears, select <strong>Search for new features to install</strong> and click <strong>Next</strong>. </li>
- <li>Click <strong>New Remote Site</strong>. </li>
- <li>In the resulting dialog box, enter a name for the remote site (e.g. Android Plugin) and enter this as its URL:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>Alternatively, you can use http in the Location URL, if you are having
- trouble with https (https is preferred for security reasons).</p>
- <pre>http://dl-ssl.google.com/android/eclipse/</pre>
- <p>Click <strong>OK</strong>.</p> </li>
- <li>You should now see the new site added to the search list (and checked).
- Click <strong>Finish</strong>. </li>
- <li>In the subsequent Search Results dialog box, select the checkbox for
- <strong>Android Plugin</strong> &gt; <strong>Developer Tools</strong>.
- This will check both features: "Android Developer Tools", and "Android
- Editors". The Android Editors feature is optional, but recommended. If
- you choose to install it, you need the WST plugin mentioned earlier in this
- page. Click <strong>Next</strong>. </li>
- <li>Read the license agreement and then select <strong>Accept terms of the license agreement</strong>.
- Click <strong>Next</strong>. </li>
- <li>Click <strong>Finish</strong>. </li>
-
- <li>The ADT plugin is not signed; you can accept the installation anyway
- by clicking <strong>Install All</strong>. </li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.
- </li>
- <li>In the dialog that appears, click the <strong>Available Software</strong> tab.
- </li>
- <li>Click <strong>Add Site...</strong>
- </li>
- <li>Enter this as the Location:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>Alternatively, you can use http in the Location URL, if you are having
- trouble with https (https is preferred for security reasons).</p>
- <pre>http://dl-ssl.google.com/android/eclipse/</pre>
- <p>Click <strong>OK</strong>.</p></li>
- <li>Back in the Available Software view, you should see the plugin. Select the checkbox next to
- <em>Developer Tools</em> and click <strong>Install...</strong>
- </li>
- <li>On the subsequent Install window, "Android Developer Tools", and "Android Editors" should both be checked.
- The Android Editors feature is optional, but recommended. If
- you choose to install it, you need the WST plugin mentioned earlier in this
- page. Click <strong>Next</strong>.
- </li>
- <li>Accept the license agreement and click <strong>Finish</strong>.</li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-</tr>
-</table>
-
-
-<p>Now, you just need to modify your Eclipse preferences to point to the Android SDK directory:</p>
-<ol>
- <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
- panel. (Mac OS X: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>) </li>
- <li>Select <strong>Android</strong> from the left panel. </li>
- <li>For the SDK Location in the main panel, click <strong>Browse...</strong> and locate the SDK directory. </li>
- <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-
-<p>Done! If you haven't encountered any problems, then you're ready to begin developing Android applications.
-We recommend you begin with the <a href="{@docRoot}guide/tutorials/hello-world.html">Hello World</a> tutorial,
-which will teach you some basics about Android applications and how to create projects using Eclipse.</p>
-
-
-<h3 id="troubleshooting">Troubleshooting ADT Installation</h3>
-<p>
-If you are having trouble downloading the ADT plugin after following the steps above, here are some suggestions: </p>
-
-<ul>
- <li>If Eclipse can not find the remote update site containing the ADT plugin, try changing the remote site URL to use http, rather than https. That is, set the Location for the remote site to:
- <pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
- <li>If you are behind a firewall (such as a corporate firewall), make
- sure that you have properly configured your proxy settings in Eclipse.
- In Eclipse 3.3/3.4, you can configure proxy information from the main
- Eclipse menu in <strong>Window</strong> (on Mac, <strong>Eclipse</strong>) &gt; <strong>Preferences</strong> &gt; <strong>General</strong> &gt; <strong>Network Connections</strong>.</li>
-</ul>
-<p>
-If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you can download the ADT files to your local machine using a browser and the install the files in Eclipse from there:
-</p>
-<ol>
-<li><a href="{@docRoot}sdk/adt_download.html">Download the ADT zip file</a> (do not unpack it).
-<li>Follow steps 1 and 2 in the default install instructions (above).
-<li>In Eclipse 3.3, click <strong>New Archive Site...</strong>. <br/>
- In Eclipse 3.4, click <strong>Add Site...</strong>, then <strong>Archive...</strong>
-<li>Browse and select the downloaded the zip file.
-<li>Follow the remaining procedures, above, starting from steps 5.
-</ol>
-<p>
-Note that to update your plugin, you will have to follow these steps again instead of the default update instructions.</p>
-
-<p>Note that the "Android Editors" feature of ADT requires several optional
-Eclipse components (for example, WST). If you encounter an error when
-installing ADT, your Eclipse installion might not include those components.
-For information about how to quickly add the necessary components to your
-Eclipse installation, see the troubleshooting topic
-<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
-
-<h4>For Linux users</h4>
-<p>If you encounter this error when installing the ADT Plugin for Eclipse:
-<pre>
-An error occurred during provisioning.
-Cannot connect to keystore.
-JKS</pre>
-<p>
-...then your development machine lacks a suitable Java VM. Installing Sun
-Java 6 will resolve this issue and you can then reinstall the ADT
-Plugin.</p>
-
-<a name="installnotes"></a>
-<h2>Installation Notes</h2>
-<h4>Ubuntu Linux Notes</h4>
-<ul>
- <li>If you need help installing and configuring Java on your
-development machine, you might find these resources helpful:
- <ul>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation </a></li>
- </ul>
- </li>
-<li>Here are the steps to install Java and Eclipse, prior to installing
-the Android SDK and ADT Plugin.
-<ol>
- <li>If you are running a 64-bit distribution on your development
-machine, you need to install the <code>ia32-libs</code> package using
-<code>apt-get:</code>:
- <pre>apt-get install ia32-libs</pre></li>
- <li>Next, install Java:
- <pre>apt-get install sun-java6-bin</pre></li>
- <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
- version for download, so we recommend that you download Eclipse from
-eclipse.org (<a
-href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
-downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
-<li>Follow the steps given in previous sections to install the SDK
-and the ADT plugin. </li>
-</ol>
-</ul>
-<h4>Other Linux Notes</h4>
-<ul>
- <li>If JDK is already installed on your development computer, please
-take a moment to make sure that it meets the version requirements listed
-at the top of this page. In particular, note that some Linux
-distributions may include JDK 1.4 or Gnu Compiler for Java, both of
-which are not supported for Android development.</li>
-</ul>
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/installing.html">Installing the Android SDK</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.0_r1/requirements.jd b/docs/html/sdk/1.0_r1/requirements.jd
index 4163513174c2..96fdcb26f6fa 100644
--- a/docs/html/sdk/1.0_r1/requirements.jd
+++ b/docs/html/sdk/1.0_r1/requirements.jd
@@ -1,51 +1,8 @@
-page.title=System Requirements
-sdk.version=1.0_r1
-
-
@jd:body
-<p>The sections below describe the system and software requirements for
-developing Android applications using the Android SDK tools included in Android 1.0 SDK, Release 1. </p>
-
-<h2>System and Software Requirements</h2>
-<p>The following systems and development environments are supported by this SDK.</p>
-
-<h4>Supported Operating Systems:</h4>
-<ul>
- <li>Windows XP or Vista</li>
- <li>Mac OS X 10.4.8 or later (x86 only)</li>
- <li>Linux (tested on Linux Ubuntu Dapper Drake)
- <ul>
- <li>64-bit distributions must be capable of running 32-bit applications.
- For information about how to add support for 32-bit applications, see
- the <a href="installing.html#installnotes">Installation Notes</a>.</li>
- </ul>
- </li>
-</ul>
-
-<h4>Supported Development Environments:</h4>
-<ul>
- <li>Eclipse IDE
- <ul>
- <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.3 (Europa), 3.4 (Ganymede)
- <ul>
- <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
- <li><a href="http://www.eclipse.org/webtools">WST</a> (optional, but needed for the Android Editors feature; included in <a href="http://www.eclipse.org/downloads/moreinfo/compare.php">most Eclipse IDE packages</a>)</li>
- </ul>
- </li>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
- <li>Other development environments or IDEs
- <ul>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
-</ul>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/requirements.html"
+</script>
-<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In
-particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p> \ No newline at end of file
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/requirements.html">System Requirements</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.0_r2/index.jd b/docs/html/sdk/1.0_r2/index.jd
index a1989ba93939..c29c148a4861 100644
--- a/docs/html/sdk/1.0_r2/index.jd
+++ b/docs/html/sdk/1.0_r2/index.jd
@@ -1,68 +1,5 @@
page.title=Android 1.0 SDK, release 2
-
-sdk.not_latest_version=true
-
-sdk.version=1.0_r2
-sdk.date=November 2008
-
-sdk.win_download=android-sdk-windows-1.0_r2.zip
-sdk.win_bytes=98360564
-sdk.win_checksum=a5e1af8ac145946b4a9627516ad4a711
-
-sdk.mac_download=android-sdk-mac_x86-1.0_r2.zip
-sdk.mac_bytes=93771410
-sdk.mac_checksum=87b99d5e9f59b78363a63200c11498e8
-
-sdk.linux_download=android-sdk-linux_x86-1.0_r2.zip
-sdk.linux_bytes=94186463
-sdk.linux_checksum=a1f3b6d854596f850f5008856d0f380e
-
+sdk.redirect=true
+sdk.redirect.path=index.html
@jd:body
-
-<p>For more information on this SDK release, read the
-<a href="{@docRoot}sdk/RELEASENOTES.html#1.0_r2">Release Notes</a>.</p>
-
-<h2>Included in this SDK</h2>
-
-<h4>Development tools</h4>
-
-<p>The SDK includes a variety of tools for developing and debugging application code and designing
-an application UI. You can read about the tools in the documentation included with the SDK.
-You can access the tools in the <code>&lt;sdk&gt;/tools/</code> directory.</p>
-
-<h4 id="system_images">System Images</h4>
-
-<p>The Android system images listed below are included in this SDK.</p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>System Image</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-
-<tr>
-<td width="5%"><nobr>Android 1.0</nobr></td>
-<td width="5%">1</td>
-<td width="5%"><nobr>N/A</nobr></td>
-<td>Includes the {@code com.google.android.maps} external library and a set of standard development
-applications. </td>
-
-</tr>
-
-</table>
-
-<h4>Sample Code and Applications</h4>
-
-<p>You can look at a variety of tutorials and samples in the
-documentation included with the SDK and access the sample code itself
-in the <code>&lt;sdk&gt;/samples/</code> directory of the SDK package.</p>
-
-<h4>Documentation</h4>
-
-<p>The SDK package provides a full set of local documentation, including installation and upgrade
-instructions. To view it, open the <code>&lt;sdk&gt;/documentation.html</code> file in a web browser.
-If you are developing in an IDE such as Eclipse, you can also view the reference documentation
-directly in the IDE. </p>
-
-
-
diff --git a/docs/html/sdk/1.0_r2/installing.jd b/docs/html/sdk/1.0_r2/installing.jd
index 2c58dfd9ad79..2ea04e468754 100644
--- a/docs/html/sdk/1.0_r2/installing.jd
+++ b/docs/html/sdk/1.0_r2/installing.jd
@@ -1,221 +1,8 @@
-page.title=Installing the SDK
-sdk.version=1.0_r2
@jd:body
-<p>For the current SDK release, see the links under <strong>Current SDK Release</strong> in the side navigation.</p>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/installing.html"
+</script>
-<p>This page describes how to install the Android 1.0 SDK, Release 2, and set up your development environment.
-If you haven't downloaded the SDK yet, you can so from the <a href="{@docRoot}sdk/1.0_r2/index.html">Download</a> page.</p>
-
-<p>Before you begin, be sure that your development environment meets the SDK
-<a href="{@docRoot}sdk/1.0_r2/requirements.html">System Requirements</a>. If you encounter any problems during installation,
-see the <a href="#installnotes">Installation Notes</a> at the bottom of this page.</p>
-
-<h4 style="margin-top">Upgrading?</h4>
-<p>If you have already developed applications using an earlier version of the
-SDK, please skip this page and read the
-<a href="{@docRoot}sdk/1.0_r2/upgrading.html"><strong>Upgrading the SDK</strong></a></b> document instead.
-</p>
-
-<a name="installingsdk"></a>
-<a name="setup"></a>
-<h2>Installing the SDK</h2>
-
- <p>After downloading the SDK, unpack the .zip archive to a suitable location on your machine. By default, the SDK files are unpacked into a directory named <code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em>_<em>&lt;build&gt;</em></code>. The directory contains a link to a local copy of the documentation and the subdirectories <code>tools/</code>, <code>samples/</code>, and others. </p>
-
- <p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you will need to refer to the SDK directory later, when setting up the Android plugin or using SDK tools. </p>
-
- <p>Optionally, you can add the path to the SDK <code>tools</code> directory to your path. As mentioned above, the <code>tools/</code> directory is located in the SDK directory. </p>
- <ul>
- <li>On Linux, edit your ~/.bash_profile or ~/.bashrc file. Look
- for a line that sets the PATH environment variable and add the
- full path to the <code>tools/</code> directory to it. If you don't
- see a line setting the path, you can add one:</li>
-
- <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
-
- <li>On a Mac, look in your home directory for .bash_profile and
- proceed as for Linux. You can create the .bash_profile, if
- you haven't already set one up on your machine. </li>
-
- <li>On Windows, right click on My Computer, and select Properties.
- Under the Advanced tab, hit the Environment Variables button, and in the
- dialog that comes up, double-click on Path under System Variables. Add the full path to the <code>tools/</code> directory to the path. </li>
- </ul>
-
- <p>Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without needing to supply the full path to the tools directory. Note that, if you update your SDK, you should remember to update your PATH settings to point to the new location, if different.</p>
-
-
-<p>If you will be using the Eclipse IDE as your environment for developing Android applications, continue reading the next
-section in order to install the Android Development Tools plugin and setup Eclipse. If you choose not to use Eclipse, you can
-develop Android applications using other tools &mdash; read the guide to developing
-<a href="{@docRoot}guide/developing/other-ide.html">In other IDEs</a>.</p>
-
-
-<h2>Setting up Eclipse</h2>
-
-<p>First, you should install a custom plugin called Android Development Tools (ADT), which adds integrated support for Android projects and tools. The ADT plugin includes a variety of powerful extensions that make creating, running, and debugging Android applications faster and easier. Developing in ADT/Eclipse is highly recommended for Eclipse users and those new to Android.</p>
-
-<p>To download and install the ADT plugin, follow the steps below for your respective Eclipse version. </p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="45%">
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; <strong>Find
- and Install...</strong>. </li>
-
- <li>In the dialog that appears, select <strong>Search for new features to install</strong> and click <strong>Next</strong>. </li>
- <li>Click <strong>New Remote Site</strong>. </li>
- <li>In the resulting dialog box, enter a name for the remote site (e.g. Android Plugin) and enter this as its URL:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>Alternatively, you can use http in the Location URL, if you are having
- trouble with https (https is preferred for security reasons).</p>
- <pre>http://dl-ssl.google.com/android/eclipse/</pre>
- <p>Click <strong>OK</strong>.</p> </li>
- <li>You should now see the new site added to the search list (and checked).
- Click <strong>Finish</strong>. </li>
- <li>In the subsequent Search Results dialog box, select the checkbox for
- <strong>Android Plugin</strong> &gt; <strong>Developer Tools</strong>.
- This will check both features: "Android Developer Tools", and "Android
- Editors". The Android Editors feature is optional, but recommended. If
- you choose to install it, you need the WST plugin mentioned earlier in this
- page. Click <strong>Next</strong>. </li>
- <li>Read the license agreement and then select <strong>Accept terms of the license agreement</strong>.
- Click <strong>Next</strong>. </li>
- <li>Click <strong>Finish</strong>. </li>
-
- <li>The ADT plugin is not signed; you can accept the installation anyway
- by clicking <strong>Install All</strong>. </li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.
- </li>
- <li>In the dialog that appears, click the <strong>Available Software</strong> tab.
- </li>
- <li>Click <strong>Add Site...</strong>
- </li>
- <li>Enter this as the Location:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>Alternatively, you can use http in the Location URL, if you are having
- trouble with https (https is preferred for security reasons).</p>
- <pre>http://dl-ssl.google.com/android/eclipse/</pre>
- <p>Click <strong>OK</strong>.</p></li>
- <li>Back in the Available Software view, you should see the plugin. Select the checkbox next to
- <em>Developer Tools</em> and click <strong>Install...</strong>
- </li>
- <li>On the subsequent Install window, "Android Developer Tools", and "Android Editors" should both be checked.
- The Android Editors feature is optional, but recommended. If
- you choose to install it, you need the WST plugin mentioned earlier in this
- page. Click <strong>Next</strong>.
- </li>
- <li>Accept the license agreement and click <strong>Finish</strong>.</li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-</tr>
-</table>
-
-
-<p>Now, you just need to modify your Eclipse preferences to point to the Android SDK directory:</p>
-<ol>
- <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
- panel. (Mac OS X: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>) </li>
- <li>Select <strong>Android</strong> from the left panel. </li>
- <li>For the SDK Location in the main panel, click <strong>Browse...</strong> and locate the SDK directory. </li>
- <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-
-<p>Done! If you haven't encountered any problems, then you're ready to begin developing Android applications.
-We recommend you begin with the <a href="{@docRoot}guide/tutorials/hello-world.html">Hello World</a> tutorial,
-which will teach you some basics about Android applications and how to create projects using Eclipse.</p>
-
-
-<h3 id="troubleshooting">Troubleshooting ADT Installation</h3>
-<p>
-If you are having trouble downloading the ADT plugin after following the steps above, here are some suggestions: </p>
-
-<ul>
- <li>If Eclipse can not find the remote update site containing the ADT plugin, try changing the remote site URL to use http, rather than https. That is, set the Location for the remote site to:
- <pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
- <li>If you are behind a firewall (such as a corporate firewall), make
- sure that you have properly configured your proxy settings in Eclipse.
- In Eclipse 3.3/3.4, you can configure proxy information from the main
- Eclipse menu in <strong>Window</strong> (on Mac, <strong>Eclipse</strong>) &gt; <strong>Preferences</strong> &gt; <strong>General</strong> &gt; <strong>Network Connections</strong>.</li>
-</ul>
-<p>
-If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you can download the ADT files to your local machine using a browser and the install the files in Eclipse from there:
-</p>
-<ol>
-<li><a href="{@docRoot}sdk/adt_download.html">Download the ADT zip file</a> (do not unpack it).
-<li>Follow steps 1 and 2 in the default install instructions (above).
-<li>In Eclipse 3.3, click <strong>New Archive Site...</strong>. <br/>
- In Eclipse 3.4, click <strong>Add Site...</strong>, then <strong>Archive...</strong>
-<li>Browse and select the downloaded the zip file.
-<li>Follow the remaining procedures, above, starting from steps 5.
-</ol>
-<p>
-Note that to update your plugin, you will have to follow these steps again instead of the default update instructions.</p>
-
-<p>Note that the "Android Editors" feature of ADT requires several optional
-Eclipse components (for example, WST). If you encounter an error when
-installing ADT, your Eclipse installion might not include those components.
-For information about how to quickly add the necessary components to your
-Eclipse installation, see the troubleshooting topic
-<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
-
-<h4>For Linux users</h4>
-<p>If you encounter this error when installing the ADT Plugin for Eclipse:
-<pre>
-An error occurred during provisioning.
-Cannot connect to keystore.
-JKS</pre>
-<p>
-...then your development machine lacks a suitable Java VM. Installing Sun
-Java 6 will resolve this issue and you can then reinstall the ADT
-Plugin.</p>
-
-<a name="installnotes"></a>
-<h2>Installation Notes</h2>
-<h4>Ubuntu Linux Notes</h4>
-<ul>
- <li>If you need help installing and configuring Java on your
-development machine, you might find these resources helpful:
- <ul>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation </a></li>
- </ul>
- </li>
-<li>Here are the steps to install Java and Eclipse, prior to installing
-the Android SDK and ADT Plugin.
-<ol>
- <li>If you are running a 64-bit distribution on your development
-machine, you need to install the <code>ia32-libs</code> package using
-<code>apt-get:</code>:
- <pre>apt-get install ia32-libs</pre></li>
- <li>Next, install Java:
- <pre>apt-get install sun-java6-bin</pre></li>
- <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
- version for download, so we recommend that you download Eclipse from
-eclipse.org (<a
-href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
-downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
-<li>Follow the steps given in previous sections to install the SDK
-and the ADT plugin. </li>
-</ol>
-</ul>
-<h4>Other Linux Notes</h4>
-<ul>
- <li>If JDK is already installed on your development computer, please
-take a moment to make sure that it meets the version requirements listed
-at the top of this page. In particular, note that some Linux
-distributions may include JDK 1.4 or Gnu Compiler for Java, both of
-which are not supported for Android development.</li>
-</ul>
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/installing.html">Installing the Android SDK</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.0_r2/requirements.jd b/docs/html/sdk/1.0_r2/requirements.jd
index 4f7c093cad5f..96fdcb26f6fa 100644
--- a/docs/html/sdk/1.0_r2/requirements.jd
+++ b/docs/html/sdk/1.0_r2/requirements.jd
@@ -1,50 +1,8 @@
-page.title=System Requirements
-sdk.version=1.0_r2
-
-
@jd:body
-<p>The sections below describe the system and software requirements for developing Android applications using the Android SDK tools included in Android 1.0 SDK, Release 2. </p>
-
-<h2>System and Software Requirements</h2>
-<p>The following systems and development environments are supported by this SDK.</p>
-
-<h4>Supported Operating Systems:</h4>
-<ul>
- <li>Windows XP or Vista</li>
- <li>Mac OS X 10.4.8 or later (x86 only)</li>
- <li>Linux (tested on Linux Ubuntu Dapper Drake)
- <ul>
- <li>64-bit distributions must be capable of running 32-bit applications.
- For information about how to add support for 32-bit applications, see
- the <a href="installing.html#installnotes">Installation Notes</a>.</li>
- </ul>
- </li>
-</ul>
-
-<h4>Supported Development Environments:</h4>
-<ul>
- <li>Eclipse IDE
- <ul>
- <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.3 (Europa), 3.4 (Ganymede)
- <ul>
- <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
- <li><a href="http://www.eclipse.org/webtools">WST</a> (optional, but needed for the Android Editors feature; included in <a href="http://www.eclipse.org/downloads/moreinfo/compare.php">most Eclipse IDE packages</a>)</li>
- </ul>
- </li>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
- <li>Other development environments or IDEs
- <ul>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
-</ul>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/requirements.html"
+</script>
-<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In
-particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p> \ No newline at end of file
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/requirements.html">System Requirements</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.1_r1/index.jd b/docs/html/sdk/1.1_r1/index.jd
index f6582162fb91..63fe51d759a7 100644
--- a/docs/html/sdk/1.1_r1/index.jd
+++ b/docs/html/sdk/1.1_r1/index.jd
@@ -1,66 +1,5 @@
page.title=Android 1.1 SDK, Release 1
-
-sdk.not_latest_version=true
-sdk.version=1.1_r1
-sdk.date=February 2009
-
-sdk.win_download=android-sdk-windows-1.1_r1.zip
-sdk.win_bytes=86038515
-sdk.win_checksum=8c4b9080b430025370689e03d20842f3
-
-sdk.mac_download=android-sdk-mac_x86-1.1_r1.zip
-sdk.mac_bytes=79046151
-sdk.mac_checksum=becf0f1763d61eedce15d2a903d6c1dd
-
-sdk.linux_download=android-sdk-linux_x86-1.1_r1.zip
-sdk.linux_bytes=79345522
-sdk.linux_checksum=ebcb16b0cd4aef198b4dd9a1418efbf1
-
+sdk.redirect=true
+sdk.redirect.path=index.html
@jd:body
-
-<p>For more information on this SDK release, read the
-<a href="{@docRoot}sdk/RELEASENOTES.html#1.1_r1">Release Notes</a>.</p>
-
-<h2>SDK Contents</h2>
-
-<h4>Development tools</h4>
-
-<p>The SDK includes a variety of tools for developing and debugging application code and designing an application UI. You can read about the tools in the
-<a href="{@docRoot}guide/developing/tools/index.html">Dev Guide</a> and access them in the <code>&lt;sdk&gt;/tools/</code> directory.
-
-<p>The tools package included in this SDK is the same as that included in the Android 1.0, Release 2 SDK. </p>
-
-<h4 id="system_images">System Images</h4>
-
-<p>The Android system images listed below are included in this SDK. For more information about a system image &mdash; features, applications included, localizations, API changes, and so on &mdash; see its Version Notes. </p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>System Image</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-
-<tr>
-<td width="5%"><nobr>Android 1.1</nobr></td>
-<td width="5%">2</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.1.html">Version Notes</a></nobr></td>
-<td>Includes com.google.android.maps external library and a set of standard development applications. </td>
-
-</tr>
-
-</table>
-
-<h4>Sample Code and Applications</h4>
-
-<p>You can look at a variety of tutorials and samples in the <a href="{@docRoot}guide/samples/index.html">Dev Guide</a> and access the sample code itself
-in the <code>&lt;sdk&gt;/samples/</code> directory of the SDK package.</p>
-
-<h4>Documentation</h4>
-
-<p>The SDK package includes a full set of local documentation. To view it, open the <code>&lt;sdk&gt;/documentation.html</code> file in a web browser. If you are developing in an IDE such as Eclipse, you can also view the reference documentation directly in the IDE. </p>
-
-<p>The most current documentation is always available on the Android Developers site:</p>
-
-<p style="margin-left:2em;"><a href="http://developer.android.com/index.html">http://developer.android.com/</a></p>
-
-
diff --git a/docs/html/sdk/1.1_r1/installing.jd b/docs/html/sdk/1.1_r1/installing.jd
index 2da24799f95b..2ea04e468754 100644
--- a/docs/html/sdk/1.1_r1/installing.jd
+++ b/docs/html/sdk/1.1_r1/installing.jd
@@ -1,312 +1,8 @@
-page.title=Installing the Android SDK
-sdk.version=1.1_r1
-
@jd:body
+<script type="text/javascript">
+ document.location=toRoot+"sdk/installing.html"
+</script>
-<p>This page describes how to install the Android SDK and set up your
-development environment. If you haven't downloaded the SDK, you can
-do so from the
-<a href="{@docRoot}sdk/1.1_r1/index.html">Download</a> page.</p>
-
-<p>If you encounter any problems during installation, see the
-<a href="#installnotes">Installation Notes</a> at the bottom of
-this page.</p>
-
-<h4 style="margin-top">Upgrading?</h4>
-<p>If you have already developed applications using an earlier version
-of the SDK, please skip this page and read the
-<a href="{@docRoot}sdk/1.1_r1/upgrading.html"><strong>Upgrading the
-SDK</strong></a></b> document instead.
-</p>
-
-
-<h2 id="setup">Preparing for Installation</h2>
-
-<p>Before you get started with the Android SDK, take a moment to confirm
-that your development machine meets the <a
-href="{@docRoot}sdk/1.1_r1/requirements.html">system requirements</a>.
-</p>
-
-<p>If you will be developing on Eclipse with the Android Development
-Tools (ADT) Plugin &mdash; the recommended path if you are new to
-Android &mdash; make sure that you have a suitable version of Eclipse
-installed on your computer. If you need to install Eclipse, you can
-download it from this location: </p>
-
-<p style="margin-left:2em;"><a href=
-"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a
-></p>
-
-<p>A Java or RCP version of Eclipse is recommended. </p>
-
-<h2 id="installingsdk">Installing the SDK</h2>
-
- <p>After downloading the SDK, unpack the .zip archive to a suitable location on your machine. By default, the SDK files are unpacked into a directory named <code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em>_<em>&lt;build&gt;</em></code>. The directory contains a link to a local copy of the documentation and the subdirectories <code>tools/</code>, <code>samples/</code>, and others. </p>
-
- <p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you will need to refer to the SDK directory later, when setting up the Android plugin or using SDK tools. </p>
-
- <p>Optionally, you can add the path to the SDK <code>tools</code> directory to your path. As mentioned above, the <code>tools/</code> directory is located in the SDK directory. </p>
- <ul>
- <li>On Linux, edit your ~/.bash_profile or ~/.bashrc file. Look
- for a line that sets the PATH environment variable and add the
- full path to the <code>tools/</code> directory to it. If you don't
- see a line setting the path, you can add one:</li>
-
- <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
-
- <li>On a Mac, look in your home directory for .bash_profile and
- proceed as for Linux. You can create the .bash_profile, if
- you haven't already set one up on your machine. </li>
-
- <li>On Windows, right click on My Computer, and select Properties.
- Under the Advanced tab, hit the Environment Variables button, and in the
- dialog that comes up, double-click on Path under System Variables. Add the full path to the <code>tools/</code> directory to the path. </li>
- </ul>
-
- <p>Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without needing to supply the full path to the tools directory. Note that, if you update your SDK, you should remember to update your PATH settings to point to the new location, if different.</p>
-
-
-<p>If you will be using the Eclipse IDE as your environment for developing Android applications, continue reading the next
-section in order to install the Android Development Tools plugin and set up Eclipse. If you choose not to use Eclipse, you can
-develop Android applications using other tools &mdash; read the guide to developing
-<a href="{@docRoot}guide/developing/other-ide.html">in other IDEs</a>.</p>
-
-
-<h2 id="installingplugin">Installing the ADT Plugin for Eclipse</h2>
-
-<p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT), that is designed to give you a powerful,
-integrated environment in which to build Android applications. It
-extends the capabilites of Eclipse to let you quickly set up new Android
-projects, create an application UI, add components based on the Android
-Framework API, and debug using the Android SDK tools.</p>
-
-<p>If you are new to Android or want to develop using the Eclipse IDE,
-the ADT plugin will be an essential part of your development
-environment. In general, using Eclipse with ADT is a highly recommended
-approach and is the fastest way to get started. This section describes
-how to install ADT into your Eclipse environment.
-
-<p>If you prefer to work in a development environment other than Eclipse,
-you do not need to install Eclipse or the ADT Plugin. Instead, you can
-access the SDK tools directly to build and debug your application. </p>
-
-<p>Once you have Eclipse installed, as described in <a href="#setup">
-Preparing for Installation</a>, follow the steps below to
-download the ADT plugin and install it in your respective Eclipse
-environment. </p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="45%">
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong> &gt; <strong>Find
- and Install...</strong>. </li>
-
- <li>In the dialog that appears, select <strong>Search for new features to install</strong> and click <strong>Next</strong>. </li>
- <li>Click <strong>New Remote Site</strong>. </li>
- <li>In the resulting dialog box, enter a name for the remote site (e.g. Android Plugin) and enter this as its URL:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>Alternatively, you can use http in the Location URL, if you are having
- trouble with https (https is preferred for security reasons).</p>
- <pre>http://dl-ssl.google.com/android/eclipse/</pre>
- <p>Click <strong>OK</strong>.</p> </li>
- <li>You should now see the new site added to the search list (and checked).
- Click <strong>Finish</strong>. </li>
- <li>In the subsequent Search Results dialog box, select the checkbox for
- <strong>Android Plugin</strong> &gt; <strong>Developer Tools</strong>.
- This will check both features: "Android Developer Tools", and "Android
- Editors". The Android Editors feature is optional, but recommended. If
- you choose to install it, you need the WST plugin mentioned earlier in this
- page. Click <strong>Next</strong>. </li>
- <li>Read the license agreement and then select <strong>Accept terms of the license agreement</strong>.
- Click <strong>Next</strong>. </li>
- <li>Click <strong>Finish</strong>. </li>
-
- <li>The ADT plugin is not signed; you can accept the installation anyway
- by clicking <strong>Install All</strong>. </li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.
- </li>
- <li>In the dialog that appears, click the <strong>Available Software</strong> tab.
- </li>
- <li>Click <strong>Add Site...</strong>
- </li>
- <li>Enter this as the Location:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>Alternatively, you can use http in the Location URL, if you are having
- trouble with https (https is preferred for security reasons).</p>
- <pre>http://dl-ssl.google.com/android/eclipse/</pre>
- <p>Click <strong>OK</strong>.</p></li>
- <li>Back in the Available Software view, you should see the plugin. Select the checkbox next to
- <em>Developer Tools</em> and click <strong>Install...</strong>
- </li>
- <li>On the subsequent Install window, "Android Developer Tools", and "Android Editors" should both be checked.
- The Android Editors feature is optional, but recommended. If
- you choose to install it, you need the WST plugin mentioned earlier in this
- page. Click <strong>Next</strong>.
- </li>
- <li>Accept the license agreement and click <strong>Finish</strong>.</li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-</tr>
-</table>
-
-<p>Now, you just need to modify your Eclipse preferences to point to the Android SDK directory:</p>
-<ol>
- <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
- panel. (Mac OS X: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>) </li>
- <li>Select <strong>Android</strong> from the left panel. </li>
- <li>For the SDK Location in the main panel, click <strong>Browse...</strong> and locate the SDK directory. </li>
- <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-
-<p>Done! If you haven't encountered any problems, then you're ready to
-begin developing Android applications. See the <a href="#next">After
-Installation: Next Steps</a> section for suggestions on how to start. </p>
-
-
-<h3 id="troubleshooting">Troubleshooting ADT Installation</h3>
-<p>
-If you are having trouble downloading the ADT plugin after following the steps above, here are some suggestions: </p>
-
-<ul>
- <li>If Eclipse can not find the remote update site containing the ADT plugin, try changing the remote site URL to use http, rather than https. That is, set the Location for the remote site to:
- <pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
- <li>If you are behind a firewall (such as a corporate firewall), make
- sure that you have properly configured your proxy settings in Eclipse.
- In Eclipse 3.3/3.4, you can configure proxy information from the main
- Eclipse menu in <strong>Window</strong> (on Mac, <strong>Eclipse</strong>) &gt; <strong>Preferences</strong> &gt; <strong>General</strong> &gt; <strong>Network Connections</strong>.</li>
-</ul>
-<p>
-If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you can download the ADT files to your local machine using a browser and the install the files in Eclipse from there:
-</p>
-<ol>
-<li><a href="{@docRoot}sdk/adt_download.html">Download the ADT zip file</a> (do not unpack it).
-<li>Follow steps 1 and 2 in the default install instructions (above).
-<li>In Eclipse 3.3, click <strong>New Archive Site...</strong>. <br/>
- In Eclipse 3.4, click <strong>Add Site...</strong>, then <strong>Archive...</strong>
-<li>Browse and select the downloaded the zip file.
-<li>Follow the remaining procedures, above, starting from steps 5.
-</ol>
-<p>
-Note that to update your plugin, you will have to follow these steps again instead of the default update instructions.</p>
-
-<p>Note that the "Android Editors" feature of ADT requires several optional
-Eclipse components (for example, WST). If you encounter an error when
-installing ADT, your Eclipse installion might not include those components.
-For information about how to quickly add the necessary components to your
-Eclipse installation, see the troubleshooting topic
-<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
-
-<h4>For Linux users</h4>
-<p>If you encounter this error when installing the ADT Plugin for Eclipse:
-<pre>
-An error occurred during provisioning.
-Cannot connect to keystore.
-JKS</pre>
-<p>
-...then your development machine lacks a suitable Java VM. Installing Sun
-Java 6 will resolve this issue and you can then reinstall the ADT
-Plugin.</p>
-
-
-<h2 id="next">After Installation: Next Steps</h2>
-<p>Once you have installed the SDK and the ADT Plugin, you are ready to
-begin developing applications. Here are a few ways you can get started: </p>
-
-<p><strong>Learn about Android</strong></p>
-<ul>
-<li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
-Guide</a> and the types of information it provides</li>
-<li>Read an introduction to Android as a platform in <a
-href="{@docRoot}guide/basics/what-is-android.html">What is
-Android?</a></li>
-<li>Learn about the Android framework and how applications run on it in
-<a href="{@docRoot}guide/topics/fundamentals.html">Application
-Fundamentals</a></li>
-<li>Take a look at the Android framework API specification in the <a
-href="{@docRoot}reference/index.html">Reference</a> tab</li>
-</ul>
-
-<p><strong>Explore the SDK</strong></p>
-<ul>
-<li>Get an overview of the <a
-href="{@docRoot}guide/developing/tools/index.html">development
-tools</a> that are available to you</li>
-<li>Read the overviews of how to develop <a
-href="{@docRoot}guide/developing/eclipse-adt.html">in Eclipse/ADT</a> or
-<a href="{@docRoot}guide/developing/other-ide.html">in other IDEs</a>
-</li>
-</ul>
-
-<p><strong>Explore some code</strong></p>
-<ul>
-<li>Set up a <a href="{@docRoot}guide/tutorials/hello-world.html">Hello
-World application</a></li>
-<li>Follow the <a href="{@docRoot}guide/tutorials/notepad/index.html">
-Notepad Tutorial</a> to build a full Android application </li>
-<li>Create a new project for one of the other sample applications
-included in <code>&lt;sdk&gt;/samples</code>, then compile and run it in
-your development environment</li>
-</ul>
-
-<p><strong>Visit the Android developer groups</strong></p>
-<ul>
-<li>Take a look at the <a
-href="{@docRoot}community/index.html">Community</a> tab to see a list of
-Android developers groups. In particular, you might want to look at the
-<a href="http://groups.google.com/group/android-developers">Android
-Developers</a> group to get a sense for what the Android developer
-community is like.</li>
-</ul>
-
-
-<h2 id="installnotes">Installation Notes</h2>
-<h4>Ubuntu Linux Notes</h4>
-<ul>
- <li>If you need help installing and configuring Java on your
-development machine, you might find these resources helpful:
- <ul>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation </a></li>
- </ul>
- </li>
-<li>Here are the steps to install Java and Eclipse, prior to installing
-the Android SDK and ADT Plugin.
-<ol>
- <li>If you are running a 64-bit distribution on your development
-machine, you need to install the <code>ia32-libs</code> package using
-<code>apt-get:</code>:
- <pre>apt-get install ia32-libs</pre></li>
- <li>Next, install Java:
- <pre>apt-get install sun-java6-bin</pre></li>
- <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
- version for download, so we recommend that you download Eclipse from
-eclipse.org (<a
-href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
-downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
-<li>Follow the steps given in previous sections to install the SDK
-and the ADT plugin. </li>
-</ol>
-</ul>
-<h4>Other Linux Notes</h4>
-<ul>
- <li>If JDK is already installed on your development computer, please
-take a moment to make sure that it meets the version requirements listed
-in the <a href="{@docRoot}sdk/1.1_r1/requirements.html">System Requirements</a>.
-In particular, note that some Linux distributions may include JDK 1.4 or Gnu
-Compiler for Java, both of which are not supported for Android development.</li>
-</ul>
-
-
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/installing.html">Installing the Android SDK</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.1_r1/requirements.jd b/docs/html/sdk/1.1_r1/requirements.jd
index 9d8f9eb1e096..96fdcb26f6fa 100644
--- a/docs/html/sdk/1.1_r1/requirements.jd
+++ b/docs/html/sdk/1.1_r1/requirements.jd
@@ -1,48 +1,8 @@
-page.title=System Requirements
-
-sdk.version=1.1_r1
-sdk.date=February 2009
-
@jd:body
-<p>The sections below describe the system and software requirements for developing Android applications using the Android SDK tools included in Android 1.1 SDK, Release 1. </p>
-
-<h3>Supported Operating Systems</h3>
-<ul>
- <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
- <li>Mac OS X 10.4.8 or later (x86 only)</li>
- <li>Linux (tested on Linux Ubuntu Dapper Drake)
- <ul>
- <li>64-bit distributions must be capable of running 32-bit applications.
- For information about how to add support for 32-bit applications, see
- the <a href="installing.html#installnotes">Installation Notes</a>.</li>
- </ul>
- </li>
-</ul>
-
-<h3>Supported Development Environments</h3>
-<ul>
- <li>Eclipse IDE
- <ul>
- <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.3 (Europa), 3.4 (Ganymede)
- <ul>
- <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
- <li><a href="http://www.eclipse.org/webtools">WST</a> (optional, but needed for the Android Editors feature; included in <a href="http://www.eclipse.org/downloads/moreinfo/compare.php">most Eclipse IDE packages</a>)</li>
- </ul>
- </li>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
- <li>Other development environments or IDEs
- <ul>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
-</ul>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/requirements.html"
+</script>
-<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In
-particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p> \ No newline at end of file
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/requirements.html">System Requirements</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.5_r1/index.jd b/docs/html/sdk/1.5_r1/index.jd
index 405f56ce960a..60dfc142e4f6 100644
--- a/docs/html/sdk/1.5_r1/index.jd
+++ b/docs/html/sdk/1.5_r1/index.jd
@@ -1,89 +1,5 @@
-sdk.version=1.5
-sdk.rel.id=1
-sdk.date=April 2009
-sdk.not_latest_version=true
-
-sdk.win_download=android-sdk-windows-1.5_r1.zip
-sdk.win_bytes=176263368
-sdk.win_checksum=42be980eb2d3efaced01ea6c32c0045f
-
-sdk.mac_download=android-sdk-mac_x86-1.5_r1.zip
-sdk.mac_bytes=167848675
-sdk.mac_checksum=5b2a8d9f096032db4a75bfa0d689a51b
-
-sdk.linux_download=android-sdk-linux_x86-1.5_r1.zip
-sdk.linux_bytes=162938845
-sdk.linux_checksum=2addfd315da0ad8b5bde6b09d5ff3b06
-
page.title=Android 1.5 SDK, Release 1
-@jd:body
-
-<p>For more information on this SDK release, read the
-<a href="{@docRoot}sdk/RELEASENOTES.html#1.5_r1">Release Notes</a>.</p>
-
-<h2>SDK Contents</h2>
-
-<h4>Development tools</h4>
-
-<p>The SDK includes a full set of tools for developing and debugging application code and designing an application UI. You can read about the tools in the
-<a href="{@docRoot}guide/developing/tools/index.html">Dev Guide</a> and access them in the <code>&lt;sdk&gt;/tools/</code> directory.
-
-<p>The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see <a href="{@docRoot}sdk/1.5_r1/upgrading.html">Upgrading the SDK</a>.
-
-<p>For more information about the new tools features, see the <a href="{@docRoot}sdk/RELEASENOTES.html">SDK Release Notes</a>.
-
-<h4 id="system_images">Android Platforms</h4>
-
-<p>This SDK includes multiple Android platform versions that you use to develop applications. For each version, both a fully compliant Android library and system image are provided. The table below lists the platform versions included in this SDK. For more information about a platform version &mdash; features, applications included, localizations, API changes, and so on &mdash; see its Version Notes. </p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>Platform</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-
-<tr>
-<td width="5%"><nobr>Android 1.5</nobr></td>
-<td width="5%">3</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.5.html">Version Notes</a></nobr></td>
-<td>Includes a standard Android 1.5 library and system image with a set of development applications. Does not include any external libraries (such as the Maps external library).</td>
-</tr>
-<tr>
-<td width="5%"><nobr>Android 1.1</nobr></td>
-<td width="5%">2</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.1.html">Version Notes</a></nobr></td>
-<td>Includes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues).</td>
-
-</tr>
-</table>
-
-<h4 id="system_images">SDK Add-Ons</h4>
-
-<p>An SDK add-on provides a development environment for an Android external library or a customized (but fully compliant) Android system image. This SDK includes the SDK add-on listed below. The Android system API Level required by the add-on is noted.</p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>Add-On</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-<tr>
-<td width="5%"><nobr>Google APIs</nobr></td>
-<td width="5%">3</td>
-<td width="5%">&nbsp;</td>
-<td>Includes the com.google.android.maps external library, a compliant
-system image, a {@link android.location.Geocoder Geocoder}
-backend service implementation, documentation, and sample code. </td>
-</tr>
-</table>
-
-<h4>Sample Code and Applications</h4>
-
-<p>You can look at a variety of tutorials and samples in the <a href="{@docRoot}guide/samples/index.html">Dev Guide</a> and access the sample code itself
-in the <code>&lt;sdk&gt;/platforms/android-1.5/samples/</code> directory of the SDK package. Note the new location &mdash; the SDK now includes multiple platform versions that you can develop against and each has its own sample code directory. </p>
-
-<h4>Documentation</h4>
-
-<p>The SDK package includes a full set of local documentation. To view it, open the <code>&lt;sdk&gt;/documentation.html</code> file in a web browser. If you are developing in an IDE such as Eclipse, you can also view the reference documentation directly in the IDE. </p>
-
-<p>The most current documentation is always available on the Android Developers site:</p>
-
-<p style="margin-left:2em;"><a href="http://developer.android.com/index.html">http://developer.android.com/</a></p>
+sdk.redirect=true
+sdk.redirect.path=index.html
+@jd:body
diff --git a/docs/html/sdk/1.5_r1/installing.jd b/docs/html/sdk/1.5_r1/installing.jd
index ac6af616d9e8..2ea04e468754 100644
--- a/docs/html/sdk/1.5_r1/installing.jd
+++ b/docs/html/sdk/1.5_r1/installing.jd
@@ -1,332 +1,8 @@
-sdk.version=1.5
-sdk.rel.id=1
-sdk.date=April 2009
-
-page.title=Installing the Android SDK
@jd:body
+<script type="text/javascript">
+ document.location=toRoot+"sdk/installing.html"
+</script>
-<p>This page describes how to install the Android SDK and set up your
-development environment. If you haven't downloaded the SDK, you can
-do so from the
-<a href="{@docRoot}sdk/1.5_r1/index.html">Download</a> page. Once you've downloaded
-the SDK, return here.</p>
-
-<p>If you encounter any problems during installation, see the
-<a href="#installnotes">Installation Notes</a> at the bottom of
-this page.</p>
-
-<h4 style="margin-top">Upgrading?</h4>
-<p>If you have already developed applications using an earlier version
-of the SDK, please read
-<a href="{@docRoot}sdk/1.5_r1/upgrading.html"><strong>Upgrading the
-SDK</strong></a></b>, instead.
-</p>
-
-
-<h2 id="setup">Preparing for Installation</h2>
-
-<p>Before you begin, take a moment to confirm that your development machine meets the
-<a href="{@docRoot}sdk/1.5_r1/requirements.html">System Requirements</a>.
-</p>
-
-<p>If you will be developing on Eclipse with the Android Development
-Tools (ADT) Plugin &mdash; the recommended path if you are new to
-Android &mdash; make sure that you have a suitable version of Eclipse
-installed on your computer (3.3 or newer). If you need to install Eclipse, you can
-download it from this location: </p>
-
-<p style="margin-left:2em;"><a href=
-"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a
-></p>
-
-<p>A Java or RCP version of Eclipse is recommended. </p>
-
-<h2 id="installingsdk">Installing the SDK</h2>
-
-<p>After downloading the SDK, unpack the .zip archive to a suitable location on your machine.
-By default, the SDK files are unpacked into a directory named
-<code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em></code>.
-The directory contains a local copy of the documentation (accessible by opening
-<code>documentation.html</code> in your browser) and the subdirectories
-<code>tools/</code>, <code>add-ons/</code>, <code>platforms/</code>, and others. Inside
-each subdirectory of <code>platforms/</code> you'll find <code>samples/</code>, which includes
-code samples that are specific to each version of the platform.</p>
-
-<p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you
-will need to refer to the SDK directory later, when setting up the Android plugin or when
-using the SDK tools.</p>
-
-<p>Optionally, you may want to add the location of the SDK's primary <code>tools</code> directory
-to your system PATH. The primary <code>tools/</code> directory is located at the root of the
-SDK folder. Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and
-the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without
-needing to supply the full path to the tools directory. </p>
-<ul>
- <li>On Linux, edit your <code>~/.bash_profile</code> or <code>~/.bashrc</code> file. Look
- for a line that sets the PATH environment variable and add the
- full path to the <code>tools/</code> directory to it. If you don't
- see a line setting the path, you can add one:</li>
-
- <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
-
- <li>On a Mac, look in your home directory for <code>.bash_profile</code> and
- proceed as for Linux. You can create the <code>.bash_profile</code> if
- you haven't already set one up on your machine. </li>
-
- <li>On Windows, right-click on My Computer, and select Properties.
- Under the Advanced tab, hit the Environment Variables button, and in the
- dialog that comes up, double-click on Path (under System Variables). Add the full path to the
- <code>tools/</code> directory to the path. </li>
- </ul>
-
-<p>Note that, if you update your SDK in the future, you
-should remember to update your PATH settings to point to the new location, if different.</p>
-
-<p>If you will be using the Eclipse IDE as your development environment,
-the next section describes how to install the Android Development Tools plugin and set up Eclipse.
-If you choose not to use Eclipse, you can
-develop Android applications in an IDE of your choice and then compile, debug and deploy using
-the tools included in the SDK (skip to <a href="#next">Next Steps</a>).</p>
-
-
-<h2 id="installingplugin">Installing the ADT Plugin for Eclipse</h2>
-
-<p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT), that is designed to give you a powerful,
-integrated environment in which to build Android applications. It
-extends the capabilites of Eclipse to let you quickly set up new Android
-projects, create an application UI, add components based on the Android
-Framework API, debug your applications using the Android SDK tools, and even export
-signed (or unsigned) APKs in order to distribute your application.</p>
-
-<p>In general, using Eclipse with ADT is a highly recommended
-approach to Android development and is the fastest way to get started.
-(If you prefer to work in an IDE other than Eclipse,
-you do not need to install Eclipse or ADT, instead, you can directly
-use the SDK tools to build and debug your application.)</p>
-
-<p>Once you have Eclipse installed, as described in <a href="#setup">Preparing for
-Installation</a>, follow the steps below to
-download the ADT plugin and install it in your respective Eclipse
-environment. </p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="45%">
-<!-- 3.3 steps -->
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong>
-&gt; <strong>Find and Install...</strong>. </li>
- <li>In the dialog that appears, select <strong>Search for new features to install</strong>
-and click <strong>Next</strong>. </li>
- <li>Click <strong>New Remote Site</strong>. </li>
- <li>In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and
- enter the URL:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>If you have trouble aqcuiring the plugin, try using "http" in the URL,
- instead of "https" (https is preferred for security reasons).</p>
- <p>Click <strong>OK</strong>.</p> </li>
- <li>You should now see the new site added to the search list (and checked).
- Click <strong>Finish</strong>. </li>
- <li>In the subsequent Search Results dialog box, select the checkbox for the
- "Android Plugin".
- This will select the nested tools: "Android DDMS" and "Android Development Tools".
- Click <strong>Next</strong>.</li>
- <li>Read and accept the license agreement, then click <strong>Next</strong>. </li>
- <li>On the following Installation window, click <strong>Finish</strong>. </li>
- <li>The ADT plugin is not digitally signed. Accept the installation anyway
- by clicking <strong>Install All</strong>. </li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-
-<!-- 3.4 steps -->
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.</li>
- <li>In the dialog that appears, click the <strong>Available Software</strong> tab. </li>
- <li>Click <strong>Add Site...</strong> </li>
- <li>Enter the Location:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>If you have trouble aqcuiring the plugin, try using "http" in the Location URL,
- instead of "https" (https is preferred for security reasons).</p>
- <p>Click <strong>OK</strong>.</p></li>
- <li>Back in the Available Software view, you should see the plugin listed by the URL,
- with "Developer Tools" nested within it. Select the checkbox next to
- Developer Tools and click <strong>Install...</strong></li>
- <li>On the subsequent Install window, "Android DDMS" and "Android Development Tools"
- should both be checked. Click <strong>Next</strong>. </li>
- <li>Read and accept the license agreement, then click <strong>Finish</strong>.</li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-</tr>
-</table>
-
-<p>Now modify your Eclipse preferences to point to the Android SDK directory:</p>
-<ol>
- <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
- panel (Mac: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>).</li>
- <li>Select <strong>Android</strong> from the left panel. </li>
- <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse...</strong> and
-locate your downloaded SDK directory. </li>
- <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-
-<p>Done! If you haven't encountered any problems, then you're ready to
-begin developing Android applications. See the
-<a href="#next">Next Steps</a> section for suggestions on how to start. </p>
-
-
-<h3 id="troubleshooting">Troubleshooting ADT Installation</h3>
-<p>
-If you are having trouble downloading the ADT plugin after following the steps above, here are
-some suggestions: </p>
-
-<ul>
- <li>If Eclipse can not find the remote update site containing the ADT plugin, try changing
- the remote site URL to use http, rather than https. That is, set the Location for the remote site to:
- <pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
- <li>If you are behind a firewall (such as a corporate firewall), make
- sure that you have properly configured your proxy settings in Eclipse.
- In Eclipse 3.3/3.4, you can configure proxy information from the main
- Eclipse menu in <strong>Window</strong> (on Mac, <strong>Eclipse</strong>) &gt;
- <strong>Preferences</strong> &gt; <strong>General</strong> &gt;
- <strong>Network Connections</strong>.</li>
-</ul>
-<p>
-If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you
-can download the ADT zip file to your local machine and manually install the it:
-</p>
-<ol>
- <li><a href="{@docRoot}sdk/adt_download.html">Download the ADT zip file</a> (do not unpack it).</li>
- <li>Follow steps 1 and 2 in the default install instructions (above).</li>
- <li>In Eclipse 3.3, click <strong>New Archive Site...</strong>. <br/>
- In Eclipse 3.4, click <strong>Add Site...</strong>, then <strong>Archive...</strong></li>
- <li>Browse and select the downloaded zip file.</li>
- <li>Follow the remaining procedures, above, starting from steps 5.</li>
-</ol>
-<p>To update your plugin once you've installed using the zip file, you will have to
-follow these steps again instead of the default update instructions.</p>
-
-<h4>Other install errors</h4>
-
-<p>Note that there are features of ADT that require some optional
-Eclipse components (for example, WST). If you encounter an error when
-installing ADT, your Eclipse installion might not include these components.
-For information about how to quickly add the necessary components to your
-Eclipse installation, see the troubleshooting topic
-<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT
-Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
-
-<h4>For Linux users</h4>
-<p>If you encounter this error when installing the ADT Plugin for Eclipse:
-<pre>
-An error occurred during provisioning.
-Cannot connect to keystore.
-JKS</pre>
-<p>
-...then your development machine lacks a suitable Java VM. Installing Sun
-Java 6 will resolve this issue and you can then reinstall the ADT
-Plugin.</p>
-
-
-<h2 id="next">Next Steps</h2>
-<p>Once you have completed installation, you are ready to
-begin developing applications. Here are a few ways you can get started: </p>
-
-<p><strong>Learn about Android</strong></p>
-<ul>
- <li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
- Guide</a> and the types of information it provides</li>
- <li>Read an introduction to Android as a platform in <a
- href="{@docRoot}guide/basics/what-is-android.html">What is
- Android?</a></li>
- <li>Learn about the Android framework and how applications run on it in
- <a href="{@docRoot}guide/topics/fundamentals.html">Application
- Fundamentals</a></li>
- <li>Take a look at the Android framework API specification in the <a
- href="{@docRoot}reference/packages.html">Reference</a> tab</li>
-</ul>
-
-<p><strong>Explore the SDK</strong></p>
-<ul>
- <li>Get an overview of the <a
- href="{@docRoot}guide/developing/tools/index.html">development
- tools</a> that are available to you</li>
- <li>Read how to develop <a
- href="{@docRoot}guide/developing/eclipse-adt.html">in Eclipse/ADT</a> or
- <a href="{@docRoot}guide/developing/other-ide.html">in other IDEs</a>
- </li>
-</ul>
-
-<p><strong>Explore some code</strong></p>
-<ul>
- <li>Set up a <a href="{@docRoot}guide/tutorials/hello-world.html">Hello
- World application</a> (highly recommended, especially for Eclipse users)</li>
- <li>Follow the <a href="{@docRoot}guide/tutorials/notepad/index.html">
- Notepad Tutorial</a> to build a full Android application </li>
- <li>Create a new project for one of the other sample applications
- included in <code><em>&lt;sdk&gt;</em>/platforms/<em>&lt;platfrom&gt;</em>/samples</code>,
- then compile and run it in your development environment</li>
-</ul>
-
-<p><strong>Visit the Android developer groups</strong></p>
-<ul>
- <li>Take a look at the <a
- href="{@docRoot}community/index.html">Community</a> tab to see a list of
- Android developers groups. In particular, you might want to look at the
- <a href="http://groups.google.com/group/android-developers">Android
- Developers</a> group to get a sense for what the Android developer
- community is like.</li>
-</ul>
-
-
-<h2 id="installnotes">Installation Notes</h2>
-
-<h3>Ubuntu Linux Notes</h3>
-
-<ul>
- <li>If you need help installing and configuring Java on your
- development machine, you might find these resources helpful:
- <ul>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
- </ul>
- </li>
- <li>Here are the steps to install Java and Eclipse, prior to installing
- the Android SDK and ADT Plugin.
- <ol>
- <li>If you are running a 64-bit distribution on your development
- machine, you need to install the <code>ia32-libs</code> package using
- <code>apt-get:</code>:
- <pre>apt-get install ia32-libs</pre>
- </li>
- <li>Next, install Java: <pre>apt-get install sun-java6-bin</pre></li>
- <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
- version for download, so we recommend that you download Eclipse from
- eclipse.org (<a
- href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
- downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
- <li>Follow the steps given in previous sections to install the SDK
- and the ADT plugin. </li>
- </ol>
- </li>
-</ul>
-
-<h3>Other Linux Notes</h3>
-
-<ul>
- <li>If JDK is already installed on your development computer, please
- take a moment to make sure that it meets the version requirements listed
- in the <a href="{@docRoot}sdk/1.1_r1/requirements.html">System Requirements</a>.
- In particular, note that some Linux distributions may include JDK 1.4 or Gnu
- Compiler for Java, both of which are not supported for Android development.</li>
-</ul>
-
-
-
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/installing.html">Installing the Android SDK</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.5_r1/requirements.jd b/docs/html/sdk/1.5_r1/requirements.jd
index c10ccac561ea..96fdcb26f6fa 100644
--- a/docs/html/sdk/1.5_r1/requirements.jd
+++ b/docs/html/sdk/1.5_r1/requirements.jd
@@ -1,45 +1,8 @@
-page.title=System Requirements
@jd:body
-<p>The sections below describe the system and software requirements for developing Android applications using the Android SDK tools included in Android <?cs var:sdk.version ?> SDK, Release <?cs var:sdk.rel.id ?>. </p>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/requirements.html"
+</script>
-<h3>Supported Operating Systems</h3>
-<ul>
- <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
- <li>Mac OS X 10.4.8 or later (x86 only)</li>
- <li>Linux (tested on Linux Ubuntu Dapper Drake)
- <ul>
- <li>64-bit distributions must be capable of running 32-bit applications.
- For information about how to add support for 32-bit applications, see
- the <a href="installing.html#InstallationNotes">Installation Notes</a>.</li>
- </ul>
- </li>
-</ul>
-
-<h3>Supported Development Environments</h3>
-<ul>
- <li>Eclipse IDE
- <ul>
- <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.3 (Europa), 3.4 (Ganymede)
- <ul>
- <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers</li>
- <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
- <li>Eclipse Classic IDE package is not supported.</li>
- </ul>
- </li>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
- <li>Other development environments or IDEs
- <ul>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In
-particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p> \ No newline at end of file
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/requirements.html">System Requirements</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.5_r2/index.jd b/docs/html/sdk/1.5_r2/index.jd
index 15342a433992..4fb99b604701 100644
--- a/docs/html/sdk/1.5_r2/index.jd
+++ b/docs/html/sdk/1.5_r2/index.jd
@@ -1,87 +1,5 @@
-sdk.version=1.5
-sdk.rel.id=2
-sdk.date=May 2009
-
-sdk.win_download=android-sdk-windows-1.5_r2.zip
-sdk.win_bytes=178346828
-sdk.win_checksum=ba54ac6bda45921d442b74b6de6ff6a9
-
-sdk.mac_download=android-sdk-mac_x86-1.5_r2.zip
-sdk.mac_bytes=169945128
-sdk.mac_checksum=f4e06a5194410243f213d0177713d6c9
-
-sdk.linux_download=android-sdk-linux_x86-1.5_r2.zip
-sdk.linux_bytes=165035130
-sdk.linux_checksum=1d3c3d099e95a31c43a7b3e6ae307ed3
-
page.title=Android 1.5 SDK, Release 2
-@jd:body
-
-<p>For more information on this SDK release, read the
-<a href="{@docRoot}sdk/RELEASENOTES.html#1.5_r2">Release Notes</a>.</p>
-
-<h2>SDK Contents</h2>
-
-<h4>Development tools</h4>
-
-<p>The SDK includes a full set of tools for developing and debugging application code and designing an application UI. You can read about the tools in the
-<a href="{@docRoot}guide/developing/tools/index.html">Dev Guide</a> and access them in the <code>&lt;sdk&gt;/tools/</code> directory.
-
-<p>The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see <a href="{@docRoot}sdk/1.5_r2/upgrading.html">Upgrading the SDK</a>.
-
-<p>For more information about the new tools features, see the <a href="{@docRoot}sdk/RELEASENOTES.html">SDK Release Notes</a>.
-
-<h4 id="system_images">Android Platforms</h4>
-
-<p>This SDK includes multiple Android platform versions that you use to develop applications. For each version, both a fully compliant Android library and system image are provided. The table below lists the platform versions included in this SDK. For more information about a platform version &mdash; features, applications included, localizations, API changes, and so on &mdash; see its Version Notes. </p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>Platform</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-
-<tr>
-<td width="5%"><nobr>Android 1.5</nobr></td>
-<td width="5%">3</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.5.html">Version Notes</a></nobr></td>
-<td>Includes a standard Android 1.5 library and system image with a set of development applications. Does not include any external libraries (such as the Maps external library).</td>
-</tr>
-<tr>
-<td width="5%"><nobr>Android 1.1</nobr></td>
-<td width="5%">2</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.1.html">Version Notes</a></nobr></td>
-<td>Includes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues).</td>
-</tr>
-</table>
-
-<h4 id="system_images">SDK Add-Ons</h4>
-
-<p>An SDK add-on provides a development environment for an Android external library or a customized (but fully compliant) Android system image. This SDK includes the SDK add-on listed below. The Android system API Level required by the add-on is noted.</p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>Add-On</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-<tr>
-<td width="5%"><nobr>Google APIs</nobr></td>
-<td width="5%">3</td>
-<td width="5%">&nbsp;</td>
-<td>Includes the com.google.android.maps external library, a compliant
-system image, a {@link android.location.Geocoder Geocoder}
-backend service implementation, documentation, and sample code. </td>
-</tr>
-</table>
-
-<h4>Sample Code and Applications</h4>
-
-<p>You can look at a variety of tutorials and samples in the <a href="{@docRoot}guide/samples/index.html">Dev Guide</a> and access the sample code itself
-in the <code>&lt;sdk&gt;/platforms/android-1.5/samples/</code> directory of the SDK package. Note the new location &mdash; the SDK now includes multiple platform versions that you can develop against and each has its own sample code directory. </p>
-
-<h4>Documentation</h4>
-
-<p>The SDK package includes a full set of local documentation. To view it, open the <code>&lt;sdk&gt;/documentation.html</code> file in a web browser. If you are developing in an IDE such as Eclipse, you can also view the reference documentation directly in the IDE. </p>
-
-<p>The most current documentation is always available on the Android Developers site:</p>
-
-<p style="margin-left:2em;"><a href="http://developer.android.com/index.html">http://developer.android.com/</a></p>
+sdk.redirect=true
+sdk.redirect.path=index.html
+@jd:body
diff --git a/docs/html/sdk/1.5_r2/installing.jd b/docs/html/sdk/1.5_r2/installing.jd
index 1e4e0f2479c8..2ea04e468754 100644
--- a/docs/html/sdk/1.5_r2/installing.jd
+++ b/docs/html/sdk/1.5_r2/installing.jd
@@ -1,332 +1,8 @@
-sdk.version=1.5
-sdk.rel.id=2
-sdk.date=April 2009
-
-page.title=Installing the Android SDK
@jd:body
+<script type="text/javascript">
+ document.location=toRoot+"sdk/installing.html"
+</script>
-<p>This page describes how to install the Android SDK and set up your
-development environment. If you haven't downloaded the SDK, you can
-do so from the
-<a href="index.html">Download</a> page. Once you've downloaded
-the SDK, return here.</p>
-
-<p>If you encounter any problems during installation, see the
-<a href="#installnotes">Installation Notes</a> at the bottom of
-this page.</p>
-
-<h4 style="margin-top">Upgrading?</h4>
-<p>If you have already developed applications using an earlier version
-of the SDK, please read
-<a href="upgrading.html"><strong>Upgrading the
-SDK</strong></a></b>, instead.
-</p>
-
-
-<h2 id="setup">Preparing for Installation</h2>
-
-<p>Before you begin, take a moment to confirm that your development machine meets the
-<a href="requirements.html">System Requirements</a>.
-</p>
-
-<p>If you will be developing on Eclipse with the Android Development
-Tools (ADT) Plugin &mdash; the recommended path if you are new to
-Android &mdash; make sure that you have a suitable version of Eclipse
-installed on your computer (3.3 or newer). If you need to install Eclipse, you can
-download it from this location: </p>
-
-<p style="margin-left:2em;"><a href=
-"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a
-></p>
-
-<p>A Java or RCP version of Eclipse is recommended. </p>
-
-<h2 id="installingsdk">Installing the SDK</h2>
-
-<p>After downloading the SDK, unpack the .zip archive to a suitable location on your machine.
-By default, the SDK files are unpacked into a directory named
-<code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em></code>.
-The directory contains a local copy of the documentation (accessible by opening
-<code>documentation.html</code> in your browser) and the subdirectories
-<code>tools/</code>, <code>add-ons/</code>, <code>platforms/</code>, and others. Inside
-each subdirectory of <code>platforms/</code> you'll find <code>samples/</code>, which includes
-code samples that are specific to each version of the platform.</p>
-
-<p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you
-will need to refer to the SDK directory later, when setting up the Android plugin or when
-using the SDK tools.</p>
-
-<p>Optionally, you may want to add the location of the SDK's primary <code>tools</code> directory
-to your system PATH. The primary <code>tools/</code> directory is located at the root of the
-SDK folder. Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and
-the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without
-needing to supply the full path to the tools directory. </p>
-<ul>
- <li>On Linux, edit your <code>~/.bash_profile</code> or <code>~/.bashrc</code> file. Look
- for a line that sets the PATH environment variable and add the
- full path to the <code>tools/</code> directory to it. If you don't
- see a line setting the path, you can add one:</li>
-
- <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
-
- <li>On a Mac, look in your home directory for <code>.bash_profile</code> and
- proceed as for Linux. You can create the <code>.bash_profile</code> if
- you haven't already set one up on your machine. </li>
-
- <li>On Windows, right-click on My Computer, and select Properties.
- Under the Advanced tab, hit the Environment Variables button, and in the
- dialog that comes up, double-click on Path (under System Variables). Add the full path to the
- <code>tools/</code> directory to the path. </li>
- </ul>
-
-<p>Note that, if you update your SDK in the future, you
-should remember to update your PATH settings to point to the new location, if different.</p>
-
-<p>If you will be using the Eclipse IDE as your development environment,
-the next section describes how to install the Android Development Tools plugin and set up Eclipse.
-If you choose not to use Eclipse, you can
-develop Android applications in an IDE of your choice and then compile, debug and deploy using
-the tools included in the SDK (skip to <a href="#next">Next Steps</a>).</p>
-
-
-<h2 id="installingplugin">Installing the ADT Plugin for Eclipse</h2>
-
-<p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT), that is designed to give you a powerful,
-integrated environment in which to build Android applications. It
-extends the capabilites of Eclipse to let you quickly set up new Android
-projects, create an application UI, add components based on the Android
-Framework API, debug your applications using the Android SDK tools, and even export
-signed (or unsigned) APKs in order to distribute your application.</p>
-
-<p>In general, using Eclipse with ADT is a highly recommended
-approach to Android development and is the fastest way to get started.
-(If you prefer to work in an IDE other than Eclipse,
-you do not need to install Eclipse or ADT, instead, you can directly
-use the SDK tools to build and debug your application.)</p>
-
-<p>Once you have Eclipse installed, as described in <a href="#setup">Preparing for
-Installation</a>, follow the steps below to
-download the ADT plugin and install it in your respective Eclipse
-environment. </p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="45%">
-<!-- 3.3 steps -->
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong>
-&gt; <strong>Find and Install...</strong>. </li>
- <li>In the dialog that appears, select <strong>Search for new features to install</strong>
-and click <strong>Next</strong>. </li>
- <li>Click <strong>New Remote Site</strong>. </li>
- <li>In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and
- enter the URL:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>If you have trouble aqcuiring the plugin, try using "http" in the URL,
- instead of "https" (https is preferred for security reasons).</p>
- <p>Click <strong>OK</strong>.</p> </li>
- <li>You should now see the new site added to the search list (and checked).
- Click <strong>Finish</strong>. </li>
- <li>In the subsequent Search Results dialog box, select the checkbox for the
- "Android Plugin".
- This will select the nested tools: "Android DDMS" and "Android Development Tools".
- Click <strong>Next</strong>.</li>
- <li>Read and accept the license agreement, then click <strong>Next</strong>. </li>
- <li>On the following Installation window, click <strong>Finish</strong>. </li>
- <li>The ADT plugin is not digitally signed. Accept the installation anyway
- by clicking <strong>Install All</strong>. </li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-
-<!-- 3.4 steps -->
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.</li>
- <li>In the dialog that appears, click the <strong>Available Software</strong> tab. </li>
- <li>Click <strong>Add Site...</strong> </li>
- <li>Enter the Location:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>If you have trouble aqcuiring the plugin, try using "http" in the Location URL,
- instead of "https" (https is preferred for security reasons).</p>
- <p>Click <strong>OK</strong>.</p></li>
- <li>Back in the Available Software view, you should see the plugin listed by the URL,
- with "Developer Tools" nested within it. Select the checkbox next to
- Developer Tools and click <strong>Install...</strong></li>
- <li>On the subsequent Install window, "Android DDMS" and "Android Development Tools"
- should both be checked. Click <strong>Next</strong>. </li>
- <li>Read and accept the license agreement, then click <strong>Finish</strong>.</li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-</tr>
-</table>
-
-<p>Now modify your Eclipse preferences to point to the Android SDK directory:</p>
-<ol>
- <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
- panel (Mac: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>).</li>
- <li>Select <strong>Android</strong> from the left panel. </li>
- <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse...</strong> and
-locate your downloaded SDK directory. </li>
- <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-
-<p>Done! If you haven't encountered any problems, then you're ready to
-begin developing Android applications. See the
-<a href="#next">Next Steps</a> section for suggestions on how to start. </p>
-
-
-<h3 id="troubleshooting">Troubleshooting ADT Installation</h3>
-<p>
-If you are having trouble downloading the ADT plugin after following the steps above, here are
-some suggestions: </p>
-
-<ul>
- <li>If Eclipse can not find the remote update site containing the ADT plugin, try changing
- the remote site URL to use http, rather than https. That is, set the Location for the remote site to:
- <pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
- <li>If you are behind a firewall (such as a corporate firewall), make
- sure that you have properly configured your proxy settings in Eclipse.
- In Eclipse 3.3/3.4, you can configure proxy information from the main
- Eclipse menu in <strong>Window</strong> (on Mac, <strong>Eclipse</strong>) &gt;
- <strong>Preferences</strong> &gt; <strong>General</strong> &gt;
- <strong>Network Connections</strong>.</li>
-</ul>
-<p>
-If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you
-can download the ADT zip file to your local machine and manually install the it:
-</p>
-<ol>
- <li><a href="{@docRoot}sdk/adt_download.html">Download the ADT zip file</a> (do not unpack it).</li>
- <li>Follow steps 1 and 2 in the default install instructions (above).</li>
- <li>In Eclipse 3.3, click <strong>New Archive Site...</strong>. <br/>
- In Eclipse 3.4, click <strong>Add Site...</strong>, then <strong>Archive...</strong></li>
- <li>Browse and select the downloaded zip file.</li>
- <li>Follow the remaining procedures, above, starting from steps 5.</li>
-</ol>
-<p>To update your plugin once you've installed using the zip file, you will have to
-follow these steps again instead of the default update instructions.</p>
-
-<h4>Other install errors</h4>
-
-<p>Note that there are features of ADT that require some optional
-Eclipse components (for example, WST). If you encounter an error when
-installing ADT, your Eclipse installion might not include these components.
-For information about how to quickly add the necessary components to your
-Eclipse installation, see the troubleshooting topic
-<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT
-Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
-
-<h4>For Linux users</h4>
-<p>If you encounter this error when installing the ADT Plugin for Eclipse:
-<pre>
-An error occurred during provisioning.
-Cannot connect to keystore.
-JKS</pre>
-<p>
-...then your development machine lacks a suitable Java VM. Installing Sun
-Java 6 will resolve this issue and you can then reinstall the ADT
-Plugin.</p>
-
-
-<h2 id="next">Next Steps</h2>
-<p>Once you have completed installation, you are ready to
-begin developing applications. Here are a few ways you can get started: </p>
-
-<p><strong>Learn about Android</strong></p>
-<ul>
- <li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
- Guide</a> and the types of information it provides</li>
- <li>Read an introduction to Android as a platform in <a
- href="{@docRoot}guide/basics/what-is-android.html">What is
- Android?</a></li>
- <li>Learn about the Android framework and how applications run on it in
- <a href="{@docRoot}guide/topics/fundamentals.html">Application
- Fundamentals</a></li>
- <li>Take a look at the Android framework API specification in the <a
- href="{@docRoot}reference/packages.html">Reference</a> tab</li>
-</ul>
-
-<p><strong>Explore the SDK</strong></p>
-<ul>
- <li>Get an overview of the <a
- href="{@docRoot}guide/developing/tools/index.html">development
- tools</a> that are available to you</li>
- <li>Read how to develop <a
- href="{@docRoot}guide/developing/eclipse-adt.html">in Eclipse/ADT</a> or
- <a href="{@docRoot}guide/developing/other-ide.html">in other IDEs</a>
- </li>
-</ul>
-
-<p><strong>Explore some code</strong></p>
-<ul>
- <li>Set up a <a href="{@docRoot}guide/tutorials/hello-world.html">Hello
- World application</a> (highly recommended, especially for Eclipse users)</li>
- <li>Follow the <a href="{@docRoot}guide/tutorials/notepad/index.html">
- Notepad Tutorial</a> to build a full Android application </li>
- <li>Create a new project for one of the other sample applications
- included in <code><em>&lt;sdk&gt;</em>/platforms/<em>&lt;platfrom&gt;</em>/samples</code>,
- then compile and run it in your development environment</li>
-</ul>
-
-<p><strong>Visit the Android developer groups</strong></p>
-<ul>
- <li>Take a look at the <a
- href="{@docRoot}community/index.html">Community</a> tab to see a list of
- Android developers groups. In particular, you might want to look at the
- <a href="http://groups.google.com/group/android-developers">Android
- Developers</a> group to get a sense for what the Android developer
- community is like.</li>
-</ul>
-
-
-<h2 id="installnotes">Installation Notes</h2>
-
-<h3>Ubuntu Linux Notes</h3>
-
-<ul>
- <li>If you need help installing and configuring Java on your
- development machine, you might find these resources helpful:
- <ul>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
- </ul>
- </li>
- <li>Here are the steps to install Java and Eclipse, prior to installing
- the Android SDK and ADT Plugin.
- <ol>
- <li>If you are running a 64-bit distribution on your development
- machine, you need to install the <code>ia32-libs</code> package using
- <code>apt-get:</code>:
- <pre>apt-get install ia32-libs</pre>
- </li>
- <li>Next, install Java: <pre>apt-get install sun-java6-bin</pre></li>
- <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
- version for download, so we recommend that you download Eclipse from
- eclipse.org (<a
- href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
- downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
- <li>Follow the steps given in previous sections to install the SDK
- and the ADT plugin. </li>
- </ol>
- </li>
-</ul>
-
-<h3>Other Linux Notes</h3>
-
-<ul>
- <li>If JDK is already installed on your development computer, please
- take a moment to make sure that it meets the version requirements listed
- in the <a href="{@docRoot}sdk/requirements.html">System Requirements</a>.
- In particular, note that some Linux distributions may include JDK 1.4 or Gnu
- Compiler for Java, both of which are not supported for Android development.</li>
-</ul>
-
-
-
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/installing.html">Installing the Android SDK</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.5_r2/requirements.jd b/docs/html/sdk/1.5_r2/requirements.jd
index c10ccac561ea..96fdcb26f6fa 100644
--- a/docs/html/sdk/1.5_r2/requirements.jd
+++ b/docs/html/sdk/1.5_r2/requirements.jd
@@ -1,45 +1,8 @@
-page.title=System Requirements
@jd:body
-<p>The sections below describe the system and software requirements for developing Android applications using the Android SDK tools included in Android <?cs var:sdk.version ?> SDK, Release <?cs var:sdk.rel.id ?>. </p>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/requirements.html"
+</script>
-<h3>Supported Operating Systems</h3>
-<ul>
- <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
- <li>Mac OS X 10.4.8 or later (x86 only)</li>
- <li>Linux (tested on Linux Ubuntu Dapper Drake)
- <ul>
- <li>64-bit distributions must be capable of running 32-bit applications.
- For information about how to add support for 32-bit applications, see
- the <a href="installing.html#InstallationNotes">Installation Notes</a>.</li>
- </ul>
- </li>
-</ul>
-
-<h3>Supported Development Environments</h3>
-<ul>
- <li>Eclipse IDE
- <ul>
- <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.3 (Europa), 3.4 (Ganymede)
- <ul>
- <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers</li>
- <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
- <li>Eclipse Classic IDE package is not supported.</li>
- </ul>
- </li>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
- <li>Other development environments or IDEs
- <ul>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In
-particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p> \ No newline at end of file
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/requirements.html">System Requirements</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.5_r3/index.jd b/docs/html/sdk/1.5_r3/index.jd
index a79fe43e4146..eb10f5ee435f 100644
--- a/docs/html/sdk/1.5_r3/index.jd
+++ b/docs/html/sdk/1.5_r3/index.jd
@@ -1,88 +1,5 @@
-sdk.version=1.5
-sdk.rel.id=3
-
-sdk.date=July 2009
-
-sdk.win_download=android-sdk-windows-1.5_r3.zip
-sdk.win_bytes=191477853
-sdk.win_checksum=1725fd6963ce69102ba7192568dfc711
-
-sdk.mac_download=android-sdk-mac_x86-1.5_r3.zip
-sdk.mac_bytes=183024673
-sdk.mac_checksum=b1bafdaefdcec89a14b604b504e7daec
-
-sdk.linux_download=android-sdk-linux_x86-1.5_r3.zip
-sdk.linux_bytes=178117561
-sdk.linux_checksum=350d0211678ced38da926b8c9ffa4fac
-
page.title=Android 1.5 SDK, Release 3
-@jd:body
-
-<p>For more information on this SDK release, read the
-<a href="{@docRoot}sdk/RELEASENOTES.html#1.5_r3">Release Notes</a>.</p>
-
-<h2>SDK Contents</h2>
-
-<h4>Development tools</h4>
-
-<p>The SDK includes a full set of tools for developing and debugging application code and designing an application UI. You can read about the tools in the
-<a href="{@docRoot}guide/developing/tools/index.html">Dev Guide</a> and access them in the <code>&lt;sdk&gt;/tools/</code> directory.
-
-<p>The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see <a href="upgrading.html">Upgrading the SDK</a>.
-
-<p>For more information about the new tools features, see the <a href="{@docRoot}sdk/RELEASENOTES.html">SDK Release Notes</a>.
-
-<h4 id="system_images">Android Platforms</h4>
-
-<p>This SDK includes multiple Android platform versions that you use to develop applications. For each version, both a fully compliant Android library and system image are provided. The table below lists the platform versions included in this SDK. For more information about a platform version &mdash; features, applications included, localizations, API changes, and so on &mdash; see its Version Notes. </p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>Platform</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-
-<tr>
-<td width="5%"><nobr>Android 1.5</nobr></td>
-<td width="5%">3</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.5.html">Version Notes</a></nobr></td>
-<td>Includes a standard Android 1.5 library and system image with a set of development applications. Does not include any external libraries (such as the Maps external library).</td>
-</tr>
-<tr>
-<td width="5%"><nobr>Android 1.1</nobr></td>
-<td width="5%">2</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.1.html">Version Notes</a></nobr></td>
-<td>Includes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues).</td>
-</tr>
-</table>
-
-<h4 id="system_images">SDK Add-Ons</h4>
-
-<p>An SDK add-on provides a development environment for an Android external library or a customized (but fully compliant) Android system image. This SDK includes the SDK add-on listed below. The Android system API Level required by the add-on is noted.</p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>Add-On</nobr></th><th><nobr>API Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-<tr>
-<td width="5%"><nobr>Google APIs</nobr></td>
-<td width="5%">3</td>
-<td width="5%">&nbsp;</td>
-<td>Includes the com.google.android.maps external library, a compliant
-system image, a {@link android.location.Geocoder Geocoder}
-backend service implementation, documentation, and sample code. </td>
-</tr>
-</table>
-
-<h4>Sample Code and Applications</h4>
-
-<p>You can look at a variety of tutorials and samples in the <a href="{@docRoot}guide/samples/index.html">Dev Guide</a> and access the sample code itself
-in the <code>&lt;sdk&gt;/platforms/android-1.5/samples/</code> directory of the SDK package. Note the new location &mdash; the SDK now includes multiple platform versions that you can develop against and each has its own sample code directory. </p>
-
-<h4>Documentation</h4>
-
-<p>The SDK package includes a full set of local documentation. To view it, open the <code>&lt;sdk&gt;/documentation.html</code> file in a web browser. If you are developing in an IDE such as Eclipse, you can also view the reference documentation directly in the IDE. </p>
-
-<p>The most current documentation is always available on the Android Developers site:</p>
-
-<p style="margin-left:2em;"><a href="http://developer.android.com/index.html">http://developer.android.com/</a></p>
+sdk.redirect=true
+sdk.redirect.path=index.html
+@jd:body
diff --git a/docs/html/sdk/1.5_r3/installing.jd b/docs/html/sdk/1.5_r3/installing.jd
index ac475d1260c7..2ea04e468754 100644
--- a/docs/html/sdk/1.5_r3/installing.jd
+++ b/docs/html/sdk/1.5_r3/installing.jd
@@ -1,332 +1,8 @@
-sdk.version=1.5
-sdk.rel.id=3
-sdk.date=April 2009
-
-page.title=Installing the Android SDK
@jd:body
+<script type="text/javascript">
+ document.location=toRoot+"sdk/installing.html"
+</script>
-<p>This page describes how to install the Android SDK and set up your
-development environment. If you haven't downloaded the SDK, you can
-do so from the
-<a href="index.html">Download</a> page. Once you've downloaded
-the SDK, return here.</p>
-
-<p>If you encounter any problems during installation, see the
-<a href="#installnotes">Installation Notes</a> at the bottom of
-this page.</p>
-
-<h4 style="margin-top">Upgrading?</h4>
-<p>If you have already developed applications using an earlier version
-of the SDK, please read
-<a href="upgrading.html"><strong>Upgrading the
-SDK</strong></a></b>, instead.
-</p>
-
-
-<h2 id="setup">Preparing for Installation</h2>
-
-<p>Before you begin, take a moment to confirm that your development machine meets the
-<a href="requirements.html">System Requirements</a>.
-</p>
-
-<p>If you will be developing on Eclipse with the Android Development
-Tools (ADT) Plugin &mdash; the recommended path if you are new to
-Android &mdash; make sure that you have a suitable version of Eclipse
-installed on your computer (3.3 or newer). If you need to install Eclipse, you can
-download it from this location: </p>
-
-<p style="margin-left:2em;"><a href=
-"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a
-></p>
-
-<p>A Java or RCP version of Eclipse is recommended. </p>
-
-<h2 id="installingsdk">Installing the SDK</h2>
-
-<p>After downloading the SDK, unpack the .zip archive to a suitable location on your machine.
-By default, the SDK files are unpacked into a directory named
-<code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em></code>.
-The directory contains a local copy of the documentation (accessible by opening
-<code>documentation.html</code> in your browser) and the subdirectories
-<code>tools/</code>, <code>add-ons/</code>, <code>platforms/</code>, and others. Inside
-each subdirectory of <code>platforms/</code> you'll find <code>samples/</code>, which includes
-code samples that are specific to each version of the platform.</p>
-
-<p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you
-will need to refer to the SDK directory later, when setting up the Android plugin or when
-using the SDK tools.</p>
-
-<p>Optionally, you may want to add the location of the SDK's primary <code>tools</code> directory
-to your system PATH. The primary <code>tools/</code> directory is located at the root of the
-SDK folder. Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and
-the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without
-needing to supply the full path to the tools directory. </p>
-<ul>
- <li>On Linux, edit your <code>~/.bash_profile</code> or <code>~/.bashrc</code> file. Look
- for a line that sets the PATH environment variable and add the
- full path to the <code>tools/</code> directory to it. If you don't
- see a line setting the path, you can add one:</li>
-
- <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
-
- <li>On a Mac, look in your home directory for <code>.bash_profile</code> and
- proceed as for Linux. You can create the <code>.bash_profile</code> if
- you haven't already set one up on your machine. </li>
-
- <li>On Windows, right-click on My Computer, and select Properties.
- Under the Advanced tab, hit the Environment Variables button, and in the
- dialog that comes up, double-click on Path (under System Variables). Add the full path to the
- <code>tools/</code> directory to the path. </li>
- </ul>
-
-<p>Note that, if you update your SDK in the future, you
-should remember to update your PATH settings to point to the new location, if different.</p>
-
-<p>If you will be using the Eclipse IDE as your development environment,
-the next section describes how to install the Android Development Tools plugin and set up Eclipse.
-If you choose not to use Eclipse, you can
-develop Android applications in an IDE of your choice and then compile, debug and deploy using
-the tools included in the SDK (skip to <a href="#next">Next Steps</a>).</p>
-
-
-<h2 id="installingplugin">Installing the ADT Plugin for Eclipse</h2>
-
-<p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT), that is designed to give you a powerful,
-integrated environment in which to build Android applications. It
-extends the capabilites of Eclipse to let you quickly set up new Android
-projects, create an application UI, add components based on the Android
-Framework API, debug your applications using the Android SDK tools, and even export
-signed (or unsigned) APKs in order to distribute your application.</p>
-
-<p>In general, using Eclipse with ADT is a highly recommended
-approach to Android development and is the fastest way to get started.
-(If you prefer to work in an IDE other than Eclipse,
-you do not need to install Eclipse or ADT, instead, you can directly
-use the SDK tools to build and debug your application.)</p>
-
-<p>Once you have Eclipse installed, as described in <a href="#setup">Preparing for
-Installation</a>, follow the steps below to
-download the ADT plugin and install it in your respective Eclipse
-environment. </p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.3 (Europa)</th><th>Eclipse 3.4 (Ganymede)</th></tr>
-<tr>
-<td width="45%">
-<!-- 3.3 steps -->
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates</strong>
-&gt; <strong>Find and Install...</strong>. </li>
- <li>In the dialog that appears, select <strong>Search for new features to install</strong>
-and click <strong>Next</strong>. </li>
- <li>Click <strong>New Remote Site</strong>. </li>
- <li>In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and
- enter the URL:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>If you have trouble aqcuiring the plugin, try using "http" in the URL,
- instead of "https" (https is preferred for security reasons).</p>
- <p>Click <strong>OK</strong>.</p> </li>
- <li>You should now see the new site added to the search list (and checked).
- Click <strong>Finish</strong>. </li>
- <li>In the subsequent Search Results dialog box, select the checkbox for the
- "Android Plugin".
- This will select the nested tools: "Android DDMS" and "Android Development Tools".
- Click <strong>Next</strong>.</li>
- <li>Read and accept the license agreement, then click <strong>Next</strong>. </li>
- <li>On the following Installation window, click <strong>Finish</strong>. </li>
- <li>The ADT plugin is not digitally signed. Accept the installation anyway
- by clicking <strong>Install All</strong>. </li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-
-<!-- 3.4 steps -->
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.</li>
- <li>In the dialog that appears, click the <strong>Available Software</strong> tab. </li>
- <li>Click <strong>Add Site...</strong> </li>
- <li>Enter the Location:
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>If you have trouble aqcuiring the plugin, try using "http" in the Location URL,
- instead of "https" (https is preferred for security reasons).</p>
- <p>Click <strong>OK</strong>.</p></li>
- <li>Back in the Available Software view, you should see the plugin listed by the URL,
- with "Developer Tools" nested within it. Select the checkbox next to
- Developer Tools and click <strong>Install...</strong></li>
- <li>On the subsequent Install window, "Android DDMS" and "Android Development Tools"
- should both be checked. Click <strong>Next</strong>. </li>
- <li>Read and accept the license agreement, then click <strong>Finish</strong>.</li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-</tr>
-</table>
-
-<p>Now modify your Eclipse preferences to point to the Android SDK directory:</p>
-<ol>
- <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
- panel (Mac: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>).</li>
- <li>Select <strong>Android</strong> from the left panel. </li>
- <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse...</strong> and
-locate your downloaded SDK directory. </li>
- <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-
-<p>Done! If you haven't encountered any problems, then you're ready to
-begin developing Android applications. See the
-<a href="#next">Next Steps</a> section for suggestions on how to start. </p>
-
-
-<h3 id="troubleshooting">Troubleshooting ADT Installation</h3>
-<p>
-If you are having trouble downloading the ADT plugin after following the steps above, here are
-some suggestions: </p>
-
-<ul>
- <li>If Eclipse can not find the remote update site containing the ADT plugin, try changing
- the remote site URL to use http, rather than https. That is, set the Location for the remote site to:
- <pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
- <li>If you are behind a firewall (such as a corporate firewall), make
- sure that you have properly configured your proxy settings in Eclipse.
- In Eclipse 3.3/3.4, you can configure proxy information from the main
- Eclipse menu in <strong>Window</strong> (on Mac, <strong>Eclipse</strong>) &gt;
- <strong>Preferences</strong> &gt; <strong>General</strong> &gt;
- <strong>Network Connections</strong>.</li>
-</ul>
-<p>
-If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you
-can download the ADT zip file to your local machine and manually install the it:
-</p>
-<ol>
- <li><a href="{@docRoot}sdk/adt_download.html">Download the ADT zip file</a> (do not unpack it).</li>
- <li>Follow steps 1 and 2 in the default install instructions (above).</li>
- <li>In Eclipse 3.3, click <strong>New Archive Site...</strong>. <br/>
- In Eclipse 3.4, click <strong>Add Site...</strong>, then <strong>Archive...</strong></li>
- <li>Browse and select the downloaded zip file.</li>
- <li>Follow the remaining procedures, above, starting from steps 5.</li>
-</ol>
-<p>To update your plugin once you've installed using the zip file, you will have to
-follow these steps again instead of the default update instructions.</p>
-
-<h4>Other install errors</h4>
-
-<p>Note that there are features of ADT that require some optional
-Eclipse components (for example, WST). If you encounter an error when
-installing ADT, your Eclipse installion might not include these components.
-For information about how to quickly add the necessary components to your
-Eclipse installation, see the troubleshooting topic
-<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT
-Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
-
-<h4>For Linux users</h4>
-<p>If you encounter this error when installing the ADT Plugin for Eclipse:
-<pre>
-An error occurred during provisioning.
-Cannot connect to keystore.
-JKS</pre>
-<p>
-...then your development machine lacks a suitable Java VM. Installing Sun
-Java 6 will resolve this issue and you can then reinstall the ADT
-Plugin.</p>
-
-
-<h2 id="next">Next Steps</h2>
-<p>Once you have completed installation, you are ready to
-begin developing applications. Here are a few ways you can get started: </p>
-
-<p><strong>Learn about Android</strong></p>
-<ul>
- <li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
- Guide</a> and the types of information it provides</li>
- <li>Read an introduction to Android as a platform in <a
- href="{@docRoot}guide/basics/what-is-android.html">What is
- Android?</a></li>
- <li>Learn about the Android framework and how applications run on it in
- <a href="{@docRoot}guide/topics/fundamentals.html">Application
- Fundamentals</a></li>
- <li>Take a look at the Android framework API specification in the <a
- href="{@docRoot}reference/packages.html">Reference</a> tab</li>
-</ul>
-
-<p><strong>Explore the SDK</strong></p>
-<ul>
- <li>Get an overview of the <a
- href="{@docRoot}guide/developing/tools/index.html">development
- tools</a> that are available to you</li>
- <li>Read how to develop <a
- href="{@docRoot}guide/developing/eclipse-adt.html">in Eclipse/ADT</a> or
- <a href="{@docRoot}guide/developing/other-ide.html">in other IDEs</a>
- </li>
-</ul>
-
-<p><strong>Explore some code</strong></p>
-<ul>
- <li>Set up a <a href="{@docRoot}guide/tutorials/hello-world.html">Hello
- World application</a> (highly recommended, especially for Eclipse users)</li>
- <li>Follow the <a href="{@docRoot}guide/tutorials/notepad/index.html">
- Notepad Tutorial</a> to build a full Android application </li>
- <li>Create a new project for one of the other sample applications
- included in <code><em>&lt;sdk&gt;</em>/platforms/<em>&lt;platfrom&gt;</em>/samples</code>,
- then compile and run it in your development environment</li>
-</ul>
-
-<p><strong>Visit the Android developer groups</strong></p>
-<ul>
- <li>Take a look at the <a
- href="{@docRoot}community/index.html">Community</a> tab to see a list of
- Android developers groups. In particular, you might want to look at the
- <a href="http://groups.google.com/group/android-developers">Android
- Developers</a> group to get a sense for what the Android developer
- community is like.</li>
-</ul>
-
-
-<h2 id="installnotes">Installation Notes</h2>
-
-<h3>Ubuntu Linux Notes</h3>
-
-<ul>
- <li>If you need help installing and configuring Java on your
- development machine, you might find these resources helpful:
- <ul>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
- </ul>
- </li>
- <li>Here are the steps to install Java and Eclipse, prior to installing
- the Android SDK and ADT Plugin.
- <ol>
- <li>If you are running a 64-bit distribution on your development
- machine, you need to install the <code>ia32-libs</code> package using
- <code>apt-get:</code>:
- <pre>apt-get install ia32-libs</pre>
- </li>
- <li>Next, install Java: <pre>apt-get install sun-java6-bin</pre></li>
- <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
- version for download, so we recommend that you download Eclipse from
- eclipse.org (<a
- href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
- downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
- <li>Follow the steps given in previous sections to install the SDK
- and the ADT plugin. </li>
- </ol>
- </li>
-</ul>
-
-<h3>Other Linux Notes</h3>
-
-<ul>
- <li>If JDK is already installed on your development computer, please
- take a moment to make sure that it meets the version requirements listed
- in the <a href="{@docRoot}sdk/requirements.html">System Requirements</a>.
- In particular, note that some Linux distributions may include JDK 1.4 or Gnu
- Compiler for Java, both of which are not supported for Android development.</li>
-</ul>
-
-
-
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/installing.html">Installing the Android SDK</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.5_r3/requirements.jd b/docs/html/sdk/1.5_r3/requirements.jd
index 5bcee27ed753..96fdcb26f6fa 100644
--- a/docs/html/sdk/1.5_r3/requirements.jd
+++ b/docs/html/sdk/1.5_r3/requirements.jd
@@ -1,48 +1,8 @@
-sdk.version=1.5
-sdk.rel.id=3
-page.title=System Requirements
-
@jd:body
-<p>The sections below describe the system and software requirements for developing Android applications using the Android SDK tools included in Android <?cs var:sdk.version ?> SDK, Release <?cs var:sdk.rel.id ?>. </p>
-
-<h3>Supported Operating Systems</h3>
-<ul>
- <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
- <li>Mac OS X 10.4.8 or later (x86 only)</li>
- <li>Linux (tested on Linux Ubuntu Dapper Drake)
- <ul>
- <li>64-bit distributions must be capable of running 32-bit applications.
- For information about how to add support for 32-bit applications, see
- the <a href="installing.html#InstallationNotes">Installation Notes</a>.</li>
- </ul>
- </li>
-</ul>
-
-<h3>Supported Development Environments</h3>
-<ul>
- <li>Eclipse IDE
- <ul>
- <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.3 (Europa), 3.4 (Ganymede)
- <ul>
- <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers</li>
- <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
- <li>Eclipse Classic IDE package is not supported.</li>
- </ul>
- </li>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
- <li>Other development environments or IDEs
- <ul>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
-</ul>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/requirements.html"
+</script>
-<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In
-particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p> \ No newline at end of file
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/requirements.html">System Requirements</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.6_r1/index.jd b/docs/html/sdk/1.6_r1/index.jd
index 8f33949c05d1..e7f9112ce2fb 100644
--- a/docs/html/sdk/1.6_r1/index.jd
+++ b/docs/html/sdk/1.6_r1/index.jd
@@ -1,140 +1,5 @@
page.title=Android 1.6 SDK, Release 1
-sdk.redirect=0
-sdk.version=1.6
-
-sdk.date=September 2009
-
-sdk.win_download=android-sdk-windows-1.6_r1.zip
-sdk.win_bytes=260529085
-sdk.win_checksum=2bcbacbc7af0363058ca1cac6abad848
-
-sdk.mac_download=android-sdk-mac_x86-1.6_r1.zip
-sdk.mac_bytes=247412515
-sdk.mac_checksum=eb13cc79602d492e89103efcf48ac1f6
-
-sdk.linux_download=android-sdk-linux_x86-1.6_r1.tgz
-sdk.linux_bytes=238224860
-sdk.linux_checksum=b4bf0e610ff6db2fb6fb09c49cba1e79
-
-adt.zip_download=ADT-0.9.3.zip
-adt.zip_version=0.9.3
-adt.zip_bytes=3252487
-adt.zip_checksum=c296488ac35772667c0f49e822156979
+sdk.redirect=true
+sdk.redirect.path=index.html
@jd:body
-
-<p>For more information on this SDK release, read the
-<a href="{@docRoot}sdk/RELEASENOTES.html#1.6_r1">Release Notes</a>.</p>
-
-<h2>SDK Contents</h2>
-
-<h4>Development tools</h4>
-
-<p>The SDK includes a full set of tools for developing and debugging application
-code and designing an application UI. You can read about the tools in the <a
-href="{@docRoot}guide/developing/tools/index.html">Dev Guide</a> and access them
-in the <code>&lt;sdk&gt;/tools/</code> directory.
-
-<p>The tools package in this SDK includes updates from those provided in the
-previous SDK. The tools use the same project structure as in the previous SDK
-(Android 1.5). If you have application projects developed in the Android 1.5
-SDK, you can migrate them to the latest SDK without modification. For more
-information about how to migrate, see <a href="upgrading.html">Upgrading the
-SDK</a>.
-
-<h4 id="system_images">Android Platforms</h4>
-
-<p>This SDK includes multiple Android platform versions that you can use to
-develop applications. For each version, both a fully compliant Android library
-and system image are provided. The table below lists the platform versions
-included in this SDK. For more information about a platform version &mdash;
-features, applications included, localizations, API changes, and so on &mdash;
-see its Version Notes. </p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>Platform</nobr></th><th><nobr>API
-Level</nobr></th><th>Notes</th><th>Description</th>
-</tr>
-<tr>
-<td width="5%"><nobr>Android 1.6</nobr></td>
-<td width="5%">4</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.6.html">Version
-Notes</a></nobr></td>
-<td>Includes a standard Android 1.6 library and system image with a set of
-development applications. Does not include any external libraries (such as the
-Maps external library).</td>
-</tr>
-<tr>
-<td width="5%"><nobr>Android 1.5</nobr></td>
-<td width="5%">3</td>
-<td width="5%"><nobr><a href="{@docRoot}sdk/android-1.5.html">Version
-Notes</a></nobr></td>
-<td>Includes a standard Android 1.5 library and system image with a set of
-development applications. Does not include any external libraries (such as the
-Maps external library).</td>
-</tr>
-</table>
-
-<p>Note that you can use the Android SDK and AVD Manager to download other
-platform versions into your development environment.</span>.
-
-<h4 id="system_images">SDK Add-Ons</h4>
-
-<p>An SDK add-on provides a development environment for an Android external
-library or a customized (but fully compliant) Android system image. This SDK
-includes the SDK add-ons listed below. The Android system API Level required by
-the add-ons are noted.</p>
-
-<table style="margin-right:1em;" width="80%">
-<tr>
-<th><nobr>Add-On</nobr></th><th><nobr>API Level</nobr></th>
-<th>Notes</th><th>Description</th>
-</tr>
-<tr>
-<td width="5%"><nobr>Google APIs</nobr></td>
-<td width="5%">4</td>
-<td width="5%">&nbsp;</td>
-<td>Includes the com.google.android.maps external library, a compliant
-Android 1.6 system image, a {@link android.location.Geocoder Geocoder}
-backend service implementation, documentation, and sample code. </td>
-</tr>
-<tr>
-<td width="5%"><nobr>Google APIs</nobr></td>
-<td width="5%">3</td>
-<td width="5%">&nbsp;</td>
-<td>Includes the com.google.android.maps external library, a compliant
-Android 1.5 system image, a {@link android.location.Geocoder Geocoder}
-backend service implementation, documentation, and sample code. </td>
-</tr>
-</table>
-
-<h4>Sample Code and Applications</h4>
-
-<p>You can look at a variety of tutorials and samples in the <a
-href="{@docRoot}guide/samples/index.html">Dev Guide</a> and access the sample
-code itself in the <code>&lt;sdk&gt;/platforms/&lt;platform&gt;/samples/</code>
-directory of the SDK package. Note the new location &mdash; the SDK now includes
-multiple platform versions that you can develop against and each has its own
-sample code directory. </p>
-
-<p>For example, to view or build the samples available for the Android
-1.6 platform (AVD target "Android 1.6"), you will find the samples in the
-<code>&lt;sdk&gt;/platforms/android-1.6/samples/</code> directory of the SDK
-package. </p>
-
-<h4>Documentation</h4>
-
-<p>The SDK package includes a full set of local documentation. To view it, open
-the <code>&lt;sdk&gt;/documentation.html</code> file in a web browser. If you
-are developing in an IDE such as Eclipse, you can also view the reference
-documentation directly in the IDE. </p>
-
-<p>The most current documentation is always available on the Android Developers
-site:</p>
-
-<p style="margin-left:2em;"><a
-href="http://developer.android.com/index.html">http://developer.android.com/</a>
-</p>
-
-
diff --git a/docs/html/sdk/1.6_r1/installing.jd b/docs/html/sdk/1.6_r1/installing.jd
index 954bfa3f0039..2ea04e468754 100644
--- a/docs/html/sdk/1.6_r1/installing.jd
+++ b/docs/html/sdk/1.6_r1/installing.jd
@@ -1,441 +1,8 @@
-page.title=Installing the Android 1.6 SDK
-sdk.version=1.6
-sdk.preview=0
-
@jd:body
-<div id="qv-wrapper">
-<div id="qv">
-
- <h2>In this document</h2>
- <ol>
- <li><a href="#Preparing">Prepare for Installation</a></li>
- <li><a href="#Installing">Install the SDK</a></li>
- <li><a href="#InstallingADT">Install the ADT Plugin for Eclipse</a></li>
- <li><a href="#sdkContents">SDK Contents</a></li>
- <li><a href="#NextSteps">Next Steps</a></li>
- <li><a href="#InstallationNotes">Installation Notes</a></li>
- <li><a href="#Troubleshooting">Troubleshooting ADT Installation</a></li>
- </ol>
-
-</div>
-</div>
-
-<p>This page describes how to install the Android SDK and set up your
-development environment.</p>
-
-<p>If you encounter any problems during installation, see the
-<a href="#InstallationNotes">Installation Notes</a> at the bottom of
-this page.</p>
-
-<h4 style="margin-top">Upgrading?</h4>
-<p>If you have already developed applications using an earlier version
-of the Android SDK, please read <a href="upgrading.html">Upgrading the SDK</a>, instead.
-</p>
-
-
-<h2 id="Preparing">Prepare for Installation</h2>
-
-<p>Before you begin, take a moment to confirm that your development machine
-meets the <a href="requirements.html">System Requirements</a>.</p>
-
-<p>If you will be developing on Eclipse with the Android Development
-Tools (ADT) Plugin &mdash; the recommended path if you are new to
-Android &mdash; make sure that you have a suitable version of Eclipse
-installed on your computer (3.4 or newer is recommended). If you need
-to install Eclipse, you can download it from this location: </p>
-
-<p style="margin-left:2em;"><a href=
-"http://www.eclipse.org/downloads/">http://www.eclipse.org/downloads/</a></p>
-
-<p>A Java or RCP version of Eclipse is recommended. </p>
-
-<h2 id="Installing">Install the SDK</h2>
-
-<p>After downloading the Android SDK, unpack the Android SDK .zip archive
-to a suitable location on your machine. By default, the SDK files are unpacked
-into a directory named <code>android_sdk_<em>&lt;platform</em>&gt;_<em>&lt;release&gt;</em></code>. </p>
-
-<p>Make a note of the name and location of the unpacked SDK directory on your system &mdash; you
-will need to refer to the SDK directory later, when setting up the Android plugin or when
-using the SDK tools.</p>
-
-<p>Optionally, you may want to add the location of the SDK's primary <code>tools</code> directory
-to your system <code>PATH</code>. The primary <code>tools/</code> directory is located at the root of the
-SDK folder. Adding <code>tools</code> to your path lets you run Android Debug Bridge (adb) and
-the other command line <a href="{@docRoot}guide/developing/tools/index.html">tools</a> without
-needing to supply the full path to the tools directory. </p>
-<ul>
- <li>On Linux, edit your <code>~/.bash_profile</code> or <code>~/.bashrc</code> file. Look
- for a line that sets the PATH environment variable and add the
- full path to the <code>tools/</code> directory to it. If you don't
- see a line setting the path, you can add one:</li>
-
- <ul><code>export PATH=${PATH}:<em>&lt;your_sdk_dir&gt;</em>/tools</code></ul>
-
- <li>On a Mac, look in your home directory for <code>.bash_profile</code> and
- proceed as for Linux. You can create the <code>.bash_profile</code> if
- you haven't already set one up on your machine. </li>
-
- <li>On Windows, right-click on My Computer, and select Properties.
- Under the Advanced tab, hit the Environment Variables button, and in the
- dialog that comes up, double-click on Path (under System Variables). Add the full path to the
- <code>tools/</code> directory to the path. </li>
- </ul>
-
-<p>Note that, if you update your SDK in the future, you
-should remember to update your <code>PATH</code> settings to point to the new location, if different.</p>
-
-<p>If you will be using the Eclipse IDE as your development environment,
-the next section describes how to install the Android Development Tools (ADT) plugin and set up Eclipse.
-If you choose not to use Eclipse, you can
-develop Android applications in an IDE of your choice and then compile, debug and deploy using
-the tools included in the SDK (skip to <a href="#NextSteps">Next Steps</a>).</p>
-
-
-<h2 id="InstallingADT">Install the ADT Plugin for Eclipse</h2>
-
-<p>Android offers a custom plugin for the Eclipse IDE, called Android
-Development Tools (ADT), that is designed to give you a powerful,
-integrated environment in which to build Android applications. It
-extends the capabilites of Eclipse to let you quickly set up new Android
-projects, create an application UI, add components based on the Android
-Framework API, debug your applications using the Android SDK tools, and even export
-signed (or unsigned) APKs in order to distribute your application.</p>
-
-<p>In general, using Eclipse with ADT is a highly recommended approach to
-Android development and is the fastest way to get started. (If you prefer to
-work in an IDE other than Eclipse, you do not need to install Eclipse or ADT,
-instead, you can directly use the SDK tools to build and debug your
-application&mdash;skip to <a href="#NextSteps">Next Steps</a>.)</p>
-
-<p>Once you have the Eclipse IDE installed, as described in <a
-href="#Preparing">Preparing for Installation</a>, follow the steps below to
-download the ADT plugin and install it in your respective Eclipse environment.
-</p>
-
-<table style="font-size:100%">
-<tr><th>Eclipse 3.4 (Ganymede)</th><th>Eclipse 3.5 (Galileo)</th></tr>
-<tr>
-<td width="45%">
-<!-- 3.4 steps -->
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Software Updates...</strong>.
- In the dialog that appears, click the <strong>Available Software</strong> tab. </li>
- <li>Click <strong>Add Site...</strong> </li>
- <li>In the Add Site dialog that appears, enter this URL in the "Location" field:
- <pre style="margin-left:0">https://dl-ssl.google.com/android/eclipse/</pre>
- <p>Note: If you have trouble aqcuiring the plugin, try using "http" in the Location URL,
- instead of "https" (https is preferred for security reasons).</p>
- <p>Click <strong>OK</strong>.</p></li>
- <li>Back in the Available Software view, you should see the plugin listed by the URL,
- with "Developer Tools" nested within it. Select the checkbox next to
- Developer Tools and click <strong>Install...</strong></li>
- <li>On the subsequent Install window, "Android DDMS" and "Android Development Tools"
- should both be checked. Click <strong>Next</strong>. </li>
- <li>Read and accept the license agreement, then click <strong>Finish</strong>.</li>
- <li>Restart Eclipse. </li>
-</ol>
-
-</td>
-<td>
-<!-- 3.5 steps -->
-<ol>
- <li>Start Eclipse, then select <strong>Help</strong> &gt; <strong>Install
- New Softare</strong>. </li>
- <li>In the Available Software dialog, click <strong>Add...</strong>.</li>
- <li>In the Add Site dialog that appears, enter a name for the remote site
- (e.g., "Android Plugin") in the "Name" field.
- <p>In the "Location" field, enter this URL:</p>
- <pre>https://dl-ssl.google.com/android/eclipse/</pre>
- <p>Note: If you have trouble aqcuiring the plugin, you can try
- using "http" in the URL, instead of "https" (https is preferred for
- security reasons).</p>
- <p>Click <strong>OK</strong>.</p>
- </li>
- <li>Back in the Available Software view, you should now see "Developer
- Tools" added to the list. Select the checkbox next to Developer Tools,
- which will automatically select the nested tools Android DDMS and Android
- Development Tools.
- Click <strong>Next</strong>. </li>
- <li>In the resulting Install Details dialog, the Android DDMS and Android
- Development Tools features are listed. Click <strong>Next</strong> to
- read and accept the license agreement and install any dependencies,
- then click <strong>Finish</strong>. </li>
- <li>Restart Eclipse. </li>
-
-</ol>
-</td>
-</tr>
-</table>
-
-<p>Now modify your Eclipse preferences to point to the Android SDK directory:</p>
-<ol>
- <li>Select <strong>Window</strong> &gt; <strong>Preferences...</strong> to open the Preferences
- panel (Mac: <strong>Eclipse</strong> &gt; <strong>Preferences</strong>).</li>
- <li>Select <strong>Android</strong> from the left panel. </li>
- <li>For the <em>SDK Location</em> in the main panel, click <strong>Browse...</strong> and
- locate your downloaded SDK directory. </li>
- <li>Click <strong>Apply</strong>, then <strong>OK</strong>.</li>
-</ol>
-
-<p>Done! If you haven't encountered any problems, then you're ready to
-begin developing Android applications. See the
-<a href="#NextSteps">Next Steps</a> section for suggestions on how to start. </p>
-
-
-<h2 id="sdkContents">Contents of the SDK</h2>
-
-<p>Once you've downloaded and unpacked the SDK, open the SDK directory
-and take a look at what's inside.
-
-<p>The table below describes the SDK directory contents. </p>
-
-<table>
-<tr>
-<th colspan="3">Name</th><th>Description</th>
-</tr>
-<tr>
-<td colspan="3"><code>add-ons/</code></td>
-<td>Contains add-ons to the Android SDK development
-environment, which let you develop against external libraries that are available on some
-devices. </td>
-</tr>
-<tr>
-<td colspan="3"><code>docs/</code></td>
-<td>A full set of documentation in HTML format, including the Developer's Guide,
-API Reference, and other information.</td>
-</tr>
-<tr>
-<td colspan="3"><code>platforms/</code></td>
-<td>Contains a set of Android platform versions that you can develop
-applications against, each in a separate directory. </td>
-</tr>
-<tr>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td colspan="2"><code>&lt;platform&gt;/</code></td>
-<td>Platform version directory, for example "Android 1.6". All platform version
-directories contain a similar set of files and subdirectory structure.</td>
-</tr>
-
-<tr>
-<td style="width:2em;border-bottom-color:white;">&nbsp;</td>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td><code>data/</code></td>
-<td>Storage area for default fonts and resource definitions.</td>
-</tr>
-<tr>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td><code>images/</code></td>
-<td>Storage area for default disk images, including the Android system image,
-the default userdata image, the default ramdisk image, and more. The images
-are used in emulator sessions.</td>
-</tr>
-<tr>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td><code>samples/</code></td>
-<td>Contains a wide variety of sample applications that you can load as projects
-into your development environment, compile, and run on the emulator.</td>
-</tr>
-<tr>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td><code>skins/</code></td>
-<td>A set of emulator skins available for the platform version. Each skin is
-designed for a specific screen resolution.</td>
-</tr>
-<tr>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td><code>templates/</code></td>
-<td>Storage area for file templates used by the SDK development tools.</td>
-</tr>
-<tr>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td style="width:2em;border-bottom-color:white;"></td>
-<td><code>tools/</code></td>
-<td>Any development tools that are specific to the platform version.</td>
-</tr>
-<tr>
-<td style="width:2em;"></td>
-<td style="width:2em;"></td>
-<td><code>android.jar</code></td>
-<td>The Android library used when compiling applications against this platform
-version.</td>
-</tr>
-<tr>
-<td colspan="3"><code>tools/</code></td>
-<td>Contains the set of development and profiling tools available to you, such
-as the emulator, the <code>android</code> tool, adb, ddms, and more.</td>
-</tr>
-<tr>
-<td colspan="3"><code>RELEASE_NOTES.html</code></td>
-<td>A file that loads the local version of the SDK release notes, if
-available.</td>
-</tr>
-<tr>
-<td colspan="3"><code>documentation.html</code></td>
-<td>A file that loads the entry page for the local Android SDK
-documentation.</td>
-</tr>
-
-</table>
-
-<h2 id="NextSteps">Next Steps</h2>
-<p>Once you have completed installation, you are ready to
-begin developing applications. Here are a few ways you can get started: </p>
-
-<p><strong>Learn about Android</strong></p>
-<ul>
- <li>Take a look at the <a href="{@docRoot}guide/index.html">Dev
- Guide</a> and the types of information it provides</li>
- <li>Read an introduction to Android as a platform in <a
- href="{@docRoot}guide/basics/what-is-android.html">What is
- Android?</a></li>
- <li>Learn about the Android framework and how applications run on it in
- <a href="{@docRoot}guide/topics/fundamentals.html">Application
- Fundamentals</a></li>
- <li>Take a look at the Android framework API specification in the <a
- href="{@docRoot}reference/packages.html">Reference</a> tab</li>
-</ul>
-
-<p><strong>Explore the SDK</strong></p>
-<ul>
- <li>Get an overview of the <a
- href="{@docRoot}guide/developing/tools/index.html">development
- tools</a> that are available to you</li>
- <li>Read how to develop <a
- href="{@docRoot}guide/developing/eclipse-adt.html">in Eclipse/ADT</a> or
- <a href="{@docRoot}guide/developing/other-ide.html">in other IDEs</a>
- </li>
-</ul>
-
-<p><strong>Explore some code</strong></p>
-<ul>
- <li>Set up a <a href="{@docRoot}guide/tutorials/hello-world.html">Hello
- World application</a> (highly recommended, especially for Eclipse users)</li>
- <li>Follow the <a href="{@docRoot}guide/tutorials/notepad/index.html">
- Notepad Tutorial</a> to build a full Android application </li>
- <li>Create a new project for one of the other sample applications
- included in <code><em>&lt;sdk&gt;</em>/platforms/<em>&lt;platform&gt;</em>/samples</code>,
- then compile and run it in your development environment</li>
-</ul>
-
-<p><strong>Visit the Android developer groups</strong></p>
-<ul>
- <li>Take a look at the <a
- href="{@docRoot}community/index.html">Community</a> tab to see a list of
- Android developers groups. In particular, you might want to look at the
- <a href="http://groups.google.com/group/android-developers">Android
- Developers</a> group to get a sense for what the Android developer
- community is like.</li>
-</ul>
-
-
-<h2 id="InstallationNotes">Installation Notes</h2>
-
-<h3>Ubuntu Linux Notes</h3>
-
-<ul>
- <li>If you need help installing and configuring Java on your
- development machine, you might find these resources helpful:
- <ul>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/Java </a></li>
- <li><a href="https://help.ubuntu.com/community/Java">https://help.ubuntu.com/community/JavaInstallation</a></li>
- </ul>
- </li>
- <li>Here are the steps to install Java and Eclipse, prior to installing
- the Android SDK and ADT Plugin.
- <ol>
- <li>If you are running a 64-bit distribution on your development
- machine, you need to install the <code>ia32-libs</code> package using
- <code>apt-get:</code>:
- <pre>apt-get install ia32-libs</pre>
- </li>
- <li>Next, install Java: <pre>apt-get install sun-java6-bin</pre></li>
- <li>The Ubuntu package manager does not currently offer an Eclipse 3.3
- version for download, so we recommend that you download Eclipse from
- eclipse.org (<a
- href="http://www.eclipse.org/downloads/">http://www.eclipse.org/
- downloads/</a>). A Java or RCP version of Eclipse is recommended.</li>
- <li>Follow the steps given in previous sections to install the SDK
- and the ADT plugin. </li>
- </ol>
- </li>
-</ul>
-
-<h3>Other Linux Notes</h3>
-
-<ul>
- <li>If JDK is already installed on your development computer, please
- take a moment to make sure that it meets the version requirements listed
- in the <a href="requirements.html">System Requirements</a>.
- In particular, note that some Linux distributions may include JDK 1.4 or Gnu
- Compiler for Java, both of which are not supported for Android development.</li>
-</ul>
-
-
-<h2 id="Troubleshooting">Troubleshooting ADT Installation</h2>
-
-<p> If you are having trouble downloading the ADT plugin after following the
-steps above, here are some suggestions: </p>
-
-<ul>
- <li>If Eclipse can not find the remote update site containing the ADT plugin,
-try changing the remote site URL to use http, rather than https. That is, set
-the Location for the remote site to:
-<pre>http://dl-ssl.google.com/android/eclipse/</pre></li>
-<li>If you are behind a firewall (such as a corporate firewall), make sure that
-you have properly configured your proxy settings in Eclipse. In Eclipse 3.3/3.4,
-you can configure proxy information from the main Eclipse menu in
-<strong>Window</strong> (on Mac, <strong>Eclipse</strong>) &gt;
-<strong>Preferences</strong> &gt; <strong>General</strong> &gt; <strong>Network
-Connections</strong>.</li>
-</ul>
-
-<p> If you are still unable to use Eclipse to download the ADT plugin as a
-remote update site, you can download the ADT zip file to your local machine and
-manually install it:</p>
-
-<ol>
- <li><a href="http://developer.android.com/sdk/preview/index.html">Download the
- ADT Plugin zip file</a> (do not unpack it).</li>
- <li>Follow steps 1 and 2 in the <a href="#InstallingADT">default install
- instructions</a> (above).</li>
- <li>In the Add Site dialog, click <strong>Archive</strong>.</li>
- <li>Browse and select the downloaded zip file.</li>
- <li>In Eclipse 3.5 only, enter a name for the local update site (e.g.,
- "Android Plugin") in the "Name" field.</li>
- <li>Click <strong>OK</strong>.
- <li>Follow the remaining procedures as listed for
- <a href="#InstallingADT">default installation</a> above,
- starting from step 4.</li>
-</ol>
-
-<p>To update your plugin once you've installed using the zip file, you will have
-to follow these steps again instead of the default update instructions.</p>
-
-<h4>Other install errors</h4>
-
-<p>Note that there are features of ADT that require some optional
-Eclipse components (for example, WST). If you encounter an error when
-installing ADT, your Eclipse installion might not include these components.
-For information about how to quickly add the necessary components to your
-Eclipse installation, see the troubleshooting topic
-<a href="{@docRoot}guide/appendix/faq/troubleshooting.html#installeclipsecomponents">ADT
-Installation Error: "requires plug-in org.eclipse.wst.sse.ui"</a>.</p>
-
-<h4>For Linux users</h4>
-<p>If you encounter this error when installing the ADT Plugin for Eclipse:
-<pre>
-An error occurred during provisioning.
-Cannot connect to keystore.
-JKS</pre>
-<p>
-...then your development machine lacks a suitable Java VM. Installing Sun
-Java 6 will resolve this issue and you can then reinstall the ADT
-Plugin.</p>
-
+<script type="text/javascript">
+ document.location=toRoot+"sdk/installing.html"
+</script>
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/installing.html">Installing the Android SDK</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/1.6_r1/requirements.jd b/docs/html/sdk/1.6_r1/requirements.jd
index 8cfc0494b820..96fdcb26f6fa 100644
--- a/docs/html/sdk/1.6_r1/requirements.jd
+++ b/docs/html/sdk/1.6_r1/requirements.jd
@@ -1,57 +1,8 @@
-page.title=System Requirements
-sdk.version=1.6
-sdk.preview=0
@jd:body
-<p>The sections below describe the system and software requirements for developing
-Android applications using the Android SDK tools included in Android
-<?cs var:sdk.version ?> SDK<?cs if:sdk.rel.id ?>, Release <?cs var:sdk.rel.id ?><?cs /if ?>. </p>
-
-<h3>Supported Operating Systems</h3>
-<ul>
- <li>Windows XP (32-bit) or Vista (32- or 64-bit)</li>
- <li>Mac OS X 10.4.8 or later (x86 only)</li>
- <li>Linux (tested on Linux Ubuntu Hardy Heron)
- <ul>
- <li>64-bit distributions must be capable of running 32-bit applications.
- For information about how to add support for 32-bit applications, see
- the <a href="installing.html#InstallationNotes">Installation Notes</a>.</li>
- </ul>
- </li>
-</ul>
-
-<h3>Supported Development Environments</h3>
-<ul>
- <li>Eclipse IDE
- <ul>
- <li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.4 (Ganymede) or 3.5 (Galileo)
- <ul>
- <li>Note: Eclipse 3.3 has not been fully tested with ADT 0.9.3 and support can no longer be guaranteed. We suggest you upgrade to
- Eclipse 3.4 or 3.5.</li>
- <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers</li>
- <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
- <li>Eclipse Classic IDE package is not supported.</li>
- </ul>
- </li>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
- <li>Other development environments or IDEs
- <ul>
- <li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="http://ant.apache.org/">Apache Ant</a> 1.6.5 or later for Linux and Mac, 1.7 or later for Windows</li>
- <li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
- </ul>
- </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In
-particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development. </p>
-
-<h3>Hardware requirements</h3>
-<ul>
- <li>For the base SDK package, at least 600MB of available disk space. For each platform downloaded into the SDK, an additional 100MB is needed. </li>
-</ul>
+<script type="text/javascript">
+ document.location=toRoot+"sdk/requirements.html"
+</script>
+<p>You should have already been redirected by your browser. Please go to
+<a href="{@docRoot}sdk/requirements.html">System Requirements</a>.</p> \ No newline at end of file
diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd
index bca89f610b7c..cbfac2b67e7e 100644
--- a/docs/html/sdk/RELEASENOTES.jd
+++ b/docs/html/sdk/RELEASENOTES.jd
@@ -76,11 +76,8 @@ value the application declares in its manifest. For more information, see
</ul>
<p>For details about the Android platforms included in the SDK &mdash; including
-bug fixes, features, and API changes &mdash; please read the Version Notes
-documents available at left. For a list of Android platforms included in this
-release, see the <a href="{@docRoot}sdk/1.6_r1/index.html">Download
-page</a>. Note that you can use the Android SDK and AVD Manager to download
-additional platforms.</p>
+bug fixes, features, and API changes &mdash; please read the <a
+href="android-1.6.html">Android 1.6 version notes</a>.</p>
<h3>Installation and Upgrade Notes</h3>
@@ -96,10 +93,6 @@ to migrate the application to the new SDK, compile it using the platform
matching the application's original API Level, and run it against the most
current platform. </p>
-<p>If you're installing the Android SDK for the first time, please see
-the instructions in <a
-href="{@docRoot}sdk/1.6_r1/installing.html">Installing the SDK</a>.
-
<h3>ADT Plugin for Eclipse</h3>
<p>An updated version of the ADT Plugin for Eclipse is available with the
@@ -115,8 +108,8 @@ Plugin (0.9.3 or higher). </p>
<p>The new version of ADT is downloadable from the usual remote update site or
is separately downloadable as a .zip archive. For instructions on how to
-download the plugin, please see <a href="{@docRoot}sdk/1.6_r1/upgrading.html#UpdateAdt">Upgrading
-Your Eclipse Plugin</a>. </p>
+download the plugin, please see <a
+href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>. </p>
<h3>Android SDK and AVD Manager</h3>
@@ -208,11 +201,9 @@ properly, you do not need to upgrade to the new driver. However, we recommend
upgrading if you have had any problems with the older driver or simply want
to upgrade to the latest version.</p>
-<p>The USB driver files are located in the
-<code>&lt;SDK&gt;/usb_driver</code> directory. For driver installation or
+<p>For driver installation or
upgrade instructions, see <a
-href="{@docRoot}guide/developing/device.html#WinUsbDriver">Installing the WinUSB
-Driver</a>.</p>
+href="{@docRoot}sdk/win-usb.html">USB Driver for Windows</a>.</p>
</p>
<h3>Emulator Skins, Android 1.6 Platform</h3>
@@ -360,10 +351,8 @@ Android project.</li>
</ul>
<p>For details about the Android platforms included in the SDK &mdash; including
-bug fixes, features, and API changes &mdash; please read the Version Notes
-documents available at left. For a list of Android platforms included in this
-release, see the <a href="{@docRoot}sdk/1.5_r1/index.html">Download
-page</a>.</p>
+bug fixes, features, and API changes &mdash; please read the <a
+href="{@docRoot}sdk/android-1.5.html">Android 1.5 version notes</a>.</p>
<h3>Installation and Upgrade Notes</h3>
@@ -379,10 +368,6 @@ to migrate the application to the new SDK, compile it using the platform
matching the application's original API Level, and run it against the most
current platform. </p>
-<p>If you're installing the Android SDK for the first time, please see
-the instructions in <a
-href="{@docRoot}sdk/1.5_r1/installing.html">Installing the SDK</a>.
-
<h3>SDK Add-Ons</h3>
<p>This version of the SDK introduces support for SDK add-ons, which extend the
@@ -457,11 +442,9 @@ these USB drivers that you can install, to let you develop on the device:</p>
<li>USB driver for 64-bit Vista only</li>
</ul>
-<p>The USB driver files are located in the
-<code>&lt;SDK&gt;/usb_driver</code> directory. For details and
-installation instructions, see <a
-href="{@docRoot}guide/developing/device.html#setting-up">Setting Up a
-Device for Development</a>.</p>
+<p>For driver installation or
+upgrade instructions, see <a
+href="{@docRoot}sdk/win-usb.html">USB Driver for Windows</a>.</p>
</p>
<h3>Resolved Issues, Changes</h3>
@@ -508,7 +491,7 @@ as well as a few minor API changes from the 1.0 version. </p>
<p>For details about the Android 1.1 system image included in the SDK &mdash;
including bug fixes, features, and API changes &mdash; please read the <a
-href="{@docRoot}sdk/android-1.1.html">Android 1.1 Version Notes</a>.</p>
+href="{@docRoot}sdk/android-1.1.html">Android 1.1 version notes</a>.</p>
<h3>App Versioning for Android 1.1</h3>
@@ -562,8 +545,7 @@ testing.</p>
Plugin for Eclipse is <strong>0.8.0</strong>. If you are using a
previous version of ADT, you should update to the latest version for use
with this SDK. For information about how to update your ADT plugin, see
-<a href="{@docRoot}sdk/1.1_r1/upgrading.html#update-plugin">Upgrading
-the SDK</a>.</p>
+<a href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>.</p>
<h3>Installation and Upgrade Notes</h3>
@@ -572,10 +554,6 @@ changes to your application are needed. You may want to wipe application
user data (emulator option <code>-wipe-data</code>) when running your
application on the Android 1.1 emulator for the first time.</p>
-<p>If you're installing the Android SDK for the first time, please see
-the instructions in <a
-href="{@docRoot}sdk/1.5_r1/installing.html">Installing the SDK</a>.
-
<h3>Other Notes</h3>
<p><strong>MapView API Key</strong></p>
@@ -673,13 +651,7 @@ added.</p>
Development Tools (ADT) Plugin for Eclipse is <strong>0.8.0</strong>. If you are
using a previous version of ADT, you should update to the latest version for use
with this SDK. For information about how to update your ADT plugin, see <a
-href="{@docRoot}sdk/1.0_r2/upgrading.html">Upgrading the SDK</a>.</p>
-
-<h3>Installation and Upgrade Notes</h3>
-
-<p>If you're installing the Android SDK for the first time, please see the
-instructions in <a href="{@docRoot}sdk/1.0_r2/installing.html">Installing the
-SDK</a>.
+href="{@docRoot}sdk/eclipse-adt.html">Installing and Updating ADT</a>.</p>
<h3>Other Notes</h3>
@@ -765,8 +737,6 @@ to this release.</p>
<p>If you've been developing an application using a previous SDK version and you want the application to run on Android-powered mobile devices, you must port the application to the Android 1.0 SDK. Please see <a href="{@docRoot}sdk/1.0_r1/upgrading.html">Upgrading the SDK</a> for detailed instructions on how to make the transition to this release. Be sure to wipe application user data (emulator option <code>-wipe-data</code>) when running your application on the Android 1.0 SDK emulator.</p>
-<p>If you're installing the Android SDK for the first time, please see the instructions in <a href="{@docRoot}sdk/1.0_r1/installing.html">Installing the SDK</a>.
-
<h3>Other Notes</h3>
<p><strong>MapView API Key</strong></p>
diff --git a/docs/html/sdk/older_releases.jd b/docs/html/sdk/older_releases.jd
index 0ecee3c14ef7..c3ba49566e70 100644
--- a/docs/html/sdk/older_releases.jd
+++ b/docs/html/sdk/older_releases.jd
@@ -1,51 +1,369 @@
-page.title=Other SDK Releases
+page.title=SDK Archives
@jd:body
-<p>This page provides a full list of older, obsolete SDK releases, including
-non-current versions of active releases and "early look" versions that were
-released before Android 1.0. The list is provided for informational purposes
-only.</p>
+<p>This page provides a full list of archived and obsolete SDK releases,
+including non-current versions of active releases and "early look" versions that
+were released before Android 1.0. <strong>These are provided for
+informational and archival purposes only</strong>.</p>
-<p>If you are just getting started developing on Android, make sure that you
-are using the <a href="{@docRoot}sdk/index.html">most current SDK available</a>,
-to ensure that your applications will be compatible with the latest
-Android-powered devices.</p>
+<div class="special">
+<p>If you are just starting to develop applications for Android, please
+download the current <a href="{@docRoot}sdk/index.html">Android
+SDK</a>. With the current Android SDK, you can add any current and previous
+version of the Android platform as a component and use it for
+development and testing.</p>
+<p>If you already have an Android SDK for platform version 1.6 or newer, then
+you do not need to install a new SDK&mdash;especially not one from this page.
+You should install older platforms as components of your existing SDK.
+See <a href="adding-components.html">Adding SDK Components</a>.</p>
+</div>
-<h2>Obsolete Releases</h2>
-<p>The table below lists Android SDK releases that have been superceded by an
-active release and that are now obsolete. If you are using one of these
-releases, please upgrade to the <a href="{@docRoot}sdk/index.html">current SDK
-release</a>.</p>
+<h2>Archived SDKs</h2>
- <table>
+<p>The tables below provides Android SDKs that are current in terms of their
+platform version, but do not provide the latest Android development
+environment and tools. Instead of downloading one of these, as a separate
+SDK for each version of the platform, you should instead use the new
+version-neutral Android SDK to download each version of
+the Android platfrom as an individual component.</p>
+
+<p>Please download the current <a
+href="http://developer.android.com/sdk/index.html">Android SDK</a>.</p>
+
+
+<h3>Release 1.6 r1</h3>
+ <p><em>September 2009 - <a href="RELEASENOTES.html#1.6_r1">Release
+Notes</a></em></p>
+
+ <table class="download">
+ <tr>
+ <th>Platform</th>
+ <th>Package</th>
+ <th>Size</th>
+ <th>MD5 Checksum</th>
+ </tr>
<tr>
- <th>Release</td>
- <th>Platform(s)</th>
- <th>Date</td>
- <th>Description</td>
- </tr>
- <tr>
- <td><a href="{@docRoot}sdk/1.5_r1/index.html">Android 1.5 SDK, Release 2</a></td>
- <td style="text-align:center;">Android 1.5<br>Android 1.1</td>
- <td><em>May 2009</em></td>
- <td>Replaced by Android 1.5 SDK, Release 3. <em><a href="RELEASENOTES.html#1.5_r2">Release notes</a></em></td>
- </tr>
- <tr>
- <td><a href="{@docRoot}sdk/1.5_r1/index.html">Android 1.5 SDK, Release 1</a></td>
- <td style="text-align:center;">Android 1.5<br>Android 1.1</td>
- <td><em>April 2009</em></td>
- <td>Replaced by Android 1.5 SDK, Release 2. <em><a href="RELEASENOTES.html#1.5_r1">Release notes</a></em></td>
- </tr>
- <tr class="alt">
- <td><a href="{@docRoot}sdk/1.0_r1/index.html">Android 1.0 SDK, Release 1</a></td>
- <td style="text-align:center;">Android 1.0</td>
- <td><em>September 2008</em></td>
- <td>Replaced by Android 1.0 SDK, Release 2. <em><a href="RELEASENOTES.html#1.0_r1">Release notes</a></em></td>
- </tr>
- </table>
+ <td>Windows</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-windows-1.6_r1.zip">android-sdk-
+windows-1 .6_r1.zip</a>
+ </td>
+ <td>260529085 bytes</td>
+ <td>2bcbacbc7af0363058ca1cac6abad848</td>
+ </tr>
+ <tr class="alt-color">
+ <td>Mac OS X (intel)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-mac_x86-1.6_r1.zip">android-sdk-
+mac_x86-1 .6_r1.zip</a>
+ </td>
+ <td>247412515 bytes</td>
+ <td>eb13cc79602d492e89103efcf48ac1f6</td>
+ </tr>
+ <tr>
+ <td>Linux (i386)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-linux_x86-1.6_r1.tgz">android-
+sdk- linux_x86-1.6_r1.tgz</a>
+ </td>
+ <td>238224860 bytes</td>
+ <td>b4bf0e610ff6db2fb6fb09c49cba1e79</td>
+ </tr>
+
+ </table>
+
+
+<h3>Release 1.5 r3</h3>
+ <p><em>July 2009 - <a href="RELEASENOTES.html#1.5_r3">Release
+Notes</a></em></p>
+
+ <table class="download">
+ <tr>
+ <th>Platform</th>
+ <th>Package</th>
+ <th>Size</th>
+ <th>MD5 Checksum</th>
+ </tr>
+ <tr>
+ <td>Windows</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-windows-1.5_r3.zip">android-sdk-
+windows-1 .5_r3.zip</a>
+ </td>
+ <td>191477853 bytes</td>
+ <td>1725fd6963ce69102ba7192568dfc711</td>
+ </tr>
+ <tr class="alt-color">
+ <td>Mac OS X (intel)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r3.zip">android-sdk-
+mac_x86-1 .5_r3.zip</a>
+ </td>
+ <td>183024673 bytes</td>
+ <td>b1bafdaefdcec89a14b604b504e7daec</td>
+ </tr>
+ <tr>
+ <td>Linux (i386)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r3.zip">android-
+sdk- linux_x86-1.5_r3.zip</a>
+ </td>
+ <td>178117561 bytes</td>
+ <td>350d0211678ced38da926b8c9ffa4fac</td>
+ </tr>
+
+ </table>
+
+
+<h3>Release 1.1 r1</h3>
+ <p><em>February 2009 - <a href="RELEASENOTES.html#1.1_r1">Release
+Notes</a></em></p>
+
+ <table class="download">
+ <tr>
+ <th>Platform</th>
+ <th>Package</th>
+ <th>Size</th>
+ <th>MD5 Checksum</th>
+ </tr>
+ <tr>
+ <td>Windows</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-windows-1.1_r1.zip">android-sdk-
+windows-1
+.1_r1.zip</a>
+ </td>
+ <td>86038515 bytes</td>
+ <td>8c4b9080b430025370689e03d20842f3</td>
+ </tr>
+ <tr class="alt-color">
+ <td>Mac OS X (intel)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-mac_x86-1.1_r1.zip">android-sdk-
+mac_x86-1
+.1_r1.zip</a>
+ </td>
+ <td>79046151 bytes</td>
+ <td>becf0f1763d61eedce15d2a903d6c1dd</td>
+ </tr>
+ <tr>
+ <td>Linux (i386)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-linux_x86-1.1_r1.zip">android-
+sdk-
+linux_x86-1.1_r1.zip</a>
+ </td>
+ <td>79345522 bytes</td>
+ <td>ebcb16b0cd4aef198b4dd9a1418efbf1</td>
+ </tr>
+
+ </table>
+
+
+<h3>Release 1.0 r2</h3>
+ <p><em>November 2008 - <a href="RELEASENOTES.html#1.0_r2">Release
+Notes</a></em></p>
+
+ <table class="download">
+ <tr>
+ <th>Platform</th>
+ <th>Package</th>
+ <th>Size</th>
+ <th>MD5 Checksum</th>
+ </tr>
+ <tr>
+ <td>Windows</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-windows-1.0_r2.zip">android-sdk-
+windows-1
+.0_r2.zip</a>
+ </td>
+ <td>98360564 bytes</td>
+ <td>a5e1af8ac145946b4a9627516ad4a711</td>
+ </tr>
+ <tr class="alt-color">
+ <td>Mac OS X (intel)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-mac_x86-1.0_r2.zip">android-sdk-
+mac_x86-1
+.0_r2.zip</a>
+ </td>
+ <td>93771410 bytes</td>
+ <td>87b99d5e9f59b78363a63200c11498e8</td>
+ </tr>
+ <tr>
+ <td>Linux (i386)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-linux_x86-1.0_r2.zip">android-
+sdk-
+linux_x86-1.0_r2.zip</a>
+ </td>
+ <td>94186463 bytes</td>
+ <td>a1f3b6d854596f850f5008856d0f380e</td>
+ </tr>
+
+ </table>
+
+
+
+
+<h2>Obsolete SDK Releases</h2>
+
+<p>These tables provide Android SDK releases that have been superceded by
+an active release (shown above) and that are now obsolete.</p>
+
+
+<h3>Release 1.5 r2</h3>
+ <p><em>May 2009 - <a href="RELEASENOTES.html#1.5_r2">Release
+Notes</a></em></p>
+
+ <table class="download">
+ <tr>
+ <th>Platform</th>
+ <th>Package</th>
+ <th>Size</th>
+ <th>MD5 Checksum</th>
+ </tr>
+ <tr>
+ <td>Windows</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-windows-1.5_r2.zip">android-sdk-
+windows-1 .5_r2.zip</a>
+ </td>
+ <td>178346828 bytes</td>
+ <td>ba54ac6bda45921d442b74b6de6ff6a9</td>
+ </tr>
+ <tr class="alt-color">
+ <td>Mac OS X (intel)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r2.zip">android-sdk-
+mac_x86-1 .5_r2.zip</a>
+ </td>
+ <td>169945128 bytes</td>
+ <td>f4e06a5194410243f213d0177713d6c9</td>
+ </tr>
+ <tr>
+ <td>Linux (i386)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r2.zip">android-
+sdk- linux_x86-1.5_r2.zip</a>
+ </td>
+ <td>165035130 bytes</td>
+ <td>1d3c3d099e95a31c43a7b3e6ae307ed3</td>
+ </tr>
+
+ </table>
+
+
+<h3>Release 1.5 r1</h3>
+ <p><em>April 2009 - <a href="RELEASENOTES.html#1.5_r1">Release
+Notes</a></em></p>
+
+ <table class="download">
+ <tr>
+ <th>Platform</th>
+ <th>Package</th>
+ <th>Size</th>
+ <th>MD5 Checksum</th>
+ </tr>
+ <tr>
+ <td>Windows</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-windows-1.5_r1.zip">android-sdk-
+windows-1 .5_r1.zip</a>
+ </td>
+ <td>176263368 bytes</td>
+ <td>42be980eb2d3efaced01ea6c32c0045f</td>
+ </tr>
+ <tr class="alt-color">
+ <td>Mac OS X (intel)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-mac_x86-1.5_r1.zip">android-sdk-
+mac_x86-1 .5_r1.zip</a>
+ </td>
+ <td>167848675 bytes</td>
+ <td>5b2a8d9f096032db4a75bfa0d689a51b</td>
+ </tr>
+ <tr>
+ <td>Linux (i386)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-linux_x86-1.5_r1.zip">android-
+sdk- linux_x86-1.5_r1.zip</a>
+ </td>
+ <td>162938845 bytes</td>
+ <td>2addfd315da0ad8b5bde6b09d5ff3b06</td>
+ </tr>
+
+ </table>
+
+
+<h3>Release 1.0 r1</h3>
+ <p><em>September 23, 2008 - <a href="RELEASENOTES.html#1.0_r1">Release
+Notes</a></em></p>
+
+ <table class="download">
+ <tr>
+ <th>Platform</th>
+ <th>Package</th>
+ <th>Size</th>
+ <th>MD5 Checksum</th>
+ </tr>
+ <tr>
+ <td>Windows</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-windows-1.0_r1.zip">android-sdk-
+windows-1 .0_r1.zip</a>
+ </td>
+ <td>89.7 MB bytes</td>
+ <td>d69f4ee93d4010f726c04302662fd999</td>
+ </tr>
+ <tr class="alt-color">
+ <td>Mac OS X (intel)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-mac_x86-1.0_r1.zip">android-sdk-
+mac_x86-1 .0_r1.zip</a>
+ </td>
+ <td>87.5 MB bytes</td>
+ <td>564876ada22872e50c2866806de9fc5c</td>
+ </tr>
+ <tr>
+ <td>Linux (i386)</td>
+ <td>
+ <a
+href="/sdk/download.html?v=archives/android-sdk-linux_x86-1.0_r1.zip">android-
+sdk- linux_x86-1.0_r1.zip</a>
+ </td>
+ <td>87.8 MB bytes</td>
+ <td>2660b4029039b7d714e59827e9a9a11d</td>
+ </tr>
+
+ </table>
+
+
+
- <h2>Non-Compatible Releases</h2>
+<h2>Non-Compatible SDK Releases</h2>
<!-- <div class="special"> -->
<p>The SDKs listed below are "early-look" versions that were released in
@@ -63,7 +381,7 @@ the previous version. You can find the migration information in the
documentation included in each SDK package.</p>
<!-- </div> -->
-<h4>Android SDK m5-rc15</h4>
+<h4>Version 0.9 Beta</h4>
<p><em>August 18, 2008 - <a href="OLD_RELEASENOTES.html#0.9_beta">Release Notes</a></em></p>
<table>
<tr>
@@ -74,21 +392,27 @@ documentation included in each SDK package.</p>
<tr>
<td>Windows</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk-windows-0.9_beta.zip">android-sdk-windows-0.9_beta.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk-windows-0.9_beta.zip">
+android-sdk-windows-0.9_beta.zip</a></td>
<td>93,126,573 bytes</td>
<td>305031ad8335d1b6040bdd5a65349d6d</td>
</tr>
<tr class="alt">
<td>Mac OS X (intel)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk-mac_x86-0.9_beta.zip">android-sdk-mac_x86-0.9_beta.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk-mac_x86-0.9_beta.zip">
+android-sdk-mac_x86-0.9_beta.zip</a></td>
<td>91,374,464 bytes</td>
<td>9a6969159091cede46302e11049fe3ca</td>
</tr>
<tr>
<td>Linux (i386)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk-linux_x86-0.9_beta.zip">android-sdk-linux_x86-0.9_beta.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk-linux_x86-0.9_beta.zip"
+>android-sdk-linux_x86-0.9_beta.zip</a></td>
<td>91,821,068 bytes</td>
<td>077e5ef549dd9c5be54bd88e6a8e196c</td>
</tr>
@@ -105,21 +429,27 @@ documentation included in each SDK package.</p>
<tr>
<td>Windows</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk_m5-rc15_windows.zip">android-sdk_m5-rc15_windows.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc15_windows.zip">
+android-sdk_m5-rc15_windows.zip</a></td>
<td>79 MB</td>
<td>ecce40bc50201886d95ba2690cdbc5ce</td>
</tr>
<tr class="alt">
<td>Mac OS X (intel)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk_m5-rc15_mac-x86.zip">android-sdk_m5-rc15_mac-x86.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc15_mac-x86.zip">
+android-sdk_m5-rc15_mac-x86.zip</a></td>
<td>76 MB</td>
<td>45a6385bbc1b2cb295409cfc81fb04b4</td>
</tr>
<tr>
<td>Linux (i386)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk_m5-rc15_linux-x86.zip">android-sdk_m5-rc15_linux-x86.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc15_linux-x86.zip">
+android-sdk_m5-rc15_linux-x86.zip</a></td>
<td>76 MB</td>
<td>e913f785afecdeed34c30639fd8c5862</td>
</tr>
@@ -136,21 +466,27 @@ documentation included in each SDK package.</p>
<tr>
<td>Windows</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk_m5-rc14_windows.zip">android-sdk_m5-rc14_windows.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc14_windows.zip">
+android-sdk_m5-rc14_windows.zip</a></td>
<td>79 MB</td>
<td>ecc75c1e69588350634ca25867ce05a0</td>
</tr>
<tr class="alt">
<td>Mac OS X (intel)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk_m5-rc14_mac-x86.zip">android-sdk_m5-rc14_mac-x86.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc14_mac-x86.zip">
+android-sdk_m5-rc14_mac-x86.zip</a></td>
<td>76 MB</td>
<td>844c80d0adb1a326f5a9fff262c61efc</td>
</tr>
<tr>
<td>Linux (i386)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android-sdk_m5-rc14_linux-x86.zip">android-sdk_m5-rc14_linux-x86.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android-sdk_m5-rc14_linux-x86.zip">
+android-sdk_m5-rc14_linux-x86.zip</a></td>
<td>76 MB</td>
<td>f8b863c8a880afe9bb84124f5976aab1</td>
</tr>
@@ -170,21 +506,27 @@ documentation included in each SDK package.</p>
<tr>
<td>Windows</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_windows_m3-rc37a.zip">android_sdk_windows_m3-rc37a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_windows_m3-rc37a.zip">
+android_sdk_windows_m3-rc37a.zip</a></td>
<td>58 MB</td>
<td>5db5aea20a2c2f010baefc4b1091a575</td>
</tr>
<tr class="alt">
<td>Mac OS X (intel)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_darwin_m3-rc37a.zip">android_sdk_darwin_m3-rc37a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_darwin_m3-rc37a.zip">
+android_sdk_darwin_m3-rc37a.zip</a></td>
<td>54 MB</td>
<td>0b22e73fbd07b4af4009387afce3a37f</td>
</tr>
<tr>
<td>Linux (i386)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_linux_m3-rc37a.zip">android_sdk_linux_m3-rc37a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_linux_m3-rc37a.zip">
+android_sdk_linux_m3-rc37a.zip</a></td>
<td>54 MB</td>
<td>41285beecc4f9926e6ecf5f12610b356</td>
</tr>
@@ -204,21 +546,27 @@ documentation included in each SDK package.</p>
<tr>
<td>Windows</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_windows_m3-rc22a.zip">android_sdk_windows_m3-rc22a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_windows_m3-rc22a.zip">
+android_sdk_windows_m3-rc22a.zip</a></td>
<td>59 MB</td>
<td>aa3dee05a9872752a3bc4efd0f93e98b</td>
</tr>
<tr class="alt">
<td>Mac OS X (intel)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_darwin_m3-rc22a.zip">android_sdk_darwin_m3-rc22a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_darwin_m3-rc22a.zip">
+android_sdk_darwin_m3-rc22a.zip</a></td>
<td>55 MB</td>
<td>0547f45614ad94c3af22c3c0aa6f709f</td>
</tr>
<tr>
<td>Linux (i386)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_linux_m3-rc22a.zip">android_sdk_linux_m3-rc22a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_linux_m3-rc22a.zip">
+android_sdk_linux_m3-rc22a.zip</a></td>
<td>55 MB</td>
<td>84b3455de5cdfd841a172c13d24c382e</td>
</tr>
@@ -238,21 +586,27 @@ documentation included in each SDK package.</p>
<tr>
<td>Windows</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_windows_m3-rc20a.zip">android_sdk_windows_m3-rc20a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_windows_m3-rc20a.zip">
+android_sdk_windows_m3-rc20a.zip</a></td>
<td>59 MB</td>
<td>a404b875708df7339ba77bdf2e08dc06</td>
</tr>
<tr class="alt">
<td>Mac OS X (intel)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_darwin_m3-rc20a.zip">android_sdk_darwin_m3-rc20a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_darwin_m3-rc20a.zip">
+android_sdk_darwin_m3-rc20a.zip</a></td>
<td>55 MB</td>
<td>8fc29aeaa45eda84bfac854ebd02a6da</td>
</tr>
<tr>
<td>Linux (i386)</td>
<td>
-<a href="{@docRoot}sdk/download.html?v=android_sdk_linux_m3-rc20a.zip">android_sdk_linux_m3-rc20a.zip</a></td>
+<a
+href="{@docRoot}sdk/download.html?v=archives/android_sdk_linux_m3-rc20a.zip">
+android_sdk_linux_m3-rc20a.zip</a></td>
<td>55 MB</td>
<td>9196759df9b69cd89a220b156f133364</td>
</tr>
diff --git a/docs/html/sdk/requirements.jd b/docs/html/sdk/requirements.jd
index 97db36d0818f..c1f74ad62a09 100644
--- a/docs/html/sdk/requirements.jd
+++ b/docs/html/sdk/requirements.jd
@@ -12,7 +12,8 @@ Android applications using the Android Development Tools, revision 3. </p>
<ul>
<li>64-bit distributions must be capable of running 32-bit applications.
For information about how to add support for 32-bit applications, see
- the <a href="installing.html#InstallationNotes">Installation Notes</a>.</li>
+ the <a href="installing.html#troublehooting">Ubuntu Linux
+installation notes</a>.</li>
</ul>
</li>
</ul>
@@ -23,15 +24,19 @@ Android applications using the Android Development Tools, revision 3. </p>
<ul>
<li><a href="http://www.eclipse.org/downloads/">Eclipse</a> 3.4 (Ganymede) or 3.5 (Galileo)
<ul>
- <li>Note: Eclipse 3.3 has not been fully tested with ADT 0.9.3 and support can no longer be guaranteed. We suggest you upgrade to
- Eclipse 3.4 or 3.5.</li>
- <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers</li>
- <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin (included in most Eclipse IDE packages) </li>
- <li>Eclipse Classic IDE package is not supported.</li>
+ <li>Note: Eclipse 3.3 has not been tested with the latest version of
+ADT and support can no longer be guaranteed. We suggest you upgrade to Eclipse
+3.4 or 3.5.</li>
+ <li>Recommended Eclipse IDE packages: Eclipse IDE for Java EE
+Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in
+Developers, or Eclipse Classic (3.5.1+)</li>
+ <li>Eclipse <a href="http://www.eclipse.org/jdt">JDT</a> plugin
+(included in most Eclipse IDE packages) </li>
</ul>
</li>
<li><a href="http://java.sun.com/javase/downloads/index.jsp">JDK 5 or JDK 6</a> (JRE alone is not sufficient)</li>
- <li><a href="installing.html#installingplugin">Android Development Tools plugin</a> (optional)</li>
+ <li><a href="eclipse-adt.html">Android Development Tools
+plugin</a> (optional)</li>
<li><strong>Not</strong> compatible with Gnu Compiler for Java (gcj)</li>
</ul>
</li>
diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs
index 4aed0ca93762..8c6e2c9c25da 100644
--- a/docs/html/sdk/sdk_toc.cs
+++ b/docs/html/sdk/sdk_toc.cs
@@ -140,7 +140,11 @@ Windows, r2</a>
<ul>
<li><a href="<?cs var:toroot ?>sdk/requirements.html">SDK System Requirements</a></li>
<li><a href="<?cs var:toroot ?>sdk/terms.html">SDK Terms and Conditions</a></li>
- <li><a href="<?cs var:toroot ?>sdk/RELEASENOTES.html">SDK Release Notes</a></li>
+ <li><a href="<?cs var:toroot ?>sdk/RELEASENOTES.html">SDK Release
+ Notes</a></li>
+ <li><a href="<?cs var:toroot ?>sdk/older_releases.html">SDK
+ Archives</a></li>
+
</ul>
</li>
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index ea118829fbfb..a5bceb6d2d88 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -67,6 +67,7 @@ public class RenderScript {
native int nContextCreate(int dev, int ver, boolean useDepth);
native void nContextDestroy(int con);
native void nContextSetSurface(int w, int h, Surface sur);
+ native void nContextSetPriority(int p);
native void nContextBindRootScript(int script);
native void nContextBindSampler(int sampler, int slot);
@@ -218,6 +219,7 @@ public class RenderScript {
Element mElement_XY_F32;
Element mElement_XYZ_F32;
+
///////////////////////////////////////////////////////////////////////////////////
//
@@ -229,6 +231,20 @@ public class RenderScript {
}
public RSMessage mMessageCallback = null;
+ public enum Priority {
+ LOW (5), //ANDROID_PRIORITY_BACKGROUND + 5
+ NORMAL (-4); //ANDROID_PRIORITY_DISPLAY
+
+ int mID;
+ Priority(int id) {
+ mID = id;
+ }
+ }
+
+ public void contextSetPriority(Priority p) {
+ nContextSetPriority(p.mID);
+ }
+
private static class MessageThread extends Thread {
RenderScript mRS;
boolean mRun = true;
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 709cb977dd3a..d311c33cfbf6 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -158,6 +158,16 @@ nContextCreate(JNIEnv *_env, jobject _this, jint dev, jint ver, jboolean useDept
}
static void
+nContextSetPriority(JNIEnv *_env, jobject _this, jint p)
+{
+ RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
+ LOG_API("ContextSetPriority, con(%p), priority(%i)", con, p);
+ rsContextSetPriority(con, p);
+}
+
+
+
+static void
nContextSetSurface(JNIEnv *_env, jobject _this, jint width, jint height, jobject wnd)
{
RsContext con = (RsContext)(_env->GetIntField(_this, gContextId));
@@ -1333,6 +1343,7 @@ static JNINativeMethod methods[] = {
{"nDeviceDestroy", "(I)V", (void*)nDeviceDestroy },
{"nDeviceSetConfig", "(III)V", (void*)nDeviceSetConfig },
{"nContextCreate", "(IIZ)I", (void*)nContextCreate },
+{"nContextSetPriority", "(I)V", (void*)nContextSetPriority },
{"nContextSetSurface", "(IILandroid/view/Surface;)V", (void*)nContextSetSurface },
{"nContextDestroy", "(I)V", (void*)nContextDestroy },
{"nContextPause", "()V", (void*)nContextPause },
diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec
index da25a2722df5..be988e748374 100644
--- a/libs/rs/rs.spec
+++ b/libs/rs/rs.spec
@@ -43,7 +43,7 @@ ContextSetSurface {
}
ContextSetPriority {
- param uint32_t priority
+ param int32_t priority
}
AssignName {
diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp
index c835dda76011..deb9592d4a2b 100644
--- a/libs/rs/rsContext.cpp
+++ b/libs/rs/rsContext.cpp
@@ -20,11 +20,16 @@
#include <ui/FramebufferNativeWindow.h>
#include <ui/EGLUtils.h>
+#include <sys/types.h>
+#include <sys/resource.h>
+
#include <cutils/properties.h>
#include <GLES/gl.h>
#include <GLES/glext.h>
+#include <cutils/sched_policy.h>
+
using namespace android;
using namespace android::renderscript;
@@ -234,6 +239,9 @@ static bool getProp(const char *str)
void * Context::threadProc(void *vrsc)
{
Context *rsc = static_cast<Context *>(vrsc);
+ rsc->mNativeThreadId = gettid();
+
+ setpriority(PRIO_PROCESS, rsc->mNativeThreadId, ANDROID_PRIORITY_DISPLAY);
rsc->props.mLogTimes = getProp("debug.rs.profile");
rsc->props.mLogScripts = getProp("debug.rs.script");
@@ -316,6 +324,25 @@ void * Context::threadProc(void *vrsc)
return NULL;
}
+void Context::setPriority(int32_t p)
+{
+ // Note: If we put this in the proper "background" policy
+ // the wallpapers can become completly unresponsive at times.
+ // This is probably not what we want for something the user is actively
+ // looking at.
+#if 0
+ SchedPolicy pol = SP_FOREGROUND;
+ if (p > 0) {
+ pol = SP_BACKGROUND;
+ }
+ if (!set_sched_policy(mNativeThreadId, pol)) {
+ // success; reset the priority as well
+ }
+#else
+ setpriority(PRIO_PROCESS, mNativeThreadId, p);
+#endif
+}
+
Context::Context(Device *dev, bool useDepth)
{
pthread_mutex_lock(&gInitMutex);
@@ -351,10 +378,6 @@ Context::Context(Device *dev, bool useDepth)
return;
}
- sched_param sparam;
- sparam.sched_priority = ANDROID_PRIORITY_DISPLAY;
- pthread_attr_setschedparam(&threadAttr, &sparam);
-
mWndSurface = NULL;
objDestroyOOBInit();
@@ -791,8 +814,9 @@ void rsi_ContextSetSurface(Context *rsc, uint32_t w, uint32_t h, void *sur)
rsc->setSurface(w, h, (Surface *)sur);
}
-void rsi_ContextSetPriority(Context *rsc, uint32_t p)
+void rsi_ContextSetPriority(Context *rsc, int32_t p)
{
+ rsc->setPriority(p);
}
}
diff --git a/libs/rs/rsContext.h b/libs/rs/rsContext.h
index f3803a5ec23b..fb878eb062f6 100644
--- a/libs/rs/rsContext.h
+++ b/libs/rs/rsContext.h
@@ -95,6 +95,7 @@ public:
void pause();
void resume();
void setSurface(uint32_t w, uint32_t h, Surface *sur);
+ void setPriority(int32_t p);
void assignName(ObjectBase *obj, const char *name, uint32_t len);
void removeName(ObjectBase *obj);
@@ -198,6 +199,7 @@ protected:
bool mPaused;
pthread_t mThreadId;
+ pid_t mNativeThreadId;
ObjectBaseRef<Script> mRootScript;
ObjectBaseRef<ProgramFragment> mFragment;
diff --git a/libs/surfaceflinger/Android.mk b/libs/surfaceflinger/Android.mk
index eb51c22bcb20..b3fed58a4f84 100644
--- a/libs/surfaceflinger/Android.mk
+++ b/libs/surfaceflinger/Android.mk
@@ -22,9 +22,6 @@ LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES
ifeq ($(TARGET_BOARD_PLATFORM), msm7k)
LOCAL_CFLAGS += -DDIM_WITH_TEXTURE
endif
-ifeq ($(TARGET_BOARD_PLATFORM), qsd8k)
- LOCAL_CFLAGS += -DDIM_WITH_TEXTURE
-endif
# need "-lrt" on Linux simulator to pick up clock_gettime
ifeq ($(TARGET_SIMULATOR),true)
diff --git a/libs/surfaceflinger/LayerBlur.cpp b/libs/surfaceflinger/LayerBlur.cpp
index 5fd7904be6cf..5d4a38b8abe9 100644
--- a/libs/surfaceflinger/LayerBlur.cpp
+++ b/libs/surfaceflinger/LayerBlur.cpp
@@ -169,6 +169,7 @@ void LayerBlur::onDraw(const Region& clip) const
// This reads the frame-buffer, so a h/w GL would have to
// finish() its rendering first. we don't want to do that
// too often. Read data is 4-bytes aligned.
+ glFinish();
glReadPixels(X, Y, w, h, mReadFormat, mReadType, pixels);
// blur that texture.
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index afdc8f77c267..da25f9764b8c 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -640,10 +640,13 @@ public class MediaScanner
map.put(Video.Media.ARTIST, (mArtist != null && mArtist.length() > 0 ? mArtist : MediaFile.UNKNOWN_STRING));
map.put(Video.Media.ALBUM, (mAlbum != null && mAlbum.length() > 0 ? mAlbum : MediaFile.UNKNOWN_STRING));
map.put(Video.Media.DURATION, mDuration);
+ map.put(Video.Media.DATE_TAKEN, mLastModified);
// FIXME - add RESOLUTION
} else if (MediaFile.isImageFileType(mFileType)) {
// FIXME - add DESCRIPTION
- // map.put(field, value);
+ // DATE_TAKEN will be overridden later if this is a JPEG image whose EXIF data
+ // contains date time information.
+ map.put(Images.Media.DATE_TAKEN, mLastModified);
} else if (MediaFile.isAudioFileType(mFileType)) {
map.put(Audio.Media.ARTIST, (mArtist != null && mArtist.length() > 0 ? mArtist : MediaFile.UNKNOWN_STRING));
map.put(Audio.Media.ALBUM, (mAlbum != null && mAlbum.length() > 0 ? mAlbum : MediaFile.UNKNOWN_STRING));
diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java
index 9ca57bae7a1f..e60859bdd85d 100644
--- a/opengl/java/android/opengl/GLSurfaceView.java
+++ b/opengl/java/android/opengl/GLSurfaceView.java
@@ -145,6 +145,10 @@ import android.view.SurfaceView;
*/
public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
private final static boolean LOG_THREADS = false;
+ private final static boolean LOG_SURFACE = false;
+ private final static boolean LOG_RENDERER = false;
+ // Work-around for bug 2263168
+ private final static boolean DRAW_TWICE_AFTER_SIZE_CHANGED = true;
/**
* The renderer only renders
* when the surface is created, or when {@link #requestRender} is called.
@@ -879,7 +883,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
gl = mGLWrapper.wrap(gl);
}
- if ((mDebugFlags & (DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS))!= 0) {
+ if ((mDebugFlags & (DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS)) != 0) {
int configFlags = 0;
Writer log = null;
if ((mDebugFlags & DEBUG_CHECK_GL_ERROR) != 0) {
@@ -949,7 +953,6 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
class GLThread extends Thread {
GLThread(Renderer renderer) {
super();
- mDone = false;
mWidth = 0;
mHeight = 0;
mRequestRender = true;
@@ -982,7 +985,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
mHaveEgl = false;
mEglHelper.destroySurface();
mEglHelper.finish();
- sGLThreadManager.releaseEglSurface(this);
+ sGLThreadManager.releaseEglSurfaceLocked(this);
}
}
@@ -990,81 +993,89 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
mEglHelper = new EglHelper();
try {
GL10 gl = null;
- boolean tellRendererSurfaceCreated = true;
- boolean tellRendererSurfaceChanged = true;
-
- /*
- * This is our main activity thread's loop, we go until
- * asked to quit.
- */
- while (!isDone()) {
- /*
- * Update the asynchronous state (window size)
- */
- int w = 0;
- int h = 0;
- boolean changed = false;
- boolean needStart = false;
- boolean eventsWaiting = false;
+ boolean createEglSurface = false;
+ boolean sizeChanged = false;
+ int w = 0;
+ int h = 0;
+ Runnable event = null;
+ while (true) {
synchronized (sGLThreadManager) {
while (true) {
- // Manage acquiring and releasing the SurfaceView
- // surface and the EGL surface.
- if (mPaused) {
+ if (mShouldExit) {
+ return;
+ }
+
+ if (! mEventQueue.isEmpty()) {
+ event = mEventQueue.remove(0);
+ break;
+ }
+
+ // Do we need to release the EGL surface?
+ if (mHaveEgl && mPaused) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "releasing EGL surface because paused tid=" + getId());
+ }
stopEglLocked();
}
- if (!mHasSurface) {
- if (!mWaitingForSurface) {
- stopEglLocked();
- mWaitingForSurface = true;
- sGLThreadManager.notifyAll();
+
+ // Have we lost the surface view surface?
+ if ((! mHasSurface) && (! mWaitingForSurface)) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "noticed surfaceView surface lost tid=" + getId());
}
- } else {
- if (!mHaveEgl) {
- if (sGLThreadManager.tryAcquireEglSurface(this)) {
- mHaveEgl = true;
- mEglHelper.start();
- mRequestRender = true;
- needStart = true;
- }
+ if (mHaveEgl) {
+ stopEglLocked();
}
+ mWaitingForSurface = true;
+ sGLThreadManager.notifyAll();
}
- // Check if we need to wait. If not, update any state
- // that needs to be updated, copy any state that
- // needs to be copied, and use "break" to exit the
- // wait loop.
-
- if (mDone) {
- return;
+ // Have we acquired the surface view surface?
+ if (mHasSurface && mWaitingForSurface) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "noticed surfaceView surface acquired tid=" + getId());
+ }
+ mWaitingForSurface = false;
+ sGLThreadManager.notifyAll();
}
- if (mEventsWaiting) {
- eventsWaiting = true;
- mEventsWaiting = false;
- break;
- }
+ // Ready to draw?
+ if ((!mPaused) && mHasSurface
+ && (mWidth > 0) && (mHeight > 0)
+ && (mRequestRender || (mRenderMode == RENDERMODE_CONTINUOUSLY))) {
+
+ // If we don't have an egl surface, try to acquire one.
+ if ((! mHaveEgl) && sGLThreadManager.tryAcquireEglSurfaceLocked(this)) {
+ mHaveEgl = true;
+ mEglHelper.start();
+ createEglSurface = true;
+ sizeChanged = true;
+ sGLThreadManager.notifyAll();
+ }
- if ( (! mPaused) && mHasSurface && mHaveEgl
- && (mWidth > 0) && (mHeight > 0)
- && (mRequestRender || (mRenderMode == RENDERMODE_CONTINUOUSLY))
- ) {
- changed = mSizeChanged;
- w = mWidth;
- h = mHeight;
- mSizeChanged = false;
- mRequestRender = false;
- if (mHasSurface && mWaitingForSurface) {
- changed = true;
- mWaitingForSurface = false;
+ if (mHaveEgl) {
+ if (mSizeChanged) {
+ sizeChanged = true;
+ w = mWidth;
+ h = mHeight;
+ if (DRAW_TWICE_AFTER_SIZE_CHANGED) {
+ // We keep mRequestRender true so that we draw twice after the size changes.
+ // (Once because of mSizeChanged, the second time because of mRequestRender.)
+ // This forces the updated graphics onto the screen.
+ } else {
+ mRequestRender = false;
+ }
+ mSizeChanged = false;
+ } else {
+ mRequestRender = false;
+ }
sGLThreadManager.notifyAll();
+ break;
}
- break;
}
- // By design, this is the only place where we wait().
-
+ // By design, this is the only place in a GLThread thread where we wait().
if (LOG_THREADS) {
Log.i("GLThread", "waiting tid=" + getId());
}
@@ -1072,48 +1083,39 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
}
} // end of synchronized(sGLThreadManager)
- /*
- * Handle queued events
- */
- if (eventsWaiting) {
- Runnable r;
- while ((r = getEvent()) != null) {
- r.run();
- if (isDone()) {
- return;
- }
- }
- // Go back and see if we need to wait to render.
+ if (event != null) {
+ event.run();
+ event = null;
continue;
}
- if (needStart) {
- tellRendererSurfaceCreated = true;
- changed = true;
- }
- if (changed) {
+ if (createEglSurface) {
gl = (GL10) mEglHelper.createSurface(getHolder());
- tellRendererSurfaceChanged = true;
- }
- if (tellRendererSurfaceCreated) {
+ if (LOG_RENDERER) {
+ Log.w("GLThread", "onSurfaceCreated");
+ }
mRenderer.onSurfaceCreated(gl, mEglHelper.mEglConfig);
- tellRendererSurfaceCreated = false;
+ createEglSurface = false;
}
- if (tellRendererSurfaceChanged) {
+
+ if (sizeChanged) {
+ if (LOG_RENDERER) {
+ Log.w("GLThread", "onSurfaceChanged(" + w + ", " + h + ")");
+ }
mRenderer.onSurfaceChanged(gl, w, h);
- tellRendererSurfaceChanged = false;
+ sizeChanged = false;
}
- if ((w > 0) && (h > 0)) {
- /* draw a frame here */
- mRenderer.onDrawFrame(gl);
-
- /*
- * Once we're done with GL, we need to call swapBuffers()
- * to instruct the system to display the rendered frame
- */
- mEglHelper.swap();
+
+ if (LOG_RENDERER) {
+ Log.w("GLThread", "onDrawFrame");
+ }
+ mRenderer.onDrawFrame(gl);
+ if(!mEglHelper.swap()) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "egl surface lost tid=" + getId());
+ }
}
- }
+ }
} finally {
/*
* clean-up everything...
@@ -1124,21 +1126,13 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
}
}
- private boolean isDone() {
- synchronized (sGLThreadManager) {
- return mDone;
- }
- }
-
public void setRenderMode(int renderMode) {
if ( !((RENDERMODE_WHEN_DIRTY <= renderMode) && (renderMode <= RENDERMODE_CONTINUOUSLY)) ) {
throw new IllegalArgumentException("renderMode");
}
synchronized(sGLThreadManager) {
mRenderMode = renderMode;
- if (renderMode == RENDERMODE_CONTINUOUSLY) {
- sGLThreadManager.notifyAll();
- }
+ sGLThreadManager.notifyAll();
}
}
@@ -1172,7 +1166,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
}
mHasSurface = false;
sGLThreadManager.notifyAll();
- while(!mWaitingForSurface && isAlive() && ! mDone) {
+ while((!mWaitingForSurface) && (!mExited)) {
try {
sGLThreadManager.wait();
} catch (InterruptedException e) {
@@ -1202,6 +1196,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
mWidth = w;
mHeight = h;
mSizeChanged = true;
+ mRequestRender = true;
sGLThreadManager.notifyAll();
}
}
@@ -1210,13 +1205,15 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
// don't call this from GLThread thread or it is a guaranteed
// deadlock!
synchronized(sGLThreadManager) {
- mDone = true;
+ mShouldExit = true;
sGLThreadManager.notifyAll();
- }
- try {
- join();
- } catch (InterruptedException ex) {
- Thread.currentThread().interrupt();
+ while (! mExited) {
+ try {
+ sGLThreadManager.wait();
+ } catch (InterruptedException ex) {
+ Thread.currentThread().interrupt();
+ }
+ }
}
}
@@ -1225,28 +1222,19 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
* @param r the runnable to be run on the GL rendering thread.
*/
public void queueEvent(Runnable r) {
- synchronized(this) {
- mEventQueue.add(r);
- synchronized(sGLThreadManager) {
- mEventsWaiting = true;
- sGLThreadManager.notifyAll();
- }
+ if (r == null) {
+ throw new IllegalArgumentException("r must not be null");
}
- }
-
- private Runnable getEvent() {
- synchronized(this) {
- if (mEventQueue.size() > 0) {
- return mEventQueue.remove(0);
- }
-
+ synchronized(sGLThreadManager) {
+ mEventQueue.add(r);
+ sGLThreadManager.notifyAll();
}
- return null;
}
// Once the thread is started, all accesses to the following member
// variables are protected by the sGLThreadManager monitor
- private boolean mDone;
+ private boolean mShouldExit;
+ private boolean mExited;
private boolean mPaused;
private boolean mHasSurface;
private boolean mWaitingForSurface;
@@ -1255,11 +1243,10 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
private int mHeight;
private int mRenderMode;
private boolean mRequestRender;
- private boolean mEventsWaiting;
+ private ArrayList<Runnable> mEventQueue = new ArrayList<Runnable>();
// End of member variables protected by the sGLThreadManager monitor.
private Renderer mRenderer;
- private ArrayList<Runnable> mEventQueue = new ArrayList<Runnable>();
private EglHelper mEglHelper;
}
@@ -1309,7 +1296,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
if (LOG_THREADS) {
Log.i("GLThread", "exiting tid=" + thread.getId());
}
- thread.mDone = true;
+ thread.mExited = true;
if (mEglOwner == thread) {
mEglOwner = null;
}
@@ -1318,10 +1305,11 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
/*
* Tries once to acquire the right to use an EGL
- * surface. Does not block.
+ * surface. Does not block. Requires that we are already
+ * in the sGLThreadManager monitor when this is called.
* @return true if the right to use an EGL surface was acquired.
*/
- public synchronized boolean tryAcquireEglSurface(GLThread thread) {
+ public boolean tryAcquireEglSurfaceLocked(GLThread thread) {
if (mEglOwner == thread || mEglOwner == null) {
mEglOwner = thread;
notifyAll();
@@ -1329,8 +1317,11 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
}
return false;
}
-
- public synchronized void releaseEglSurface(GLThread thread) {
+ /*
+ * Releases the EGL surface. Requires that we are already in the
+ * sGLThreadManager monitor when this is called.
+ */
+ public void releaseEglSurfaceLocked(GLThread thread) {
if (mEglOwner == thread) {
mEglOwner = null;
}
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index 38269e1a1751..94cf6d4a617f 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -1403,7 +1403,7 @@ class PowerManagerService extends IPowerManager.Stub
boolean oldScreenOn = (mPowerState & SCREEN_ON_BIT) != 0;
boolean newScreenOn = (newState & SCREEN_ON_BIT) != 0;
- if (mPowerState != newState) {
+ if (mSpew) {
Log.d(TAG, "setPowerState: mPowerState=" + mPowerState
+ " newState=" + newState + " noChangeLights=" + noChangeLights);
Log.d(TAG, " oldKeyboardBright=" + ((mPowerState & KEYBOARD_BRIGHT_BIT) != 0)
diff --git a/services/java/com/android/server/WallpaperManagerService.java b/services/java/com/android/server/WallpaperManagerService.java
index a24555a2294d..0933677127b5 100644
--- a/services/java/com/android/server/WallpaperManagerService.java
+++ b/services/java/com/android/server/WallpaperManagerService.java
@@ -125,13 +125,29 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
int mWidth = -1;
int mHeight = -1;
+
+ /**
+ * Resource name if using a picture from the wallpaper gallery
+ */
String mName = "";
/**
- * The component name of the currently set live wallpaper. This will be null if the
- * wallpaper uses the built in ImageWallpaper component to display a bitmap.
+ * The component name of the currently set live wallpaper.
*/
ComponentName mWallpaperComponent;
+
+ /**
+ * The component name of the wallpaper that should be set next.
+ */
+ ComponentName mNextWallpaperComponent;
+
+ /**
+ * Name of the component used to display bitmap wallpapers from either the gallery or
+ * built-in wallpapers.
+ */
+ ComponentName mImageWallpaperComponent = new ComponentName("android",
+ ImageWallpaper.class.getName());
+
WallpaperConnection mWallpaperConnection;
long mLastDiedTime;
@@ -169,7 +185,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
if ((mLastDiedTime+MIN_WALLPAPER_CRASH_TIME)
< SystemClock.uptimeMillis()) {
Log.w(TAG, "Reverting to built-in wallpaper!");
- bindWallpaperComponentLocked(null, false);
+ bindWallpaperComponentLocked(null);
}
}
}
@@ -190,7 +206,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
public WallpaperManagerService(Context context) {
- if (DEBUG) Log.d(TAG, "WallpaperService startup");
+ if (DEBUG) Log.v(TAG, "WallpaperService startup");
mContext = context;
mIWindowManager = IWindowManager.Stub.asInterface(
ServiceManager.getService(Context.WINDOW_SERVICE));
@@ -206,13 +222,14 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
public void systemReady() {
+ if (DEBUG) Log.v(TAG, "systemReady");
synchronized (mLock) {
try {
- bindWallpaperComponentLocked(mWallpaperComponent, false);
+ bindWallpaperComponentLocked(mNextWallpaperComponent);
} catch (RuntimeException e) {
Log.w(TAG, "Failure starting previous wallpaper", e);
try {
- bindWallpaperComponentLocked(null, false);
+ bindWallpaperComponentLocked(null);
} catch (RuntimeException e2) {
Log.w(TAG, "Failure starting default wallpaper", e2);
clearWallpaperComponentLocked();
@@ -222,6 +239,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
public void clearWallpaper() {
+ if (DEBUG) Log.v(TAG, "clearWallpaper");
synchronized (mLock) {
File f = WALLPAPER_FILE;
if (f.exists()) {
@@ -229,7 +247,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
final long ident = Binder.clearCallingIdentity();
try {
- bindWallpaperComponentLocked(null, false);
+ bindWallpaperComponentLocked(null);
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -306,6 +324,8 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
public ParcelFileDescriptor setWallpaper(String name) {
+ if (DEBUG) Log.v(TAG, "setWallpaper");
+
checkPermission(android.Manifest.permission.SET_WALLPAPER);
synchronized (mLock) {
final long ident = Binder.clearCallingIdentity();
@@ -313,7 +333,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
ParcelFileDescriptor pfd = updateWallpaperBitmapLocked(name);
if (pfd != null) {
// Bind the wallpaper to an ImageWallpaper
- bindWallpaperComponentLocked(null, true);
+ bindWallpaperComponentLocked(mImageWallpaperComponent);
saveSettingsLocked();
}
return pfd;
@@ -337,62 +357,65 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
public void setWallpaperComponent(ComponentName name) {
+ if (DEBUG) Log.v(TAG, "setWallpaperComponent name=" + name);
checkPermission(android.Manifest.permission.SET_WALLPAPER_COMPONENT);
synchronized (mLock) {
final long ident = Binder.clearCallingIdentity();
try {
- bindWallpaperComponentLocked(name, false);
+ bindWallpaperComponentLocked(name);
} finally {
Binder.restoreCallingIdentity(ident);
}
}
}
- void bindWallpaperComponentLocked(ComponentName componentName, boolean isBitmap) {
+ void bindWallpaperComponentLocked(ComponentName componentName) {
+ if (DEBUG) Log.v(TAG, "bindWallpaperComponentLocked: componentName=" + componentName);
+
// Has the component changed?
if (mWallpaperConnection != null) {
if (mWallpaperComponent == null) {
if (componentName == null) {
+ if (DEBUG) Log.v(TAG, "bindWallpaperComponentLocked: still using default");
// Still using default wallpaper.
return;
}
} else if (mWallpaperComponent.equals(componentName)) {
// Changing to same wallpaper.
+ if (DEBUG) Log.v(TAG, "same wallpaper");
return;
}
}
try {
- ComponentName realComponentName = componentName;
- if (realComponentName == null) {
+ if (componentName == null) {
String defaultComponent =
mContext.getString(com.android.internal.R.string.default_wallpaper_component);
- if (defaultComponent != null && !isBitmap) {
+ if (defaultComponent != null) {
// See if there is a default wallpaper component specified
- // Only look for this if the wallpaper is not being set to a bitmap
- realComponentName = ComponentName.unflattenFromString(defaultComponent);
- componentName = realComponentName;
+ componentName = ComponentName.unflattenFromString(defaultComponent);
+ if (DEBUG) Log.v(TAG, "Use default component walpaper:" + componentName);
}
- if (realComponentName == null) {
+ if (componentName == null) {
// Fall back to static image wallpaper
- realComponentName = new ComponentName("android",
- ImageWallpaper.class.getName());
+ componentName = mImageWallpaperComponent;
//clearWallpaperComponentLocked();
//return;
+ if (DEBUG) Log.v(TAG, "Using image wallpaper");
}
}
- ServiceInfo si = mContext.getPackageManager().getServiceInfo(realComponentName,
+ ServiceInfo si = mContext.getPackageManager().getServiceInfo(componentName,
PackageManager.GET_META_DATA | PackageManager.GET_PERMISSIONS);
if (!android.Manifest.permission.BIND_WALLPAPER.equals(si.permission)) {
throw new SecurityException("Selected service does not require "
+ android.Manifest.permission.BIND_WALLPAPER
- + ": " + realComponentName);
+ + ": " + componentName);
}
WallpaperInfo wi = null;
Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE);
- if (componentName != null) {
+ if (componentName != null && !componentName.equals(mImageWallpaperComponent)) {
// Make sure the selected service is actually a wallpaper service.
List<ResolveInfo> ris = mContext.getPackageManager()
.queryIntentServices(intent, PackageManager.GET_META_DATA);
@@ -412,13 +435,14 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
if (wi == null) {
throw new SecurityException("Selected service is not a wallpaper: "
- + realComponentName);
+ + componentName);
}
}
// Bind the service!
+ if (DEBUG) Log.v(TAG, "Binding to:" + componentName);
WallpaperConnection newConn = new WallpaperConnection(wi);
- intent.setComponent(realComponentName);
+ intent.setComponent(componentName);
intent.putExtra(Intent.EXTRA_CLIENT_LABEL,
com.android.internal.R.string.wallpaper_binding_label);
intent.putExtra(Intent.EXTRA_CLIENT_INTENT, PendingIntent.getActivity(
@@ -475,7 +499,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
mWidth, mHeight);
} catch (RemoteException e) {
Log.w(TAG, "Failed attaching wallpaper; clearing", e);
- bindWallpaperComponentLocked(null, false);
+ bindWallpaperComponentLocked(null);
}
}
@@ -542,6 +566,8 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
private void loadSettingsLocked() {
+ if (DEBUG) Log.v(TAG, "loadSettingsLocked");
+
JournaledFile journal = makeJournaledFile();
FileInputStream stream = null;
File file = journal.chooseForRead();
@@ -561,9 +587,16 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
mHeight = Integer.parseInt(parser.getAttributeValue(null, "height"));
mName = parser.getAttributeValue(null, "name");
String comp = parser.getAttributeValue(null, "component");
- mWallpaperComponent = comp != null
+ mNextWallpaperComponent = comp != null
? ComponentName.unflattenFromString(comp)
: null;
+
+ if (DEBUG) {
+ Log.v(TAG, "mWidth:" + mWidth);
+ Log.v(TAG, "mHeight:" + mHeight);
+ Log.v(TAG, "mName:" + mName);
+ Log.v(TAG, "mNextWallpaperComponent:" + mNextWallpaperComponent);
+ }
}
}
} while (type != XmlPullParser.END_DOCUMENT);
@@ -595,15 +628,30 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
void settingsRestored() {
+ if (DEBUG) Log.v(TAG, "settingsRestored");
+
boolean success = false;
synchronized (mLock) {
loadSettingsLocked();
- // If there's a wallpaper name, we use that. If that can't be loaded, then we
- // use the default.
- if ("".equals(mName)) {
+ if (mNextWallpaperComponent != null &&
+ !mNextWallpaperComponent.equals(mImageWallpaperComponent)) {
+ // We can't restore live wallpapers, so just go with the default
+ bindWallpaperComponentLocked(null);
success = true;
} else {
- success = restoreNamedResourceLocked();
+ // If there's a wallpaper name, we use that. If that can't be loaded, then we
+ // use the default.
+ if ("".equals(mName)) {
+ if (DEBUG) Log.v(TAG, "settingsRestored: name is empty");
+ success = true;
+ } else {
+ if (DEBUG) Log.v(TAG, "settingsRestored: attempting to restore named resource");
+ success = restoreNamedResourceLocked();
+ }
+ if (DEBUG) Log.v(TAG, "settingsRestored: success=" + success);
+ if (success) {
+ bindWallpaperComponentLocked(mImageWallpaperComponent);
+ }
}
}
@@ -660,7 +708,7 @@ class WallpaperManagerService extends IWallpaperManager.Stub {
}
// mWallpaperObserver will notice the close and send the change broadcast
- Log.d(TAG, "Restored wallpaper: " + resName);
+ Log.v(TAG, "Restored wallpaper: " + resName);
return true;
} catch (NameNotFoundException e) {
Log.e(TAG, "Package name " + pkg + " not found");
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index aa79ab4fc642..3612a9b361d8 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -185,6 +185,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
static final int LOG_AM_SERVICE_CRASHED_TOO_MUCH = 30034;
static final int LOG_AM_SCHEDULE_SERVICE_RESTART = 30035;
static final int LOG_AM_PROVIDER_LOST_PROCESS = 30036;
+ static final int LOG_AM_PROCESS_START_TIMEOUT = 30037;
static final int LOG_BOOT_PROGRESS_AMS_READY = 3040;
static final int LOG_BOOT_PROGRESS_ENABLE_SCREEN = 3050;
@@ -5199,13 +5200,23 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
if (gone) {
Log.w(TAG, "Process " + app + " failed to attach");
+ EventLog.writeEvent(LOG_AM_PROCESS_START_TIMEOUT, pid, app.info.uid,
+ app.processName);
mProcessNames.remove(app.processName, app.info.uid);
- Process.killProcess(pid);
- if (mPendingBroadcast != null && mPendingBroadcast.curApp.pid == pid) {
- Log.w(TAG, "Unattached app died before broadcast acknowledged, skipping");
- mPendingBroadcast = null;
- scheduleBroadcastsLocked();
+ // Take care of any launching providers waiting for this process.
+ checkAppInLaunchingProvidersLocked(app, true);
+ // Take care of any services that are waiting for the process.
+ for (int i=0; i<mPendingServices.size(); i++) {
+ ServiceRecord sr = mPendingServices.get(i);
+ if (app.info.uid == sr.appInfo.uid
+ && app.processName.equals(sr.processName)) {
+ Log.w(TAG, "Forcing bringing down service: " + sr);
+ mPendingServices.remove(i);
+ i--;
+ bringDownServiceLocked(sr, true);
+ }
}
+ Process.killProcess(pid);
if (mBackupTarget != null && mBackupTarget.app.pid == pid) {
Log.w(TAG, "Unattached app died before backup, skipping");
try {
@@ -5216,6 +5227,11 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
// Can't happen; the backup manager is local
}
}
+ if (mPendingBroadcast != null && mPendingBroadcast.curApp.pid == pid) {
+ Log.w(TAG, "Unattached app died before broadcast acknowledged, skipping");
+ mPendingBroadcast = null;
+ scheduleBroadcastsLocked();
+ }
} else {
Log.w(TAG, "Spurious process start timeout - pid not known for " + app);
}
@@ -9949,23 +9965,11 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
app.pubProviders.clear();
}
- // Look through the content providers we are waiting to have launched,
- // and if any run in this process then either schedule a restart of
- // the process or kill the client waiting for it if this process has
- // gone bad.
- for (int i=0; i<NL; i++) {
- ContentProviderRecord cpr = (ContentProviderRecord)
- mLaunchingProviders.get(i);
- if (cpr.launchingApp == app) {
- if (!app.bad) {
- restart = true;
- } else {
- removeDyingProviderLocked(app, cpr);
- NL = mLaunchingProviders.size();
- }
- }
+ // Take care of any launching providers waiting for this process.
+ if (checkAppInLaunchingProvidersLocked(app, false)) {
+ restart = true;
}
-
+
// Unregister from connected content providers.
if (!app.conProviders.isEmpty()) {
Iterator it = app.conProviders.keySet().iterator();
@@ -10060,6 +10064,28 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
}
}
+ boolean checkAppInLaunchingProvidersLocked(ProcessRecord app, boolean alwaysBad) {
+ // Look through the content providers we are waiting to have launched,
+ // and if any run in this process then either schedule a restart of
+ // the process or kill the client waiting for it if this process has
+ // gone bad.
+ int NL = mLaunchingProviders.size();
+ boolean restart = false;
+ for (int i=0; i<NL; i++) {
+ ContentProviderRecord cpr = (ContentProviderRecord)
+ mLaunchingProviders.get(i);
+ if (cpr.launchingApp == app) {
+ if (!alwaysBad && !app.bad) {
+ restart = true;
+ } else {
+ removeDyingProviderLocked(app, cpr);
+ NL = mLaunchingProviders.size();
+ }
+ }
+ }
+ return restart;
+ }
+
// =========================================================
// SERVICES
// =========================================================
diff --git a/services/java/com/android/server/status/StatusBarService.java b/services/java/com/android/server/status/StatusBarService.java
index 8d739041622f..1db20df35452 100644
--- a/services/java/com/android/server/status/StatusBarService.java
+++ b/services/java/com/android/server/status/StatusBarService.java
@@ -85,10 +85,8 @@ import java.util.Set;
public class StatusBarService extends IStatusBar.Stub
{
static final String TAG = "StatusBar";
- static final boolean DEBUG = false;
static final boolean SPEW = false;
- static final boolean DBG = false;
-
+
static final int EXPANDED_LEAVE_ALONE = -10000;
static final int EXPANDED_FULL_OPEN = -10001;
@@ -656,7 +654,7 @@ public class StatusBarService extends IStatusBar.Stub
/* private */ void performAddUpdateIcon(IBinder key, IconData data, NotificationData n)
throws StatusBarException {
- if (DBG) {
+ if (SPEW) {
Log.d(TAG, "performAddUpdateIcon icon=" + data + " notification=" + n + " key=" + key);
}
// notification
@@ -748,7 +746,7 @@ public class StatusBarService extends IStatusBar.Stub
/* private */ void performSetIconVisibility(IBinder key, boolean visible) {
synchronized (mIconMap) {
- if (DBG) {
+ if (SPEW) {
Log.d(TAG, "performSetIconVisibility key=" + key + " visible=" + visible);
}
StatusBarIcon icon = mIconMap.get(key);
@@ -758,7 +756,7 @@ public class StatusBarService extends IStatusBar.Stub
/* private */ void performRemoveIcon(IBinder key) {
synchronized (this) {
- if (DBG) {
+ if (SPEW) {
Log.d(TAG, "performRemoveIcon key=" + key);
}
StatusBarIcon icon = mIconMap.remove(key);
@@ -997,7 +995,7 @@ public class StatusBarService extends IStatusBar.Stub
}
void performExpand() {
- if (SPEW) Log.d(TAG, "Perform expand: expanded=" + mExpanded);
+ if (SPEW) Log.d(TAG, "performExpand: mExpanded=" + mExpanded);
if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
return ;
}
@@ -1022,8 +1020,8 @@ public class StatusBarService extends IStatusBar.Stub
}
void performCollapse() {
- if (SPEW) Log.d(TAG, "Perform collapse: expanded=" + mExpanded
- + " expanded visible=" + mExpandedVisible);
+ if (SPEW) Log.d(TAG, "performCollapse: mExpanded=" + mExpanded
+ + " mExpandedVisible=" + mExpandedVisible);
if (!mExpandedVisible) {
return;
@@ -1668,7 +1666,7 @@ public class StatusBarService extends IStatusBar.Stub
// act accordingly
if ((diff & StatusBarManager.DISABLE_EXPAND) != 0) {
if ((net & StatusBarManager.DISABLE_EXPAND) != 0) {
- performCollapse();
+ animateCollapse();
}
}
if ((diff & StatusBarManager.DISABLE_NOTIFICATION_ICONS) != 0) {
diff --git a/test-runner/android/test/AndroidTestRunner.java b/test-runner/android/test/AndroidTestRunner.java
index 0f1599aafd1c..fc9832ca3bcd 100644
--- a/test-runner/android/test/AndroidTestRunner.java
+++ b/test-runner/android/test/AndroidTestRunner.java
@@ -133,7 +133,7 @@ public class AndroidTestRunner extends BaseTestRunner {
}
return new TestResult();
}
-
+
void setSkipExecution(boolean skip) {
mSkipExecution = skip;
}
@@ -165,7 +165,7 @@ public class AndroidTestRunner extends BaseTestRunner {
for (TestCase testCase : mTestCases) {
setContextIfAndroidTestCase(testCase, mContext, testContext);
setInstrumentationIfInstrumentationTestCase(testCase, mInstrumentation);
- setPerformanceWriterIfPerformanceTestCase(testCase, mPerfWriter);
+ setPerformanceWriterIfPerformanceCollectorTestCase(testCase, mPerfWriter);
testCase.run(mTestResult);
}
}
@@ -188,10 +188,10 @@ public class AndroidTestRunner extends BaseTestRunner {
}
}
- private void setPerformanceWriterIfPerformanceTestCase(
+ private void setPerformanceWriterIfPerformanceCollectorTestCase(
Test test, PerformanceResultsWriter writer) {
- if (PerformanceTestBase.class.isAssignableFrom(test.getClass())) {
- ((PerformanceTestBase) test).setPerformanceResultsWriter(writer);
+ if (PerformanceCollectorTestCase.class.isAssignableFrom(test.getClass())) {
+ ((PerformanceCollectorTestCase) test).setPerformanceResultsWriter(writer);
}
}
diff --git a/test-runner/android/test/InstrumentationTestRunner.java b/test-runner/android/test/InstrumentationTestRunner.java
index 773d7a95468c..3e9cd9f36164 100644
--- a/test-runner/android/test/InstrumentationTestRunner.java
+++ b/test-runner/android/test/InstrumentationTestRunner.java
@@ -27,8 +27,6 @@ import android.os.Debug;
import android.os.Looper;
import android.os.Parcelable;
import android.os.PerformanceCollector;
-import android.os.Process;
-import android.os.SystemClock;
import android.os.PerformanceCollector.PerformanceResultsWriter;
import android.test.suitebuilder.TestMethod;
import android.test.suitebuilder.TestPredicates;
@@ -226,23 +224,6 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu
* identifies the path to the generated code coverage file.
*/
private static final String REPORT_KEY_COVERAGE_PATH = "coverageFilePath";
- /**
- * If included at the start of reporting keys, this prefix marks the key as a performance
- * metric.
- */
- private static final String REPORT_KEY_PREFIX = "performance.";
- /**
- * If included in the status or final bundle sent to an IInstrumentationWatcher, this key
- * reports the cpu time in milliseconds of the current test.
- */
- private static final String REPORT_KEY_PERF_CPU_TIME =
- REPORT_KEY_PREFIX + PerformanceCollector.METRIC_KEY_CPU_TIME;
- /**
- * If included in the status or final bundle sent to an IInstrumentationWatcher, this key
- * reports the run time in milliseconds of the current test.
- */
- private static final String REPORT_KEY_PERF_EXECUTION_TIME =
- REPORT_KEY_PREFIX + PerformanceCollector.METRIC_KEY_EXECUTION_TIME;
/**
* The test is starting.
@@ -630,9 +611,9 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu
int mTestNum = 0;
int mTestResultCode = 0;
String mTestClass = null;
+ PerformanceCollector mPerfCollector = new PerformanceCollector();
boolean mIsTimedTest = false;
- long mCpuTime = 0;
- long mExecTime = 0;
+ boolean mIncludeDetailedStats = false;
public WatcherResultPrinter(int numTests) {
mResultTemplate = new Bundle();
@@ -675,20 +656,28 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu
mTestResultCode = 0;
mIsTimedTest = false;
+ mIncludeDetailedStats = false;
try {
- // Look for TimedTest annotation on both test class and test
- // method
- mIsTimedTest = test.getClass().isAnnotationPresent(TimedTest.class) ||
- test.getClass().getMethod(testName).isAnnotationPresent(TimedTest.class);
+ // Look for TimedTest annotation on both test class and test method
+ if (test.getClass().getMethod(testName).isAnnotationPresent(TimedTest.class)) {
+ mIsTimedTest = true;
+ mIncludeDetailedStats = test.getClass().getMethod(testName).getAnnotation(
+ TimedTest.class).includeDetailedStats();
+ } else if (test.getClass().isAnnotationPresent(TimedTest.class)) {
+ mIsTimedTest = true;
+ mIncludeDetailedStats = test.getClass().getAnnotation(
+ TimedTest.class).includeDetailedStats();
+ }
} catch (SecurityException e) {
throw new IllegalStateException(e);
} catch (NoSuchMethodException e) {
throw new IllegalStateException(e);
}
- if (mIsTimedTest) {
- mExecTime = SystemClock.uptimeMillis();
- mCpuTime = Process.getElapsedCpuTime();
+ if (mIsTimedTest && mIncludeDetailedStats) {
+ mPerfCollector.beginSnapshot("");
+ } else if (mIsTimedTest) {
+ mPerfCollector.startTiming("");
}
}
@@ -720,11 +709,10 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu
* @see junit.framework.TestListener#endTest(Test)
*/
public void endTest(Test test) {
- if (mIsTimedTest) {
- mCpuTime = Process.getElapsedCpuTime() - mCpuTime;
- mExecTime = SystemClock.uptimeMillis() - mExecTime;
- mTestResult.putLong(REPORT_KEY_PERF_CPU_TIME, mCpuTime);
- mTestResult.putLong(REPORT_KEY_PERF_EXECUTION_TIME, mExecTime);
+ if (mIsTimedTest && mIncludeDetailedStats) {
+ mTestResult.putAll(mPerfCollector.endSnapshot());
+ } else if (mIsTimedTest) {
+ writeStopTiming(mPerfCollector.stopTiming(""));
}
if (mTestResultCode == 0) {
@@ -760,7 +748,7 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu
for (Parcelable p :
results.getParcelableArrayList(PerformanceCollector.METRIC_KEY_ITERATIONS)) {
Bundle iteration = (Bundle)p;
- String index = "performance.iteration" + i + ".";
+ String index = "iteration" + i + ".";
mTestResult.putString(index + PerformanceCollector.METRIC_KEY_LABEL,
iteration.getString(PerformanceCollector.METRIC_KEY_LABEL));
mTestResult.putLong(index + PerformanceCollector.METRIC_KEY_CPU_TIME,
@@ -772,15 +760,15 @@ public class InstrumentationTestRunner extends Instrumentation implements TestSu
}
public void writeMeasurement(String label, long value) {
- mTestResult.putLong(REPORT_KEY_PREFIX + label, value);
+ mTestResult.putLong(label, value);
}
public void writeMeasurement(String label, float value) {
- mTestResult.putFloat(REPORT_KEY_PREFIX + label, value);
+ mTestResult.putFloat(label, value);
}
public void writeMeasurement(String label, String value) {
- mTestResult.putString(REPORT_KEY_PREFIX + label, value);
+ mTestResult.putString(label, value);
}
// TODO report the end of the cycle
diff --git a/test-runner/android/test/PerformanceCollectorTestCase.java b/test-runner/android/test/PerformanceCollectorTestCase.java
new file mode 100644
index 000000000000..4309ff73eb5f
--- /dev/null
+++ b/test-runner/android/test/PerformanceCollectorTestCase.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.test;
+
+import android.os.PerformanceCollector;
+import android.os.PerformanceCollector.PerformanceResultsWriter;
+
+/**
+ * A simple interface for passing in a PerformanceResultsWriter instance to be used with
+ * PerformanceCollector.
+ * <p/>
+ * A one line implementation of {@link #setPerformanceResultsWriter(PerformanceResultsWriter)}
+ * is sufficient in most cases:
+ * <p/>
+ * <code>mPerfCollector.setPerformanceResultsWriter(writer);</code>
+ *
+ * {@hide} Not needed for SDK.
+ */
+public interface PerformanceCollectorTestCase {
+ public PerformanceCollector mPerfCollector = new PerformanceCollector();
+
+ public void setPerformanceResultsWriter(PerformanceResultsWriter writer);
+}
diff --git a/test-runner/android/test/PerformanceTestBase.java b/test-runner/android/test/PerformanceTestBase.java
index 572a9b8137a9..4a0a589145e4 100644
--- a/test-runner/android/test/PerformanceTestBase.java
+++ b/test-runner/android/test/PerformanceTestBase.java
@@ -16,95 +16,12 @@
package android.test;
-import android.os.Bundle;
-import android.os.PerformanceCollector;
-import android.os.PerformanceCollector.PerformanceResultsWriter;
-
-import java.lang.reflect.Method;
+import junit.framework.TestCase;
/**
- * Provides hooks and wrappers to automatically and manually collect and report
- * performance data in tests.
- *
- * {@hide} Pending approval for public API.
+ * {@hide} Not needed for SDK.
*/
-public class PerformanceTestBase extends InstrumentationTestCase implements PerformanceTestCase {
-
- private static PerformanceCollector sPerfCollector = new PerformanceCollector();
- private static int sNumTestMethods = 0;
- private static int sNumTestMethodsLeft = 0;
-
- // Count number of tests, used to emulate beforeClass and afterClass from JUnit4
- public PerformanceTestBase() {
- if (sNumTestMethods == 0) {
- Method methods[] = getClass().getMethods();
- for (Method m : methods) {
- if (m.getName().startsWith("test")) {
- sNumTestMethods ++;
- sNumTestMethodsLeft ++;
- }
- }
- }
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- // @beforeClass
- // Will skew timing measured by TestRunner, but not by PerformanceCollector
- if (sNumTestMethodsLeft == sNumTestMethods) {
- sPerfCollector.beginSnapshot(this.getClass().getName());
- }
- }
-
- @Override
- protected void tearDown() throws Exception {
- // @afterClass
- // Will skew timing measured by TestRunner, but not by PerformanceCollector
- if (--sNumTestMethodsLeft == 0) {
- sPerfCollector.endSnapshot();
- }
- super.tearDown();
- }
-
- public void setPerformanceResultsWriter(PerformanceResultsWriter writer) {
- sPerfCollector.setPerformanceResultsWriter(writer);
- }
-
- /**
- * @see PerformanceCollector#beginSnapshot(String)
- */
- protected void beginSnapshot(String label) {
- sPerfCollector.beginSnapshot(label);
- }
-
- /**
- * @see PerformanceCollector#endSnapshot()
- */
- protected Bundle endSnapshot() {
- return sPerfCollector.endSnapshot();
- }
-
- /**
- * @see PerformanceCollector#startTiming(String)
- */
- protected void startTiming(String label) {
- sPerfCollector.startTiming(label);
- }
-
- /**
- * @see PerformanceCollector#addIteration(String)
- */
- protected Bundle addIteration(String label) {
- return sPerfCollector.addIteration(label);
- }
-
- /**
- * @see PerformanceCollector#stopTiming(String)
- */
- protected Bundle stopTiming(String label) {
- return sPerfCollector.stopTiming(label);
- }
+public class PerformanceTestBase extends TestCase implements PerformanceTestCase {
public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
return 0;
diff --git a/core/java/android/test/TimedTest.java b/test-runner/android/test/TimedTest.java
index 3a60a256823b..95cc9bffd42c 100644
--- a/core/java/android/test/TimedTest.java
+++ b/test-runner/android/test/TimedTest.java
@@ -20,13 +20,17 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
- * This annotation can be used on an {@link junit.framework.TestCase}'s test
- * methods. When the annotation is present, the test method is timed and the
- * results written through instrumentation output. It can also be used on the
- * class itself, which is equivalent to tagging all test methods with this
- * annotation.
+ * This annotation can be used on an {@link junit.framework.TestCase}'s test methods. When the
+ * annotation is present, the test method is timed and the results written through instrumentation
+ * output. It can also be used on the class itself, which is equivalent to tagging all test methods
+ * with this annotation.
+ * <p/>
+ * Setting {@link #includeDetailedStats()} to true causes additional metrics such as memory usage
+ * and binder transactions to be gathered and written through instrumentation output.
*
* {@hide} Pending approval for public API.
*/
@Retention(RetentionPolicy.RUNTIME)
-public @interface TimedTest { } \ No newline at end of file
+public @interface TimedTest {
+ boolean includeDetailedStats() default false;
+}
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
index c45597770760..2df9219bf63d 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
@@ -675,9 +675,12 @@ public final class Bridge implements ILayoutBridge {
name = name.substring(BridgeConstants.PREFIX_ANDROID.length());
}
- // at this point we could have the format style/<name>. we want only the name
+ // at this point we could have the format <type>/<name>. we want only the name as long as
+ // the type is style.
if (name.startsWith(BridgeConstants.REFERENCE_STYLE)) {
name = name.substring(BridgeConstants.REFERENCE_STYLE.length());
+ } else if (name.indexOf('/') != -1) {
+ return null;
}
IResourceValue parent = null;
@@ -697,7 +700,7 @@ public final class Bridge implements ILayoutBridge {
return (IStyleResourceValue)parent;
}
- sLogger.error(String.format("Unable to resolve parent style name: ", parentName));
+ sLogger.error(String.format("Unable to resolve parent style name: %s", parentName));
return null;
}
@@ -1069,24 +1072,24 @@ public final class Bridge implements ILayoutBridge {
public void wallpaperOffsetsComplete(IBinder window) {
// pass for now.
}
-
+
@SuppressWarnings("unused")
public Bundle sendWallpaperCommand(IBinder window, String action, int x, int y,
int z, Bundle extras, boolean sync) {
// pass for now.
return null;
}
-
+
@SuppressWarnings("unused")
public void wallpaperCommandComplete(IBinder window, Bundle result) {
// pass for now.
}
-
+
@SuppressWarnings("unused")
public void closeSystemDialogs(String reason) {
// pass for now.
}
-
+
public IBinder asBinder() {
// pass for now.
return null;
@@ -1151,12 +1154,12 @@ public final class Bridge implements ILayoutBridge {
int z, Bundle extras, boolean sync) {
// pass for now.
}
-
+
@SuppressWarnings("unused")
public void closeSystemDialogs(String reason) {
// pass for now.
}
-
+
public IBinder asBinder() {
// pass for now.
return null;
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeAssetManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeAssetManager.java
index 06dd96f8e628..6c1b5b3e7f3f 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeAssetManager.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/BridgeAssetManager.java
@@ -32,21 +32,21 @@ public class BridgeAssetManager extends AssetManager {
* {@link Bridge} calls this method after setting up a new bridge.
*/
/*package*/ static AssetManager initSystem() {
- if (!(AssetManager.mSystem instanceof BridgeAssetManager)) {
+ if (!(AssetManager.sSystem instanceof BridgeAssetManager)) {
// Note that AssetManager() creates a system AssetManager and we override it
// with our BridgeAssetManager.
- AssetManager.mSystem = new BridgeAssetManager();
- AssetManager.mSystem.makeStringBlocks(false);
+ AssetManager.sSystem = new BridgeAssetManager();
+ AssetManager.sSystem.makeStringBlocks(false);
}
- return AssetManager.mSystem;
+ return AssetManager.sSystem;
}
/**
- * Clears the static {@link AssetManager#mSystem} to make sure we don't leave objects
+ * Clears the static {@link AssetManager#sSystem} to make sure we don't leave objects
* around that would prevent us from unloading the library.
*/
/*package*/ static void clearSystem() {
- AssetManager.mSystem = null;
+ AssetManager.sSystem = null;
}
private BridgeAssetManager() {