diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:16 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:16 -0800 |
commit | 82ea7a177797b844b252effea5c7c7c5d63ea4ac (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /anttasks | |
parent | c9432be76d50a527da232d518f633add2f76242b (diff) | |
download | sdk-82ea7a177797b844b252effea5c7c7c5d63ea4ac.zip sdk-82ea7a177797b844b252effea5c7c7c5d63ea4ac.tar.gz sdk-82ea7a177797b844b252effea5c7c7c5d63ea4ac.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'anttasks')
-rw-r--r-- | anttasks/.classpath | 9 | ||||
-rw-r--r-- | anttasks/.project | 17 | ||||
-rw-r--r-- | anttasks/Android.mk | 17 | ||||
-rw-r--r-- | anttasks/src/Android.mk | 29 | ||||
-rw-r--r-- | anttasks/src/com/android/ant/AaptExecLoopTask.java | 218 | ||||
-rw-r--r-- | anttasks/src/com/android/ant/ApkBuilderTask.java | 293 | ||||
-rw-r--r-- | anttasks/src/com/android/ant/SetupTask.java | 208 |
7 files changed, 0 insertions, 791 deletions
diff --git a/anttasks/.classpath b/anttasks/.classpath deleted file mode 100644 index d6ce15a..0000000 --- a/anttasks/.classpath +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry combineaccessrules="false" kind="src" path="/SdkLib"/> - <classpathentry kind="var" path="ANDROID_SRC/prebuilt/common/ant/ant.jar"/> - <classpathentry combineaccessrules="false" kind="src" path="/ApkBuilder"/> - <classpathentry kind="output" path="bin"/> -</classpath> diff --git a/anttasks/.project b/anttasks/.project deleted file mode 100644 index aed1b61..0000000 --- a/anttasks/.project +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<projectDescription> - <name>ant-tasks</name> - <comment></comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> -</projectDescription> diff --git a/anttasks/Android.mk b/anttasks/Android.mk deleted file mode 100644 index 15ee903..0000000 --- a/anttasks/Android.mk +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2008 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. -# -ANTTASKS_LOCAL_DIR := $(call my-dir) -include $(ANTTASKS_LOCAL_DIR)/src/Android.mk diff --git a/anttasks/src/Android.mk b/anttasks/src/Android.mk deleted file mode 100644 index 94d6d3f..0000000 --- a/anttasks/src/Android.mk +++ /dev/null @@ -1,29 +0,0 @@ -# -# Copyright (C) 2008 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. -# -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES := $(call all-subdir-java-files) - -LOCAL_JAVA_LIBRARIES := \ - sdklib \ - apkbuilder \ - ant - -LOCAL_MODULE := anttasks - -include $(BUILD_HOST_JAVA_LIBRARY) - diff --git a/anttasks/src/com/android/ant/AaptExecLoopTask.java b/anttasks/src/com/android/ant/AaptExecLoopTask.java deleted file mode 100644 index d2c7162..0000000 --- a/anttasks/src/com/android/ant/AaptExecLoopTask.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * 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 com.android.ant; - -import com.android.sdklib.project.ApkConfigurationHelper; -import com.android.sdklib.project.ProjectProperties; -import com.android.sdklib.project.ProjectProperties.PropertyType; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.taskdefs.ExecTask; -import org.apache.tools.ant.types.Path; - -import java.io.File; -import java.util.Map; -import java.util.Set; -import java.util.Map.Entry; - -/** - * Task able to run an Exec task on aapt several times. - * It does not follow the exec task format, instead it has its own parameters, which maps - * directly to aapt. - * - */ -public final class AaptExecLoopTask extends Task { - - private String mExecutable; - private String mCommand; - private String mManifest; - private String mResources; - private String mAssets; - private String mAndroidJar; - private String mOutFolder; - private String mBaseName; - - /** - * Sets the value of the "executable" attribute. - * @param executable the value. - */ - public void setExecutable(String executable) { - mExecutable = executable; - } - - /** - * Sets the value of the "command" attribute. - * @param command the value. - */ - public void setCommand(String command) { - mCommand = command; - } - - /** - * Sets the value of the "manifest" attribute. - * @param manifest the value. - */ - public void setManifest(Path manifest) { - mManifest = manifest.toString(); - } - - /** - * Sets the value of the "resources" attribute. - * @param resources the value. - */ - public void setResources(Path resources) { - mResources = resources.toString(); - } - - /** - * Sets the value of the "assets" attribute. - * @param assets the value. - */ - public void setAssets(Path assets) { - mAssets = assets.toString(); - } - - /** - * Sets the value of the "androidjar" attribute. - * @param androidJar the value. - */ - public void setAndroidjar(Path androidJar) { - mAndroidJar = androidJar.toString(); - } - - /** - * Sets the value of the "outfolder" attribute. - * @param outFolder the value. - */ - public void setOutfolder(Path outFolder) { - mOutFolder = outFolder.toString(); - } - - /** - * Sets the value of the "basename" attribute. - * @param baseName the value. - */ - public void setBasename(String baseName) { - mBaseName = baseName; - } - - /* - * (non-Javadoc) - * - * Executes the loop. Based on the values inside default.properties, this will - * create alternate temporary ap_ files. - * - * @see org.apache.tools.ant.Task#execute() - */ - @Override - public void execute() throws BuildException { - Project taskProject = getProject(); - - // first do a full resource package - createPackage(null /*configName*/, null /*resourceFilter*/); - - // now see if we need to create file with filtered resources. - // Get the project base directory. - File baseDir = taskProject.getBaseDir(); - ProjectProperties properties = ProjectProperties.load(baseDir.getAbsolutePath(), - PropertyType.DEFAULT); - - Map<String, String> apkConfigs = ApkConfigurationHelper.getConfigs(properties); - if (apkConfigs.size() > 0) { - Set<Entry<String, String>> entrySet = apkConfigs.entrySet(); - for (Entry<String, String> entry : entrySet) { - createPackage(entry.getKey(), entry.getValue()); - } - } - } - - /** - * Creates a resource package. - * @param configName the name of the filter config. Can be null in which case a full resource - * package will be generated. - * @param resourceFilter the resource configuration filter to pass to aapt (if configName is - * non null) - */ - private void createPackage(String configName, String resourceFilter) { - Project taskProject = getProject(); - - if (configName == null || resourceFilter == null) { - System.out.println("Creating full resource package..."); - } else { - System.out.println(String.format( - "Creating resource package for config '%1$s' (%2$s)...", - configName, resourceFilter)); - } - - // create a task for the default apk. - ExecTask task = new ExecTask(); - task.setExecutable(mExecutable); - task.setFailonerror(true); - - // aapt command. Only "package" is supported at this time really. - task.createArg().setValue(mCommand); - - // filters if needed - if (configName != null && resourceFilter != null) { - task.createArg().setValue("-c"); - task.createArg().setValue(resourceFilter); - } - - // force flag - task.createArg().setValue("-f"); - - // manifest location - task.createArg().setValue("-M"); - task.createArg().setValue(mManifest); - - // resources location - task.createArg().setValue("-S"); - task.createArg().setValue(mResources); - - // assets location. this may not exists, and aapt doesn't like it, so we check first. - File assets = new File(mAssets); - if (assets.isDirectory()) { - task.createArg().setValue("-A"); - task.createArg().setValue(mAssets); - } - - // android.jar - task.createArg().setValue("-I"); - task.createArg().setValue(mAndroidJar); - - // out file. This is based on the outFolder, baseName, and the configName (if applicable) - String filename; - if (configName != null && resourceFilter != null) { - filename = mBaseName + "-" + configName + ".ap_"; - } else { - filename = mBaseName + ".ap_"; - } - - File file = new File(mOutFolder, filename); - task.createArg().setValue("-F"); - task.createArg().setValue(file.getAbsolutePath()); - - // final setup of the task - task.setProject(taskProject); - task.setOwningTarget(getOwningTarget()); - - // execute it. - task.execute(); - } -} diff --git a/anttasks/src/com/android/ant/ApkBuilderTask.java b/anttasks/src/com/android/ant/ApkBuilderTask.java deleted file mode 100644 index 22729ec..0000000 --- a/anttasks/src/com/android/ant/ApkBuilderTask.java +++ /dev/null @@ -1,293 +0,0 @@ -/* - * 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 com.android.ant; - -import com.android.apkbuilder.ApkBuilder; -import com.android.apkbuilder.ApkBuilder.ApkFile; -import com.android.sdklib.project.ApkConfigurationHelper; -import com.android.sdklib.project.ProjectProperties; -import com.android.sdklib.project.ProjectProperties.PropertyType; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.ProjectComponent; -import org.apache.tools.ant.Task; -import org.apache.tools.ant.types.Path; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.Map; -import java.util.Set; -import java.util.Map.Entry; - -public class ApkBuilderTask extends Task { - - /** - * Class to represent nested elements. Since they all have only one attribute ('path'), the - * same class can be used for all the nested elements (zip, file, sourcefolder, jarfolder, - * nativefolder). - */ - public final static class Value extends ProjectComponent { - String mPath; - - /** - * Sets the value of the "path" attribute. - * @param path the value. - */ - public void setPath(Path path) { - mPath = path.toString(); - } - } - - private String mOutFolder; - private String mBaseName; - private boolean mVerbose = false; - private boolean mSigned = true; - - private final ArrayList<Value> mZipList = new ArrayList<Value>(); - private final ArrayList<Value> mFileList = new ArrayList<Value>(); - private final ArrayList<Value> mSourceList = new ArrayList<Value>(); - private final ArrayList<Value> mJarList = new ArrayList<Value>(); - private final ArrayList<Value> mNativeList = new ArrayList<Value>(); - - private final ArrayList<FileInputStream> mZipArchives = new ArrayList<FileInputStream>(); - private final ArrayList<File> mArchiveFiles = new ArrayList<File>(); - private final ArrayList<ApkFile> mJavaResources = new ArrayList<ApkFile>(); - private final ArrayList<FileInputStream> mResourcesJars = new ArrayList<FileInputStream>(); - private final ArrayList<ApkFile> mNativeLibraries = new ArrayList<ApkFile>(); - - /** - * Sets the value of the "outfolder" attribute. - * @param outFolder the value. - */ - public void setOutfolder(Path outFolder) { - mOutFolder = outFolder.toString(); - } - - /** - * Sets the value of the "basename" attribute. - * @param baseName the value. - */ - public void setBasename(String baseName) { - mBaseName = baseName; - } - - /** - * Sets the value of the "verbose" attribute. - * @param verbose the value. - */ - public void setVerbose(boolean verbose) { - mVerbose = verbose; - } - - /** - * Sets the value of the "signed" attribute. - * @param signed the value. - */ - public void setSigned(boolean signed) { - mSigned = signed; - } - - /** - * Returns an object representing a nested <var>zip</var> element. - */ - public Object createZip() { - Value zip = new Value(); - mZipList.add(zip); - return zip; - } - - /** - * Returns an object representing a nested <var>file</var> element. - */ - public Object createFile() { - Value file = new Value(); - mFileList.add(file); - return file; - } - - /** - * Returns an object representing a nested <var>sourcefolder</var> element. - */ - public Object createSourcefolder() { - Value file = new Value(); - mSourceList.add(file); - return file; - } - - /** - * Returns an object representing a nested <var>jarfolder</var> element. - */ - public Object createJarfolder() { - Value file = new Value(); - mJarList.add(file); - return file; - } - - /** - * Returns an object representing a nested <var>nativefolder</var> element. - */ - public Object createNativefolder() { - Value file = new Value(); - mNativeList.add(file); - return file; - } - - @Override - public void execute() throws BuildException { - Project taskProject = getProject(); - - ApkBuilder apkBuilder = new ApkBuilder(); - apkBuilder.setVerbose(mVerbose); - apkBuilder.setSignedPackage(mSigned); - - try { - // setup the list of everything that needs to go in the archive. - - // go through the list of zip files to add. This will not include - // the resource package, which is handled separaly for each apk to create. - for (Value v : mZipList) { - FileInputStream input = new FileInputStream(v.mPath); - mZipArchives.add(input); - } - - // now go through the list of file to directly add the to the list. - for (Value v : mFileList) { - mArchiveFiles.add(ApkBuilder.getInputFile(v.mPath)); - } - - // now go through the list of file to directly add the to the list. - for (Value v : mSourceList) { - ApkBuilder.processSourceFolderForResource(v.mPath, mJavaResources); - } - - // now go through the list of jar folders. - for (Value v : mJarList) { - ApkBuilder.processJarFolder(v.mPath, mResourcesJars); - } - - // now the native lib folder. - for (Value v : mNativeList) { - String parameter = v.mPath; - File f = new File(parameter); - - // compute the offset to get the relative path - int offset = parameter.length(); - if (parameter.endsWith(File.separator) == false) { - offset++; - } - - ApkBuilder.processNativeFolder(offset, f, mNativeLibraries); - } - - - // first do a full resource package - createApk(apkBuilder, null /*configName*/, null /*resourceFilter*/); - - // now see if we need to create file with filtered resources. - // Get the project base directory. - File baseDir = taskProject.getBaseDir(); - ProjectProperties properties = ProjectProperties.load(baseDir.getAbsolutePath(), - PropertyType.DEFAULT); - - Map<String, String> apkConfigs = ApkConfigurationHelper.getConfigs(properties); - if (apkConfigs.size() > 0) { - Set<Entry<String, String>> entrySet = apkConfigs.entrySet(); - for (Entry<String, String> entry : entrySet) { - createApk(apkBuilder, entry.getKey(), entry.getValue()); - } - } - } catch (FileNotFoundException e) { - throw new BuildException(e); - } catch (IllegalArgumentException e) { - throw new BuildException(e); - } - } - - /** - * Creates an application package. - * @param apkBuilder - * @param configName the name of the filter config. Can be null in which case a full resource - * package will be generated. - * @param resourceFilter the resource configuration filter to pass to aapt (if configName is - * non null) - * @throws FileNotFoundException - */ - private void createApk(ApkBuilder apkBuilder, String configName, String resourceFilter) - throws FileNotFoundException { - // All the files to be included in the archive have already been prep'ed up, except - // the resource package. - // figure out its name. - String filename; - if (configName != null && resourceFilter != null) { - filename = mBaseName + "-" + configName + ".ap_"; - } else { - filename = mBaseName + ".ap_"; - } - - // now we add it to the list of zip archive (it's just a zip file). - - // it's used as a zip archive input - FileInputStream resoucePackageZipFile = new FileInputStream(new File(mOutFolder, filename)); - mZipArchives.add(resoucePackageZipFile); - - // prepare the filename to generate. Same thing as the resource file. - if (configName != null && resourceFilter != null) { - filename = mBaseName + "-" + configName; - } else { - filename = mBaseName; - } - - if (mSigned) { - filename = filename + "-debug.apk"; - } else { - filename = filename + "-unsigned.apk"; - } - - if (configName == null || resourceFilter == null) { - if (mSigned) { - System.out.println(String.format( - "Creating %s and signing it with a debug key...", filename)); - } else { - System.out.println(String.format( - "Creating %s for release...", filename)); - } - } else { - if (mSigned) { - System.out.println(String.format( - "Creating %1$s (with %2$s) and signing it with a debug key...", - filename, resourceFilter)); - } else { - System.out.println(String.format( - "Creating %1$s (with %2$s) for release...", - filename, resourceFilter)); - } - } - - File f = new File(mOutFolder, filename); - - // and generate the apk - apkBuilder.createPackage(f.getAbsoluteFile(), mZipArchives, - mArchiveFiles, mJavaResources, mResourcesJars, mNativeLibraries); - - // we are done. We need to remove the resource package from the list of zip archives - // in case we have another apk to generate. - mZipArchives.remove(resoucePackageZipFile); - } -} diff --git a/anttasks/src/com/android/ant/SetupTask.java b/anttasks/src/com/android/ant/SetupTask.java deleted file mode 100644 index d425a2f..0000000 --- a/anttasks/src/com/android/ant/SetupTask.java +++ /dev/null @@ -1,208 +0,0 @@ -/* - * 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 com.android.ant; - -import com.android.sdklib.IAndroidTarget; -import com.android.sdklib.ISdkLog; -import com.android.sdklib.SdkManager; -import com.android.sdklib.IAndroidTarget.IOptionalLibrary; -import com.android.sdklib.project.ProjectProperties; - -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.Project; -import org.apache.tools.ant.taskdefs.ImportTask; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.types.Path.PathElement; - -import java.io.File; -import java.util.ArrayList; -import java.util.HashSet; - -/** - * Setup/Import Ant task. This task accomplishes: - * <ul> - * <li>Gets the project target hash string from {@link ProjectProperties#PROPERTY_TARGET}, - * and resolves it to get the project's {@link IAndroidTarget}.</li> - * <li>Sets up properties so that aapt can find the android.jar in the resolved target.</li> - * <li>Sets up the boot classpath ref so that the <code>javac</code> task knows where to find - * the libraries. This includes the default android.jar from the resolved target but also optional - * libraries provided by the target (if any, when the target is an add-on).</li> - * <li>Imports the build rules located in the resolved target so that the build actually does - * something. This can be disabled with the attribute <var>import</var> set to <code>false</code> - * </li></ul> - * - * This is used in build.xml/template. - * - */ -public final class SetupTask extends ImportTask { - private final static String ANDROID_RULES = "android_rules.xml"; - - // ant property with the path to the android.jar - private final static String PROPERTY_ANDROID_JAR = "android-jar"; - // ant property with the path to the framework.jar - private final static String PROPERTY_ANDROID_AIDL = "android-aidl"; - // ant property with the path to the aapt tool - private final static String PROPERTY_AAPT = "aapt"; - // ant property with the path to the aidl tool - private final static String PROPERTY_AIDL = "aidl"; - // ant property with the path to the dx tool - private final static String PROPERTY_DX = "dx"; - // ref id to the <path> object containing all the boot classpaths. - private final static String REF_CLASSPATH = "android.target.classpath"; - - private boolean mDoImport = true; - - @Override - public void execute() throws BuildException { - Project antProject = getProject(); - - // get the SDK location - String sdkLocation = antProject.getProperty(ProjectProperties.PROPERTY_SDK); - - // check if it's valid and exists - if (sdkLocation == null || sdkLocation.length() == 0) { - throw new BuildException("SDK Location is not set."); - } - - File sdk = new File(sdkLocation); - if (sdk.isDirectory() == false) { - throw new BuildException(String.format("SDK Location '%s' is not valid.", sdkLocation)); - } - - // get the target property value - String targetHashString = antProject.getProperty(ProjectProperties.PROPERTY_TARGET); - if (targetHashString == null) { - throw new BuildException("Android Target is not set."); - } - - // load up the sdk targets. - final ArrayList<String> messages = new ArrayList<String>(); - SdkManager manager = SdkManager.createManager(sdkLocation, new ISdkLog() { - public void error(Throwable t, String errorFormat, Object... args) { - if (errorFormat != null) { - messages.add(String.format("Error: " + errorFormat, args)); - } - if (t != null) { - messages.add("Error: " + t.getMessage()); - } - } - - public void printf(String msgFormat, Object... args) { - messages.add(String.format(msgFormat, args)); - } - - public void warning(String warningFormat, Object... args) { - messages.add(String.format("Warning: " + warningFormat, args)); - } - }); - - if (manager == null) { - // since we failed to parse the SDK, lets display the parsing output. - for (String msg : messages) { - System.out.println(msg); - } - throw new BuildException("Failed to parse SDK content."); - } - - // resolve it - IAndroidTarget androidTarget = manager.getTargetFromHashString(targetHashString); - - if (androidTarget == null) { - throw new BuildException(String.format( - "Unable to resolve target '%s'", targetHashString)); - } - - // display it - System.out.println("Project Target: " + androidTarget.getName()); - if (androidTarget.isPlatform() == false) { - System.out.println("Vendor: " + androidTarget.getVendor()); - System.out.println("Platform Version: " + androidTarget.getApiVersionName()); - } - System.out.println("API level: " + androidTarget.getApiVersionNumber()); - - // sets up the properties to find android.jar/framework.aidl/target tools - String androidJar = androidTarget.getPath(IAndroidTarget.ANDROID_JAR); - antProject.setProperty(PROPERTY_ANDROID_JAR, androidJar); - - antProject.setProperty(PROPERTY_ANDROID_AIDL, - androidTarget.getPath(IAndroidTarget.ANDROID_AIDL)); - antProject.setProperty(PROPERTY_AAPT, androidTarget.getPath(IAndroidTarget.AAPT)); - antProject.setProperty(PROPERTY_AIDL, androidTarget.getPath(IAndroidTarget.AIDL)); - antProject.setProperty(PROPERTY_DX, androidTarget.getPath(IAndroidTarget.DX)); - - // sets up the boot classpath - - // create the Path object - Path bootclasspath = new Path(antProject); - - // create a PathElement for the framework jar - PathElement element = bootclasspath.createPathElement(); - element.setPath(androidJar); - - // create PathElement for each optional library. - IOptionalLibrary[] libraries = androidTarget.getOptionalLibraries(); - if (libraries != null) { - HashSet<String> visitedJars = new HashSet<String>(); - for (IOptionalLibrary library : libraries) { - String jarPath = library.getJarPath(); - if (visitedJars.contains(jarPath) == false) { - visitedJars.add(jarPath); - - element = bootclasspath.createPathElement(); - element.setPath(library.getJarPath()); - } - } - } - - // finally sets the path in the project with a reference - antProject.addReference(REF_CLASSPATH, bootclasspath); - - // find the file to import, and import it. - String templateFolder = androidTarget.getPath(IAndroidTarget.TEMPLATES); - - // Now the import section. This is only executed if the task actually has to import a file. - if (mDoImport) { - // make sure the file exists. - File templates = new File(templateFolder); - if (templates.isDirectory() == false) { - throw new BuildException(String.format("Template directory '%s' is missing.", - templateFolder)); - } - - // now check the rules file exists. - File rules = new File(templateFolder, ANDROID_RULES); - if (rules.isFile() == false) { - throw new BuildException(String.format("Build rules file '%s' is missing.", - templateFolder)); - } - - // set the file location to import - setFile(rules.getAbsolutePath()); - - // and import - super.execute(); - } - } - - /** - * Sets the value of the "import" attribute. - * @param value the value. - */ - public void setImport(boolean value) { - mDoImport = value; - } -} |