summaryrefslogtreecommitdiffstats
path: root/anttasks
diff options
context:
space:
mode:
authorXavier Ducrohet <xav@android.com>2010-05-04 17:46:54 -0700
committerXavier Ducrohet <xav@android.com>2010-05-04 17:49:39 -0700
commit711c35d7e18a262cde3800eecec26d52a25d532a (patch)
tree962cea17947aef0b20e7a8afad318fb94a708648 /anttasks
parent388c59a169b4b5954448aa77b31a0724adc1de5d (diff)
downloaddevice_generic_opengl-transport-711c35d7e18a262cde3800eecec26d52a25d532a.tar.gz
device_generic_opengl-transport-711c35d7e18a262cde3800eecec26d52a25d532a.tar.bz2
device_generic_opengl-transport-711c35d7e18a262cde3800eecec26d52a25d532a.zip
New If/Then/Else custom Ant rules to simplify some Ant rules logic.
Also cleaned up some attribute of our other custom tasks to conform to the standard convention (all lower case, all those were new in r3) Change-Id: If328a8eb2448d95bee1f1b70928d72fde5014eeb
Diffstat (limited to 'anttasks')
-rw-r--r--anttasks/src/com/android/ant/AaptExecLoopTask.java10
-rw-r--r--anttasks/src/com/android/ant/ApkBuilderTask.java8
-rw-r--r--anttasks/src/com/android/ant/IfElseTask.java96
-rw-r--r--anttasks/src/com/android/ant/MultiApkExportTask.java12
4 files changed, 116 insertions, 10 deletions
diff --git a/anttasks/src/com/android/ant/AaptExecLoopTask.java b/anttasks/src/com/android/ant/AaptExecLoopTask.java
index d9ec6bc1a..f93a20811 100644
--- a/anttasks/src/com/android/ant/AaptExecLoopTask.java
+++ b/anttasks/src/com/android/ant/AaptExecLoopTask.java
@@ -197,7 +197,7 @@ public final class AaptExecLoopTask extends Task {
@Deprecated
public void setBasename(String baseName) {
System.out.println("WARNNG: Using deprecated 'basename' attribute in AaptExecLoopTask." +
- "Use 'resourceFilename' (string) instead.");
+ "Use 'resourcefilename' (string) instead.");
mApkBaseName = baseName;
}
@@ -207,15 +207,15 @@ public final class AaptExecLoopTask extends Task {
*/
public void setApkbasename(String apkbaseName) {
System.out.println("WARNNG: Using deprecated 'apkbasename' attribute in AaptExecLoopTask." +
- "Use 'resourceFilename' (string) instead.");
+ "Use 'resourcefilename' (string) instead.");
mApkBaseName = apkbaseName;
}
/**
- * Sets the value of the apkname attribute
+ * Sets the value of the resourcefilename attribute
* @param apkName the value
*/
- public void setResourceFilename(String apkName) {
+ public void setResourcefilename(String apkName) {
mApkName = apkName;
}
@@ -227,7 +227,7 @@ public final class AaptExecLoopTask extends Task {
mRFolder = TaskHelper.checkSinglePath("rfolder", rFolder);
}
- public void setresourceFilter(String filter) {
+ public void setresourcefilter(String filter) {
if (filter != null && filter.length() > 0) {
mResourceFilter = filter;
}
diff --git a/anttasks/src/com/android/ant/ApkBuilderTask.java b/anttasks/src/com/android/ant/ApkBuilderTask.java
index e34eb6ea1..a49c2c564 100644
--- a/anttasks/src/com/android/ant/ApkBuilderTask.java
+++ b/anttasks/src/com/android/ant/ApkBuilderTask.java
@@ -69,7 +69,7 @@ public class ApkBuilderTask extends Task {
*/
public void setBasename(String baseName) {
System.out.println("WARNNG: Using deprecated 'basename' attribute in ApkBuilderTask." +
- "Use 'apkFilename' (path) instead.");
+ "Use 'apkfilepath' (path) instead.");
mBaseName = baseName;
}
@@ -77,15 +77,15 @@ public class ApkBuilderTask extends Task {
* Sets the full filepath to the apk to generate.
* @param filepath
*/
- public void setApkFilepath(String filepath) {
+ public void setApkfilepath(String filepath) {
mApkFilepath = filepath;
}
/**
- * Sets the
+ * Sets the resourcefile attribute
* @param resourceFile
*/
- public void setResourceFile(String resourceFile) {
+ public void setResourcefile(String resourceFile) {
mResourceFile = resourceFile;
}
diff --git a/anttasks/src/com/android/ant/IfElseTask.java b/anttasks/src/com/android/ant/IfElseTask.java
new file mode 100644
index 000000000..fd4f9d0c3
--- /dev/null
+++ b/anttasks/src/com/android/ant/IfElseTask.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2010 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 com.android.ant;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.Sequential;
+
+/**
+ * If (condition) then: {@link Sequential} else: {@link Sequential}.
+ *
+ * In XML:
+ * <if condition="${some.condition}">
+ * <then>
+ * </then>
+ * <else>
+ * </else>
+ * </if>
+ *
+ * both <then> and <else> behave like <sequential>.
+ *
+ * The presence of both <then> and <else> is not required, but one of them must be present.
+ * <if condition="${some.condition}">
+ * <else>
+ * </else>
+ * </if>
+ * is perfectly valid.
+ *
+ */
+public class IfElseTask extends Task {
+
+ private boolean mCondition;
+ private boolean mConditionIsSet = false;
+ private Sequential mThen;
+ private Sequential mElse;
+
+ /**
+ * Sets the condition value
+ */
+ public void setCondition(boolean condition) {
+ mCondition = condition;
+ mConditionIsSet = true;
+ }
+
+ /**
+ * Creates and returns the <then> {@link Sequential}
+ */
+ public Object createThen() {
+ mThen = new Sequential();
+ return mThen;
+ }
+
+ /**
+ * Creates and returns the <else> {@link Sequential}
+ */
+ public Object createElse() {
+ mElse = new Sequential();
+ return mElse;
+ }
+
+ @Override
+ public void execute() throws BuildException {
+ if (mConditionIsSet == false) {
+ throw new BuildException("Condition has not been set.");
+ }
+
+ // need at least one.
+ if (mThen == null && mElse == null) {
+ throw new BuildException("Need at least <then> or <else>");
+ }
+
+ if (mCondition) {
+ if (mThen != null) {
+ mThen.execute();
+ }
+ } else {
+ if (mElse != null) {
+ mElse.execute();
+ }
+ }
+ }
+}
diff --git a/anttasks/src/com/android/ant/MultiApkExportTask.java b/anttasks/src/com/android/ant/MultiApkExportTask.java
index 1babcf782..89123d842 100644
--- a/anttasks/src/com/android/ant/MultiApkExportTask.java
+++ b/anttasks/src/com/android/ant/MultiApkExportTask.java
@@ -53,6 +53,13 @@ import javax.xml.xpath.XPathFactory;
*/
public class MultiApkExportTask extends Task {
+ /**
+ * Class representing one apk that needs to be generated. This contains
+ * which project it must be created from, and which filters should be used.
+ *
+ * This class is meant to be sortable in a way that allows generation of the buildInfo
+ * value that goes in the composite versionCode.
+ */
private static class ExportData implements Comparable<ExportData> {
String relativePath;
@@ -169,6 +176,10 @@ public class MultiApkExportTask extends Task {
}
System.out.println("versionCode: " + version);
+ // checks whether the projects can be signed.
+ boolean canSign = true;
+
+
ExportData[] projects = getProjects(antProject, appPackage);
HashSet<String> compiledProject = new HashSet<String>();
@@ -223,7 +234,6 @@ public class MultiApkExportTask extends Task {
// set the output file names/paths. Keep all the temporary files in the project
// folder, and only put the final file (which is different depending on whether
// the file can be signed) locally.
- boolean canSign = false;
// read the base name from the build.xml file.
String name = null;