aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--anttasks/src/com/android/ant/SetupTask.java14
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.tests/.classpath1
-rw-r--r--sdkmanager/app/src/com/android/sdkmanager/Main.java8
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java8
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java9
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java22
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java5
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java30
-rwxr-xr-xsdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockAddonPackage.java8
-rwxr-xr-xsdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockPlatformPackage.java8
10 files changed, 96 insertions, 17 deletions
diff --git a/anttasks/src/com/android/ant/SetupTask.java b/anttasks/src/com/android/ant/SetupTask.java
index bf6a162..790c068 100644
--- a/anttasks/src/com/android/ant/SetupTask.java
+++ b/anttasks/src/com/android/ant/SetupTask.java
@@ -167,7 +167,7 @@ public final class SetupTask extends ImportTask {
}
// look for referenced libraries.
- processReferencedLibraries(antProject);
+ processReferencedLibraries(antProject, androidTarget);
// display it
System.out.println("Project Target: " + androidTarget.getName());
@@ -354,7 +354,7 @@ public final class SetupTask extends ImportTask {
}
}
- private void processReferencedLibraries(Project antProject) {
+ private void processReferencedLibraries(Project antProject, IAndroidTarget androidTarget) {
// prepare several paths for future tasks
Path sourcePath = new Path(antProject);
Path resPath = new Path(antProject);
@@ -368,6 +368,10 @@ public final class SetupTask extends ImportTask {
}
};
+ // get the build version for the current target. It'll be tested if there's at least
+ // one library.
+ int antBuildVersion = androidTarget.getAntBuildRevision();
+
int index = 1;
while (true) {
String propName = ProjectProperties.PROPERTY_LIB_REF + Integer.toString(index++);
@@ -377,6 +381,12 @@ public final class SetupTask extends ImportTask {
break;
}
+ if (antBuildVersion < SdkConstants.ANT_REV_LIBRARY) {
+ throw new BuildException(String.format(
+ "The build system for this project target (%1$s) does not support libraries",
+ androidTarget.getFullName()));
+ }
+
// get the source path. default is src but can be overriden by the property
// "source.dir" in build.properties.
PathElement element = sourcePath.createPathElement();
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/.classpath b/eclipse/plugins/com.android.ide.eclipse.tests/.classpath
index f74212c..17d578d 100644
--- a/eclipse/plugins/com.android.ide.eclipse.tests/.classpath
+++ b/eclipse/plugins/com.android.ide.eclipse.tests/.classpath
@@ -1,4 +1,3 @@
-
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
diff --git a/sdkmanager/app/src/com/android/sdkmanager/Main.java b/sdkmanager/app/src/com/android/sdkmanager/Main.java
index e9992a2..334928b 100644
--- a/sdkmanager/app/src/com/android/sdkmanager/Main.java
+++ b/sdkmanager/app/src/com/android/sdkmanager/Main.java
@@ -296,7 +296,7 @@ public class Main {
}
IAndroidTarget target = targets[targetId - 1]; // target id is 1-based
- ProjectCreator creator = new ProjectCreator(mOsSdkFolder,
+ ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
OutputLevel.NORMAL,
@@ -441,7 +441,7 @@ public class Main {
mSdkLog.printf("Found main project target: %1$s\n", target.getFullName());
- ProjectCreator creator = new ProjectCreator(mOsSdkFolder,
+ ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
OutputLevel.NORMAL,
@@ -488,7 +488,7 @@ public class Main {
target = targets[targetId - 1]; // target id is 1-based
}
- ProjectCreator creator = new ProjectCreator(mOsSdkFolder,
+ ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
OutputLevel.NORMAL,
@@ -540,7 +540,7 @@ public class Main {
* Updates an existing test project with a new path to the main project.
*/
private void updateTestProject() {
- ProjectCreator creator = new ProjectCreator(mOsSdkFolder,
+ ProjectCreator creator = new ProjectCreator(mSdkManager, mOsSdkFolder,
mSdkCommandLine.isVerbose() ? OutputLevel.VERBOSE :
mSdkCommandLine.isSilent() ? OutputLevel.SILENT :
OutputLevel.NORMAL,
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java
index 9237b76..00c5ceb 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/AddOnTarget.java
@@ -216,6 +216,14 @@ final class AddOnTarget implements IAndroidTarget {
return mBasePlatform.getProperties();
}
+ public int getAntBuildRevision() {
+ return mBasePlatform.getAntBuildRevision();
+ }
+
+ public int getAntTemplatesRevision() {
+ return mBasePlatform.getAntTemplatesRevision();
+ }
+
public int getUsbVendorId() {
return mVendorId;
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java
index d3ce965..8035ab0 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/IAndroidTarget.java
@@ -186,6 +186,15 @@ public interface IAndroidTarget extends Comparable<IAndroidTarget> {
*/
Map<String, String> getProperties();
+ /**
+ * Returns the revision number of the Ant build system supported by this target.
+ */
+ int getAntBuildRevision();
+
+ /**
+ * Returns the revision number of the Ant templates supported by this target.
+ */
+ int getAntTemplatesRevision();
/**
* Returns the USB Vendor ID for the vendor of this target.
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java
index c529610..53e7127 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/PlatformTarget.java
@@ -262,6 +262,28 @@ final class PlatformTarget implements IAndroidTarget {
return mProperties; // mProperties is unmodifiable.
}
+ public int getAntBuildRevision() {
+ try {
+ String value = getProperty("ant.build.revision");
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ // ignore, return 1;
+ }
+
+ return 1;
+ }
+
+ public int getAntTemplatesRevision() {
+ try {
+ String value = getProperty("ant.templates.revision");
+ return Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ // ignore, return 1;
+ }
+
+ return 1;
+ }
+
// ---- platform only methods.
void setSkins(String[] skins) {
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
index ff1c63a..847e3d1 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
@@ -268,10 +268,13 @@ public final class SdkConstants {
* This is an OS path, ending with a separator. */
public final static String OS_ADDON_LIBS_FOLDER = FD_ADDON_LIBS + File.separator;
-
/** Skin default **/
public final static String SKIN_DEFAULT = "default";
+ /** Ant revision value: Library support introduction */
+ public final static int ANT_REV_LIBRARY = 2;
+
+
/** Returns the appropriate name for the 'android' command, which is 'android.bat' for
* Windows and 'android' for all other platforms. */
public static String androidCmdName() {
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java
index 5b9bb60..97f84bb 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/project/ProjectCreator.java
@@ -132,8 +132,10 @@ public class ProjectCreator {
private final ISdkLog mLog;
private final String mSdkFolder;
+ private final SdkManager mSdkManager;
- public ProjectCreator(String sdkFolder, OutputLevel level, ISdkLog log) {
+ public ProjectCreator(SdkManager sdkManager, String sdkFolder, OutputLevel level, ISdkLog log) {
+ mSdkManager = sdkManager;
mSdkFolder = sdkFolder;
mLevel = level;
mLog = log;
@@ -415,14 +417,28 @@ public class ProjectCreator {
File projectFolder = androidManifest.getParentFile();
// Check there's a default.properties with a target *or* --target was specified
+ IAndroidTarget originalTarget = null;
ProjectProperties props = ProjectProperties.load(folderPath, PropertyType.DEFAULT);
- if (props == null || props.getProperty(ProjectProperties.PROPERTY_TARGET) == null) {
- if (target == null) {
+ if (props != null) {
+ String targetHash = props.getProperty(ProjectProperties.PROPERTY_TARGET);
+ originalTarget = mSdkManager.getTargetFromHashString(targetHash);
+ }
+
+ if (originalTarget == null && target == null) {
+ mLog.error(null,
+ "The project either has no target set or the target is invalid.\n" +
+ "Please provide a --target to the '%1$s update' command.",
+ SdkConstants.androidCmdName());
+ return false;
+ }
+
+ // before doing anything, make sure library (if present) can be applied.
+ if (libraryPath != null) {
+ IAndroidTarget finalTarget = target != null ? target : originalTarget;
+ if (finalTarget.getAntBuildRevision() < SdkConstants.ANT_REV_LIBRARY) {
mLog.error(null,
- "There is no %1$s file in '%2$s'. Please provide a --target to the '%3$s update' command.",
- PropertyType.DEFAULT.getFilename(),
- folderPath,
- SdkConstants.androidCmdName());
+ "The build system for this project target (%1$s) does not support libraries",
+ finalTarget.getFullName());
return false;
}
}
diff --git a/sdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockAddonPackage.java b/sdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockAddonPackage.java
index a922131..051a7cb 100755
--- a/sdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockAddonPackage.java
+++ b/sdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockAddonPackage.java
@@ -141,6 +141,12 @@ public class MockAddonPackage extends AddonPackage {
throw new UnsupportedOperationException("Implement this as needed for tests");
}
- }
+ public int getAntBuildRevision() {
+ return 1;
+ }
+ public int getAntTemplatesRevision() {
+ return 1;
+ }
+ }
}
diff --git a/sdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockPlatformPackage.java b/sdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockPlatformPackage.java
index 42b2d44..35817f2 100755
--- a/sdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockPlatformPackage.java
+++ b/sdkmanager/libs/sdklib/tests/com/android/sdklib/internal/repository/MockPlatformPackage.java
@@ -173,6 +173,12 @@ public class MockPlatformPackage extends PlatformPackage {
throw new UnsupportedOperationException("Implement this as needed for tests");
}
- }
+ public int getAntBuildRevision() {
+ return 1;
+ }
+ public int getAntTemplatesRevision() {
+ return 1;
+ }
+ }
}