aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager
diff options
context:
space:
mode:
Diffstat (limited to 'sdkmanager')
-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
8 files changed, 84 insertions, 14 deletions
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;
+ }
+ }
}