aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2012-01-27 17:22:11 -0800
committerXavier Ducrohet <xav@android.com>2012-01-27 18:09:10 -0800
commitec17a292857ccc0f458de06d055485e4eb8765be (patch)
treef333040dcb3c99dc1225550df31758a7742f1880
parentd3ddd843a71f966ed256ea4c21f4b50c6fd735d2 (diff)
downloadsdk-ec17a292857ccc0f458de06d055485e4eb8765be.zip
sdk-ec17a292857ccc0f458de06d055485e4eb8765be.tar.gz
sdk-ec17a292857ccc0f458de06d055485e4eb8765be.tar.bz2
Automatically add annotations.jar on the classpath for API<=15
This is to provide app some annotations used by the tools. Those annotations will be part of the API later. Change-Id: I32b31a3039e4fbb331682a84192252bd43c0f54a
-rw-r--r--anttasks/src/com/android/ant/NewSetupTask.java18
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/plugin.xml9
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/LibraryClasspathContainerInitializer.java18
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java4
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java5
5 files changed, 40 insertions, 14 deletions
diff --git a/anttasks/src/com/android/ant/NewSetupTask.java b/anttasks/src/com/android/ant/NewSetupTask.java
index 46f5b14..29caf6e 100644
--- a/anttasks/src/com/android/ant/NewSetupTask.java
+++ b/anttasks/src/com/android/ant/NewSetupTask.java
@@ -20,10 +20,10 @@ import com.android.io.FileWrapper;
import com.android.io.FolderWrapper;
import com.android.sdklib.AndroidVersion;
import com.android.sdklib.IAndroidTarget;
+import com.android.sdklib.IAndroidTarget.IOptionalLibrary;
import com.android.sdklib.ISdkLog;
import com.android.sdklib.SdkConstants;
import com.android.sdklib.SdkManager;
-import com.android.sdklib.IAndroidTarget.IOptionalLibrary;
import com.android.sdklib.internal.project.ProjectProperties;
import com.android.sdklib.internal.project.ProjectProperties.PropertyType;
import com.android.sdklib.xml.AndroidManifest;
@@ -282,7 +282,7 @@ public class NewSetupTask extends Task {
}
// look for referenced libraries.
- processReferencedLibraries(antProject, androidTarget);
+ processReferencedLibraries(antProject, androidTarget, sdkOsPath);
// always check the manifest minSdkVersion.
checkManifest(antProject, androidTarget.getVersion());
@@ -436,7 +436,8 @@ public class NewSetupTask extends Task {
}
}
- private void processReferencedLibraries(Project antProject, IAndroidTarget androidTarget) {
+ private void processReferencedLibraries(Project antProject, IAndroidTarget androidTarget,
+ String sdkLocation) {
// prepare several paths for future tasks
Path rootPath = new Path(antProject);
Path resPath = new Path(antProject);
@@ -523,6 +524,17 @@ public class NewSetupTask extends Task {
System.out.println("------------------\n");
+ if (androidTarget.getVersion().getApiLevel() <= 15) {
+ System.out.println("API<=15: Adding annotations.jar to the classpath.\n");
+
+ PathElement element = jarsPath.createPathElement();
+ element.setPath(sdkLocation + "/" + SdkConstants.FD_TOOLS +
+ "/" + SdkConstants.FD_SUPPORT +
+ "/" + SdkConstants.FN_ANNOTATIONS_JAR);
+
+ System.out.println("------------------\n");
+ }
+
// even with no libraries, always setup these so that various tasks in Ant don't complain
// (the task themselves can handle a ref to an empty Path)
antProject.addReference(mProjectLibrariesJarsOut, jarsPath);
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/plugin.xml b/eclipse/plugins/com.android.ide.eclipse.adt/plugin.xml
index de8ab4a..f980f4f 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/plugin.xml
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/plugin.xml
@@ -425,20 +425,13 @@
natureId="com.android.ide.eclipse.adt.AndroidNature">
</image>
</extension>
- <extension point="org.eclipse.ui.ide.projectNatureImages">
- <image
- icon="icons/android_project.png"
- id="com.android.ide.eclipse.adt.AndroidNature.image"
- natureId="com.android.ide.eclipse.adt.AndroidExportNature">
- </image>
- </extension>
<extension point="org.eclipse.jdt.core.classpathContainerInitializer">
<classpathContainerInitializer
class="com.android.ide.eclipse.adt.internal.project.AndroidClasspathContainerInitializer"
id="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK">
</classpathContainerInitializer>
<classpathContainerInitializer
- class="com.android.ide.eclipse.adt.internal.project.AndroidClasspathContainerInitializer"
+ class="com.android.ide.eclipse.adt.internal.project.LibraryClasspathContainerInitializer"
id="com.android.ide.eclipse.adt.LIBRARIES">
</classpathContainerInitializer>
</extension>
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/LibraryClasspathContainerInitializer.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/LibraryClasspathContainerInitializer.java
index e31d70d..7b6c9b7 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/LibraryClasspathContainerInitializer.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/project/LibraryClasspathContainerInitializer.java
@@ -20,6 +20,7 @@ import com.android.ide.eclipse.adt.AdtConstants;
import com.android.ide.eclipse.adt.AdtPlugin;
import com.android.ide.eclipse.adt.internal.sdk.ProjectState;
import com.android.ide.eclipse.adt.internal.sdk.Sdk;
+import com.android.sdklib.SdkConstants;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
@@ -37,6 +38,7 @@ import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -132,7 +134,7 @@ public class LibraryClasspathContainerInitializer extends ClasspathContainerInit
}
}
- // same thing for the library container
+ // if there isn't any, add it.
if (foundLibrariesContainer == false) {
// add the android container to the array
rawClasspath = ProjectHelper.addEntryToClasspath(rawClasspath,
@@ -186,6 +188,20 @@ public class LibraryClasspathContainerInitializer extends ClasspathContainerInit
}
}
+ // annotations support for older version of android
+ if (state.getTarget() != null && state.getTarget().getVersion().getApiLevel() <= 15) {
+ File annotationsJar = new File(Sdk.getCurrent().getSdkLocation(),
+ SdkConstants.FD_TOOLS + File.separator + SdkConstants.FD_SUPPORT +
+ File.separator + SdkConstants.FN_ANNOTATIONS_JAR);
+
+ IClasspathEntry entry = JavaCore.newLibraryEntry(
+ new Path(annotationsJar.getAbsolutePath()),
+ null, // source attachment path
+ null); // default source attachment root path.
+
+ entries.add(0, entry);
+ }
+
return new AndroidClasspathContainer(
entries.toArray(new IClasspathEntry[entries.size()]),
new Path(AdtConstants.CONTAINER_LIBRARIES),
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java
index 6776a07..2f55d9b 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/sdk/Sdk.java
@@ -24,7 +24,6 @@ import com.android.ide.common.rendering.LayoutLibrary;
import com.android.ide.common.sdk.LoadStatus;
import com.android.ide.eclipse.adt.AdtConstants;
import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.adt.AdtUtils;
import com.android.ide.eclipse.adt.internal.build.DexWrapper;
import com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor;
import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs;
@@ -71,7 +70,6 @@ import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.IWorkbenchWindow;
@@ -1056,6 +1054,8 @@ public final class Sdk {
if (javaProject != null) {
AndroidClasspathContainerInitializer.updateProjects(
new IJavaProject[] { javaProject });
+ LibraryClasspathContainerInitializer.updateProjects(
+ new IJavaProject[] { javaProject });
}
// update the editors to reload with the new target
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
index 8f17886..d13108a 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
@@ -85,6 +85,9 @@ public final class SdkConstants {
/** Intent category list file */
public static final String FN_INTENT_CATEGORIES = "categories.txt"; //$NON-NLS-1$
+ /** annotations support jar */
+ public static final String FN_ANNOTATIONS_JAR = "annotations.jar"; //$NON-NLS-1$
+
/** platform build property file */
public final static String FN_BUILD_PROP = "build.prop"; //$NON-NLS-1$
/** plugin properties file */
@@ -204,6 +207,8 @@ public final class SdkConstants {
public final static String FD_PKG_SOURCES = "sources"; //$NON-NLS-1$
/** Name of the SDK tools folder. */
public final static String FD_TOOLS = "tools"; //$NON-NLS-1$
+ /** Name of the SDK tools/support folder. */
+ public final static String FD_SUPPORT = "support"; //$NON-NLS-1$
/** Name of the SDK platform tools folder. */
public final static String FD_PLATFORM_TOOLS = "platform-tools"; //$NON-NLS-1$
/** Name of the SDK tools/lib folder. */