aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--anttasks/src/com/android/ant/AidlExecTask.java47
-rw-r--r--anttasks/src/com/android/ant/ComputeDependencyTask.java20
-rw-r--r--anttasks/src/com/android/ant/MultiFilesTask.java49
-rw-r--r--changes.txt1
-rw-r--r--eclipse/changes.txt5
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java89
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java5
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java10
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java10
-rw-r--r--files/ant/build.xml9
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java2
-rw-r--r--testapps/aidlTest/libWithAidl/.classpath8
-rw-r--r--testapps/aidlTest/libWithAidl/.project33
-rw-r--r--testapps/aidlTest/libWithAidl/AndroidManifest.xml18
-rw-r--r--testapps/aidlTest/libWithAidl/ant.properties17
-rw-r--r--testapps/aidlTest/libWithAidl/build.xml90
-rw-r--r--testapps/aidlTest/libWithAidl/proguard-project.txt20
-rw-r--r--testapps/aidlTest/libWithAidl/project.properties13
-rw-r--r--testapps/aidlTest/libWithAidl/res/layout/main.xml25
-rw-r--r--testapps/aidlTest/libWithAidl/res/values/strings.xml4
-rw-r--r--testapps/aidlTest/libWithAidl/src/com/android/tests/aidl/lib/MyParcelable.aidl3
-rw-r--r--testapps/aidlTest/libWithAidl/src/com/android/tests/aidl/lib/MyParcelable.java46
-rw-r--r--testapps/aidlTest/mainProject/.classpath8
-rw-r--r--testapps/aidlTest/mainProject/.project33
-rw-r--r--testapps/aidlTest/mainProject/AndroidManifest.xml19
-rw-r--r--testapps/aidlTest/mainProject/ant.properties17
-rw-r--r--testapps/aidlTest/mainProject/build.xml90
-rw-r--r--testapps/aidlTest/mainProject/proguard-project.txt20
-rw-r--r--testapps/aidlTest/mainProject/project.properties15
-rw-r--r--testapps/aidlTest/mainProject/res/values/strings.xml4
-rw-r--r--testapps/aidlTest/mainProject/src/com/android/tests/aidl/main/IRemoteService.aidl24
-rw-r--r--testapps/aidlTest/mainProject/src/com/android/tests/aidl/main/MyActivity.java32
-rw-r--r--testapps/customViewTest/libWithCustomView/.project2
-rw-r--r--testapps/customViewTest/mainProject/.project2
34 files changed, 735 insertions, 55 deletions
diff --git a/anttasks/src/com/android/ant/AidlExecTask.java b/anttasks/src/com/android/ant/AidlExecTask.java
index bead9e0..1315dd7 100644
--- a/anttasks/src/com/android/ant/AidlExecTask.java
+++ b/anttasks/src/com/android/ant/AidlExecTask.java
@@ -16,11 +16,15 @@
package com.android.ant;
+import com.android.sdklib.io.FileOp;
+
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.ExecTask;
import org.apache.tools.ant.types.Path;
+import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -40,8 +44,10 @@ public class AidlExecTask extends MultiFilesTask {
private String mExecutable;
private String mFramework;
+ private Path mLibraryBinFolderPath;
private String mGenFolder;
private final ArrayList<Path> mPaths = new ArrayList<Path>();
+ private String mAidlOutFolder;
private class AidlProcessor implements SourceProcessor {
@@ -68,6 +74,13 @@ public class AidlExecTask extends MultiFilesTask {
task.createArg().setValue("-I" + importFolder);
}
+ // add all the library aidl folders to access parcelables that are in libraries
+ if (mLibraryBinFolderPath != null) {
+ for (String importFolder : mLibraryBinFolderPath.list()) {
+ task.createArg().setValue("-I" + importFolder);
+ }
+ }
+
// set auto dependency file creation
task.createArg().setValue("-a");
@@ -75,6 +88,24 @@ public class AidlExecTask extends MultiFilesTask {
// execute it.
task.execute();
+
+ // if we reach here, it was successful (execute throws an exception otherwise).
+ // Copy the file into the bin/aidl directory.
+ String relative = filePath.substring(sourceFolder.length());
+ if (relative.charAt(0) == '/' || relative.charAt(0) == File.separatorChar) {
+ relative = relative.substring(1);
+ }
+
+ try {
+ File dest = new File(mAidlOutFolder, relative);
+ File parent = dest.getParentFile();
+ parent.mkdirs();
+
+ FileOp op = new FileOp();
+ op.copyFile(new File(filePath), dest);
+ } catch (IOException e) {
+ throw new BuildException(e);
+ }
}
@Override
@@ -102,7 +133,6 @@ public class AidlExecTask extends MultiFilesTask {
break;
}
}
-
}
/**
@@ -117,10 +147,21 @@ public class AidlExecTask extends MultiFilesTask {
mFramework = TaskHelper.checkSinglePath("framework", value);
}
+ public void setLibraryBinFolderPathRefid(String libraryBinFolderPathRefid) {
+ Object libBinRef = getProject().getReference(libraryBinFolderPathRefid);
+ if (libBinRef instanceof Path) {
+ mLibraryBinFolderPath = (Path) libBinRef;
+ }
+ }
+
public void setGenFolder(Path value) {
mGenFolder = TaskHelper.checkSinglePath("genFolder", value);
}
+ public void setaidlOutFolder(Path value) {
+ mAidlOutFolder = TaskHelper.checkSinglePath("aidlOutFolder", value);
+ }
+
public Path createSource() {
Path p = new Path(getProject());
mPaths.add(p);
@@ -138,8 +179,10 @@ public class AidlExecTask extends MultiFilesTask {
if (mGenFolder == null) {
throw new BuildException("AidlExecTask's 'genFolder' is required.");
}
+ if (mAidlOutFolder == null) {
+ throw new BuildException("AidlExecTask's 'aidlOutFolder' is required.");
+ }
processFiles(new AidlProcessor(), mPaths, mGenFolder);
}
-
}
diff --git a/anttasks/src/com/android/ant/ComputeDependencyTask.java b/anttasks/src/com/android/ant/ComputeDependencyTask.java
index 62d5917..62572c8 100644
--- a/anttasks/src/com/android/ant/ComputeDependencyTask.java
+++ b/anttasks/src/com/android/ant/ComputeDependencyTask.java
@@ -58,6 +58,7 @@ public class ComputeDependencyTask extends GetLibraryListTask {
private String mLibraryPackagesOut;
private String mJarLibraryPathOut;
private String mLibraryNativeFolderPathOut;
+ private String mLibraryBinFolderPathOut;
private int mTargetApi = -1;
private boolean mVerbose = false;
@@ -77,6 +78,10 @@ public class ComputeDependencyTask extends GetLibraryListTask {
mJarLibraryPathOut = jarLibraryPathOut;
}
+ public void setLibraryBinFolderPathOut(String libraryBinFolderPathOut) {
+ mLibraryBinFolderPathOut = libraryBinFolderPathOut;
+ }
+
public void setLibraryNativeFolderPathOut(String libraryNativeFolderPathOut) {
mLibraryNativeFolderPathOut = libraryNativeFolderPathOut;
}
@@ -110,6 +115,9 @@ public class ComputeDependencyTask extends GetLibraryListTask {
if (mLibraryNativeFolderPathOut == null) {
throw new BuildException("Missing attribute libraryNativeFolderPathOut");
}
+ if (mLibraryBinFolderPathOut == null) {
+ throw new BuildException("Missing attribute libraryBinFolderPathOut");
+ }
if (mTargetApi == -1) {
throw new BuildException("Missing attribute targetApi");
}
@@ -123,6 +131,7 @@ public class ComputeDependencyTask extends GetLibraryListTask {
final Path manifestFilePath = new Path(antProject);
final Path resFolderPath = new Path(antProject);
final Path nativeFolderPath = new Path(antProject);
+ final Path binFolderPath = new Path(antProject);
final StringBuilder packageStrBuilder = new StringBuilder();
LibraryProcessorFor3rdPartyJars processor = new LibraryProcessorFor3rdPartyJars() {
@@ -144,12 +153,17 @@ public class ComputeDependencyTask extends GetLibraryListTask {
element = resFolderPath.createPathElement();
element.setPath(libRootPath + "/" + SdkConstants.FD_RESOURCES);
-
// get the folder for the native libraries. Always $PROJECT/libs
- // FIXME: support renamed folder.
+ // FIXME: support renamed folder and/or move libs to bin/libs/
element = nativeFolderPath.createPathElement();
element.setPath(libRootPath + "/" + SdkConstants.FD_NATIVE_LIBS);
+ // get the bin folder. $PROJECT/bin for now
+ // FIXME: support renamed folder.
+ element = binFolderPath.createPathElement();
+ element.setPath(libRootPath + "/" + SdkConstants.FD_OUTPUT +
+ "/" + SdkConstants.FD_AIDL);
+
// get the package from the manifest.
FileWrapper manifest = new FileWrapper(libRootPath,
SdkConstants.FN_ANDROID_MANIFEST_XML);
@@ -206,6 +220,7 @@ public class ComputeDependencyTask extends GetLibraryListTask {
// (the task themselves can handle a ref to an empty Path)
antProject.addReference(mLibraryNativeFolderPathOut, nativeFolderPath);
antProject.addReference(mLibraryManifestFilePathOut, manifestFilePath);
+ antProject.addReference(mLibraryBinFolderPathOut, binFolderPath);
// the rest is done only if there's a library.
if (hasLibraries) {
@@ -249,6 +264,5 @@ public class ComputeDependencyTask extends GetLibraryListTask {
if (mVerbose) {
System.out.println();
}
-
}
}
diff --git a/anttasks/src/com/android/ant/MultiFilesTask.java b/anttasks/src/com/android/ant/MultiFilesTask.java
index 7d4a884..c90a0b9 100644
--- a/anttasks/src/com/android/ant/MultiFilesTask.java
+++ b/anttasks/src/com/android/ant/MultiFilesTask.java
@@ -61,7 +61,7 @@ class MultiFilesTask extends BuildTypedTask {
}
// gather all the source files from all the source folders.
- Map<String, String> sourceFiles = getFileListByExtension(taskProject, sourceFolders,
+ Map<String, String> sourceFiles = getFilesByNameEntryFilter(sourceFolders,
"**/*." + extension);
if (sourceFiles.size() > 0) {
processor.displayMessage(DisplayType.FOUND, sourceFiles.size());
@@ -69,14 +69,15 @@ class MultiFilesTask extends BuildTypedTask {
// go look for all dependency files in the gen folder. This will have all dependency
// files but we can filter them based on the first pre-req file.
- Map<String, String> depFiles = getFileListByExtension(taskProject, genFolder, "**/*.d");
+ Iterator<?> depFiles = getFilesByNameEntryFilter(genFolder, "**/*.d");
// parse all the dep files and keep the ones that are of the proper type and check if
// they require compilation again.
Map<String, String> toCompile = new HashMap<String, String>();
ArrayList<File> toRemove = new ArrayList<File>();
ArrayList<String> depsToRemove = new ArrayList<String>();
- for (String depFile : depFiles.keySet()) {
+ while (depFiles.hasNext()) {
+ String depFile = depFiles.next().toString();
DependencyGraph graph = new DependencyGraph(depFile, null /*watchPaths*/);
// get the source file. it's the first item in the pre-reqs
@@ -145,34 +146,44 @@ class MultiFilesTask extends BuildTypedTask {
}
}
- private Map<String, String> getFileListByExtension(Project taskProject,
- List<String> sourceFolders, String filter) {
- HashMap<String, String> sourceFiles = new HashMap<String, String>();
- for (String sourceFolder : sourceFolders) {
- sourceFiles.putAll(getFileListByExtension(taskProject, sourceFolder, filter));
+ /**
+ * Returns a list of files found in given folders, all matching a given filter.
+ * The result is a map of (file, folder).
+ * @param folders the folders to search
+ * @param filter the filter for the files. Typically a glob.
+ * @return a map of (file, folder)
+ */
+ private Map<String, String> getFilesByNameEntryFilter(List<String> folders, String filter) {
+ Map<String, String> sourceFiles = new HashMap<String, String>();
+
+ for (String folder : folders) {
+ Iterator<?> iterator = getFilesByNameEntryFilter(folder, filter);
+
+ while (iterator.hasNext()) {
+ sourceFiles.put(iterator.next().toString(), folder);
+ }
}
return sourceFiles;
}
- private Map<String, String> getFileListByExtension(Project taskProject,
- String sourceFolder, String filter) {
- HashMap<String, String> sourceFiles = new HashMap<String, String>();
+ /**
+ * Returns a list of files found in a given folder, matching a given filter.
+ * @param folder the folder to search
+ * @param filter the filter for the files. Typically a glob.
+ * @return an iterator.
+ */
+ private Iterator<?> getFilesByNameEntryFilter(String folder, String filter) {
+ Project taskProject = getProject();
// create a fileset to find all the files in the folder
FileSet fs = new FileSet();
fs.setProject(taskProject);
- fs.setDir(new File(sourceFolder));
+ fs.setDir(new File(folder));
NameEntry include = fs.createInclude();
include.setName(filter);
// loop through the results of the file set
- Iterator<?> iter = fs.iterator();
- while (iter.hasNext()) {
- sourceFiles.put(iter.next().toString(), sourceFolder);
- }
-
- return sourceFiles;
+ return fs.iterator();
}
-
}
diff --git a/changes.txt b/changes.txt
index 67f6cf2..835e1b6 100644
--- a/changes.txt
+++ b/changes.txt
@@ -6,6 +6,7 @@ Revision 20:
environment variable (requires updating the project's build.xml file)
* Fixed issues with compilation, deployment of test projects and running tests.
Both separate test projects and self-contained app+test projects now work.
+ * Aidl files from library projects are now in the import list.
Revision 19:
- Fix GPU rendering
diff --git a/eclipse/changes.txt b/eclipse/changes.txt
index e2de7c7..5fa4e4b 100644
--- a/eclipse/changes.txt
+++ b/eclipse/changes.txt
@@ -1,4 +1,7 @@
-19.0.0
+20.0.0
+* Aidl files from library projects are now in the import list.
+
+19.0.0 (does not exist)
18.0.0
* Fix bug 27940 where exporting release package doesn't recompile libraries
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java
index c6d3158..e9bb74b 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/AidlProcessor.java
@@ -23,6 +23,8 @@ import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs;
import com.android.ide.eclipse.adt.internal.preferences.AdtPrefs.BuildVerbosity;
import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper;
import com.android.sdklib.IAndroidTarget;
+import com.android.sdklib.SdkConstants;
+import com.android.sdklib.io.FileOp;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
@@ -39,6 +41,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.jdt.core.IJavaProject;
+import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
@@ -93,13 +96,13 @@ public class AidlProcessor extends SourceProcessor {
@Override
protected void doCompileFiles(List<IFile> sources, BaseBuilder builder,
IProject project, IAndroidTarget projectTarget, int targetApi,
- List<IPath> sourceFolders, List<IFile> notCompiledOut, IProgressMonitor monitor)
- throws CoreException {
+ List<IPath> sourceFolders, List<IFile> notCompiledOut, List<File> libraryProjectsOut,
+ IProgressMonitor monitor) throws CoreException {
// create the command line
- String[] command = new String[4 + sourceFolders.size()];
- int index = 0;
- command[index++] = projectTarget.getPath(IAndroidTarget.AIDL);
- command[index++] = quote("-p" + projectTarget.getPath(IAndroidTarget.ANDROID_AIDL)); //$NON-NLS-1$
+ List<String> commandList = new ArrayList<String>(
+ 4 + sourceFolders.size() + libraryProjectsOut.size());
+ commandList.add(projectTarget.getPath(IAndroidTarget.AIDL));
+ commandList.add(quote("-p" + projectTarget.getPath(IAndroidTarget.ANDROID_AIDL))); //$NON-NLS-1$
// since the path are relative to the workspace and not the project itself, we need
// the workspace root.
@@ -107,15 +110,38 @@ public class AidlProcessor extends SourceProcessor {
for (IPath p : sourceFolders) {
IFolder f = wsRoot.getFolder(p);
if (f.exists()) { // if the resource doesn't exist, getLocation will return null.
- command[index++] = quote("-I" + f.getLocation().toOSString()); //$NON-NLS-1$
+ commandList.add(quote("-I" + f.getLocation().toOSString())); //$NON-NLS-1$
+ }
+ }
+
+ for (File libOut : libraryProjectsOut) {
+ // FIXME: make folder configurable
+ File aidlFile = new File(libOut, SdkConstants.FD_AIDL);
+ if (aidlFile.isDirectory()) {
+ commandList.add(quote("-I" + aidlFile.getAbsolutePath())); //$NON-NLS-1$
}
}
+ // convert to array with 2 extra strings for the in/out file paths.
+ int index = commandList.size();
+ String[] commands = commandList.toArray(new String[index + 2]);
+
boolean verbose = AdtPrefs.getPrefs().getBuildVerbosity() == BuildVerbosity.VERBOSE;
// remove the generic marker from the project
builder.removeMarkersFromResource(project, AdtConstants.MARKER_AIDL);
+ // prepare the two output folders.
+ IFolder genFolder = getGenFolder();
+ IFolder projectOut = BaseProjectHelper.getAndroidOutputFolder(project);
+ IFolder aidlOutFolder = projectOut.getFolder(SdkConstants.FD_AIDL);
+ if (aidlOutFolder.exists() == false) {
+ aidlOutFolder.create(true /*force*/, true /*local*/,
+ new SubProgressMonitor(monitor, 10));
+ }
+
+ boolean success = false;
+
// loop until we've compile them all
for (IFile sourceFile : sources) {
if (verbose) {
@@ -145,34 +171,53 @@ public class AidlProcessor extends SourceProcessor {
// if there's no output file yet, compute it.
if (data.getOutput() == null) {
- IFile javaFile = getAidlOutputFile(sourceFile, true /*createFolders*/, monitor);
+ IFile javaFile = getAidlOutputFile(sourceFile, genFolder,
+ true /*replaceExt*/, true /*createFolders*/, monitor);
data.setOutputFile(javaFile);
}
// finish to set the command line.
- command[index] = quote(osSourcePath);
- command[index + 1] = quote(data.getOutput().getLocation().toOSString());
+ commands[index] = quote(osSourcePath);
+ commands[index + 1] = quote(data.getOutput().getLocation().toOSString());
// launch the process
- if (execAidl(builder, project, command, sourceFile, verbose) == false) {
+ if (execAidl(builder, project, commands, sourceFile, verbose) == false) {
// aidl failed. File should be marked. We add the file to the list
// of file that will need compilation again.
notCompiledOut.add(sourceFile);
} else {
// Success. we'll return that we generated code
setCompilationStatus(COMPILE_STATUS_CODE);
+ success = true;
+
+ // Also copy the file to the bin folder.
+ IFile aidlOutFile = getAidlOutputFile(sourceFile, aidlOutFolder,
+ false /*replaceExt*/, true /*createFolders*/, monitor);
+
+ FileOp op = new FileOp();
+ try {
+ op.copyFile(sourceFile.getLocation().toFile(),
+ aidlOutFile.getLocation().toFile());
+ } catch (IOException e) {
+ }
}
}
+
+ if (success) {
+ aidlOutFolder.refreshLocal(IResource.DEPTH_INFINITE, monitor);
+ }
}
@Override
protected void loadOutputAndDependencies() {
IProgressMonitor monitor = new NullProgressMonitor();
+ IFolder genFolder = getGenFolder();
+
Collection<SourceFileData> dataList = getAllFileData();
for (SourceFileData data : dataList) {
try {
- IFile javaFile = getAidlOutputFile(data.getSourceFile(),
- false /*createFolders*/, monitor);
+ IFile javaFile = getAidlOutputFile(data.getSourceFile(), genFolder,
+ true /*replaceExt*/, false /*createFolders*/, monitor);
data.setOutputFile(javaFile);
} catch (CoreException e) {
// ignore, we're not asking to create the folder so this won't happen anyway.
@@ -312,15 +357,16 @@ public class AidlProcessor extends SourceProcessor {
/**
* Returns the {@link IFile} handle to the destination file for a given aidl source file
* ({@link AidlData}).
- * @param aidlData the data for the aidl source file.
+ * @param sourceFile The source file
+ * @param outputFolder the top level output folder (not including the package folders)
* @param createFolders whether or not the parent folder of the destination should be created
* if it does not exist.
* @param monitor the progress monitor
* @return the handle to the destination file.
* @throws CoreException
*/
- private IFile getAidlOutputFile(IFile sourceFile, boolean createFolders,
- IProgressMonitor monitor) throws CoreException {
+ private IFile getAidlOutputFile(IFile sourceFile, IFolder outputFolder, boolean replaceExt,
+ boolean createFolders, IProgressMonitor monitor) throws CoreException {
IPath sourceFolderPath = getSourceFolderFor(sourceFile);
@@ -333,7 +379,7 @@ public class AidlProcessor extends SourceProcessor {
relative = relative.removeLastSegments(1);
// get an IFolder for this path.
- IFolder destinationFolder = getGenFolder().getFolder(relative);
+ IFolder destinationFolder = outputFolder.getFolder(relative);
// create it if needed.
if (destinationFolder.exists() == false && createFolders) {
@@ -341,8 +387,13 @@ public class AidlProcessor extends SourceProcessor {
}
// Build the Java file name from the aidl name.
- String javaName = sourceFile.getName().replaceAll(
- AdtConstants.RE_AIDL_EXT, AdtConstants.DOT_JAVA);
+ String javaName;
+ if (replaceExt) {
+ javaName = sourceFile.getName().replaceAll(
+ AdtConstants.RE_AIDL_EXT, AdtConstants.DOT_JAVA);
+ } else {
+ javaName = sourceFile.getName();
+ }
// get the resource for the java file.
IFile javaFile = destinationFolder.getFile(javaName);
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java
index 3fc7b07..e882395 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/RenderScriptProcessor.java
@@ -131,11 +131,12 @@ public class RenderScriptProcessor extends SourceProcessor {
return PROPERTY_COMPILE_RS;
}
+ @SuppressWarnings("deprecation")
@Override
protected void doCompileFiles(List<IFile> sources, BaseBuilder builder,
IProject project, IAndroidTarget projectTarget, int targetApi,
- List<IPath> sourceFolders, List<IFile> notCompiledOut, IProgressMonitor monitor)
- throws CoreException {
+ List<IPath> sourceFolders, List<IFile> notCompiledOut, List<File> libraryProjectsOut,
+ IProgressMonitor monitor) throws CoreException {
String sdkOsPath = Sdk.getCurrent().getSdkLocation();
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java
index 22030cb..9a16f75 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceProcessor.java
@@ -33,6 +33,7 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IJavaProject;
+import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -219,7 +220,8 @@ public abstract class SourceProcessor {
*/
public final int compileFiles(BaseBuilder builder,
IProject project, IAndroidTarget projectTarget, int minSdkVersion,
- List<IPath> sourceFolders, IProgressMonitor monitor) throws CoreException {
+ List<IPath> sourceFolders, List<File> libraryProjectsOut, IProgressMonitor monitor)
+ throws CoreException {
mLastCompilationStatus = COMPILE_STATUS_NONE;
@@ -240,7 +242,7 @@ public abstract class SourceProcessor {
List<IFile> stillNeedCompilation = new ArrayList<IFile>();
doCompileFiles(mToCompile, builder, project, projectTarget, minSdkVersion, sourceFolders,
- stillNeedCompilation, monitor);
+ stillNeedCompilation, libraryProjectsOut, monitor);
mToCompile.clear();
mToCompile.addAll(stillNeedCompilation);
@@ -272,8 +274,8 @@ public abstract class SourceProcessor {
protected abstract void doCompileFiles(
List<IFile> filesToCompile, BaseBuilder builder,
IProject project, IAndroidTarget projectTarget, int targetApi,
- List<IPath> sourceFolders, List<IFile> notCompiledOut, IProgressMonitor monitor)
- throws CoreException;
+ List<IPath> sourceFolders, List<IFile> notCompiledOut,
+ List<File> libraryProjectsOut, IProgressMonitor monitor) throws CoreException;
/**
* Adds a compilation status. It can be any of (in combination too):
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java
index f9ea444..cbce3c9 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/builders/PreCompilerBuilder.java
@@ -621,12 +621,20 @@ public class PreCompilerBuilder extends BaseBuilder {
}
}
+ List<File> libProjectsOut = new ArrayList<File>(libProjects.size());
+ for (IProject libProject : libProjects) {
+ libProjectsOut.add(
+ BaseProjectHelper.getAndroidOutputFolder(libProject)
+ .getLocation().toFile());
+ }
+
// run the source processors
int processorStatus = SourceProcessor.COMPILE_STATUS_NONE;
for (SourceProcessor processor : mProcessors) {
try {
processorStatus |= processor.compileFiles(this,
- project, projectTarget, minSdkValue, sourceFolderPathList, monitor);
+ project, projectTarget, minSdkValue, sourceFolderPathList,
+ libProjectsOut, monitor);
} catch (Throwable t) {
handleException(t, String.format(
"Failed to run %s. Check workspace log for detail.",
diff --git a/files/ant/build.xml b/files/ant/build.xml
index cd1bc7d..542943e 100644
--- a/files/ant/build.xml
+++ b/files/ant/build.xml
@@ -124,6 +124,7 @@
<property name="out.absolute.dir" location="${out.dir}" />
<property name="out.classes.absolute.dir" location="${out.dir}/classes" />
<property name="out.res.absolute.dir" location="${out.dir}/res" />
+ <property name="out.aidl.absolute.dir" location="${out.dir}/aidl" />
<property name="out.manifest.abs.file" location="${out.dir}/AndroidManifest.xml" />
<!-- tools location -->
@@ -538,6 +539,7 @@
libraryPackagesOut="project.library.packages"
libraryManifestFilePathOut="project.library.manifest.file.path"
libraryResFolderPathOut="project.library.res.folder.path"
+ libraryBinFolderPathOut="project.library.bin.folder.path"
libraryNativeFolderPathOut="project.library.native.folder.path"
jarLibraryPathOut="project.all.jars.path"
targetApi="${project.target.apilevel}"
@@ -618,8 +620,11 @@
<do-only-if-manifest-hasCode
elseText="hasCode = false. Skipping aidl/renderscript/R.java">
<echo level="info">Handling aidl files...</echo>
- <aidl executable="${aidl}" framework="${project.target.framework.aidl}"
- genFolder="${gen.absolute.dir}">
+ <aidl executable="${aidl}"
+ framework="${project.target.framework.aidl}"
+ libraryBinFolderPathRefid="project.library.bin.folder.path"
+ genFolder="${gen.absolute.dir}"
+ aidlOutFolder="${out.aidl.absolute.dir}">
<source path="${source.absolute.dir}"/>
</aidl>
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
index b5ff9da..a78e1a3 100644
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/SdkConstants.java
@@ -197,6 +197,8 @@ public final class SdkConstants {
public final static String FD_CLASSES_OUTPUT = "classes"; //$NON-NLS-1$
/** proguard output folder for mapping, etc.. files */
public final static String FD_PROGUARD = "proguard"; //$NON-NLS-1$
+ /** aidl output folder for copied aidl files */
+ public final static String FD_AIDL = "aidl"; //$NON-NLS-1$
/* Folder Names for the Android SDK */
diff --git a/testapps/aidlTest/libWithAidl/.classpath b/testapps/aidlTest/libWithAidl/.classpath
new file mode 100644
index 0000000..a4763d1
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="gen"/>
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+ <classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/testapps/aidlTest/libWithAidl/.project b/testapps/aidlTest/libWithAidl/.project
new file mode 100644
index 0000000..49d565f
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>aidlTest-libWithAidl</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testapps/aidlTest/libWithAidl/AndroidManifest.xml b/testapps/aidlTest/libWithAidl/AndroidManifest.xml
new file mode 100644
index 0000000..d1d75dd
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.aidl.lib"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <permission
+ android:name="com.foo.mypermission"
+ android:description="@string/app_name"
+ android:label="@string/app_name" >
+ </permission>
+ <permission
+ android:name="com.foo.mypermission2"
+ android:description="@string/app_name"
+ android:label="@string/app_name" >
+ </permission>
+
+</manifest> \ No newline at end of file
diff --git a/testapps/aidlTest/libWithAidl/ant.properties b/testapps/aidlTest/libWithAidl/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/ant.properties
@@ -0,0 +1,17 @@
+# This file is used to override default values used by the Ant build system.
+#
+# This file must be checked in Version Control Systems, as it is
+# integral to the build system of your project.
+
+# This file is only used by the Ant script.
+
+# You can use this to override default values such as
+# 'source.dir' for the location of your java source folder and
+# 'out.dir' for the location of your output folder.
+
+# You can also use it define how the release builds are signed by declaring
+# the following properties:
+# 'key.store' for the location of your keystore and
+# 'key.alias' for the name of the key to use.
+# The password will be asked during the build when you use the 'release' target.
+
diff --git a/testapps/aidlTest/libWithAidl/build.xml b/testapps/aidlTest/libWithAidl/build.xml
new file mode 100644
index 0000000..07c2a49
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/build.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="libWithAidl" default="help">
+
+ <!-- The local.properties file is created and updated by the 'android' tool.
+ It contains the path to the SDK. It should *NOT* be checked into
+ Version Control Systems. -->
+ <property file="local.properties" />
+
+ <!-- The ant.properties file can be created by you. It is only edited by the
+ 'android' tool to add properties to it.
+ This is the place to change some Ant specific build properties.
+ Here are some properties you may want to change/update:
+
+ source.dir
+ The name of the source directory. Default is 'src'.
+ out.dir
+ The name of the output directory. Default is 'bin'.
+
+ For other overridable properties, look at the beginning of the rules
+ files in the SDK, at tools/ant/build.xml
+
+ Properties related to the SDK location or the project target should
+ be updated using the 'android' tool with the 'update' action.
+
+ This file is an integral part of the build system for your
+ application and should be checked into Version Control Systems.
+
+ -->
+ <property file="ant.properties" />
+
+ <!-- The project.properties file is created and updated by the 'android'
+ tool, as well as ADT.
+
+ This contains project specific properties such as project target, and library
+ dependencies. Lower level build properties are stored in ant.properties
+ (or in .classpath for Eclipse projects).
+
+ This file is an integral part of the build system for your
+ application and should be checked into Version Control Systems. -->
+ <loadproperties srcFile="project.properties" />
+
+ <!-- if sdk.dir was not set from one of the property file, then
+ get it from the ANDROID_HOME env var. -->
+ <property environment="env" />
+ <condition property="sdk.dir" value="${env.ANDROID_HOME}">
+ <isset property="env.ANDROID_HOME" />
+ </condition>
+
+ <!-- quick check on sdk.dir -->
+ <fail
+ message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
+ unless="sdk.dir"
+ />
+
+ <!--
+ Import per project custom build rules if present at the root of the project.
+ This is the place to put custom intermediary targets such as:
+ -pre-build
+ -pre-compile
+ -post-compile (This is typically used for code obfuscation.
+ Compiled code location: ${out.classes.absolute.dir}
+ If this is not done in place, override ${out.dex.input.absolute.dir})
+ -post-package
+ -post-build
+ -pre-clean
+ -->
+ <import file="custom_rules.xml" optional="true" />
+
+ <!-- Import the actual build file.
+
+ To customize existing targets, there are two options:
+ - Customize only one target:
+ - copy/paste the target into this file, *before* the
+ <import> task.
+ - customize it to your needs.
+ - Customize the whole content of build.xml
+ - copy/paste the content of the rules files (minus the top node)
+ into this file, replacing the <import> task.
+ - customize to your needs.
+
+ ***********************
+ ****** IMPORTANT ******
+ ***********************
+ In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
+ in order to avoid having your file be overridden by tools such as "android update project"
+ -->
+ <!-- version-tag: 1 -->
+ <import file="${sdk.dir}/tools/ant/build.xml" />
+
+</project>
diff --git a/testapps/aidlTest/libWithAidl/proguard-project.txt b/testapps/aidlTest/libWithAidl/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/testapps/aidlTest/libWithAidl/project.properties b/testapps/aidlTest/libWithAidl/project.properties
new file mode 100644
index 0000000..23d80c4
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/project.properties
@@ -0,0 +1,13 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-15
+android.library=true
+
diff --git a/testapps/aidlTest/libWithAidl/res/layout/main.xml b/testapps/aidlTest/libWithAidl/res/layout/main.xml
new file mode 100644
index 0000000..d11d11a
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/res/layout/main.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2007 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.
+-->
+
+<!-- Demonstrates defining custom views in a layout file. -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
+</LinearLayout> \ No newline at end of file
diff --git a/testapps/aidlTest/libWithAidl/res/values/strings.xml b/testapps/aidlTest/libWithAidl/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">MyActivity</string>
+</resources>
diff --git a/testapps/aidlTest/libWithAidl/src/com/android/tests/aidl/lib/MyParcelable.aidl b/testapps/aidlTest/libWithAidl/src/com/android/tests/aidl/lib/MyParcelable.aidl
new file mode 100644
index 0000000..b47faec
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/src/com/android/tests/aidl/lib/MyParcelable.aidl
@@ -0,0 +1,3 @@
+package com.android.tests.aidl.lib;
+
+parcelable MyParcelable; \ No newline at end of file
diff --git a/testapps/aidlTest/libWithAidl/src/com/android/tests/aidl/lib/MyParcelable.java b/testapps/aidlTest/libWithAidl/src/com/android/tests/aidl/lib/MyParcelable.java
new file mode 100644
index 0000000..ef9efdd
--- /dev/null
+++ b/testapps/aidlTest/libWithAidl/src/com/android/tests/aidl/lib/MyParcelable.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2012 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.tests.aidl.lib;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class MyParcelable implements Parcelable {
+ private int mData;
+
+ public int describeContents() {
+ return 0;
+ }
+
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeInt(mData);
+ }
+
+ public static final Parcelable.Creator<MyParcelable> CREATOR = new Parcelable.Creator<MyParcelable>() {
+ public MyParcelable createFromParcel(Parcel in) {
+ return new MyParcelable(in);
+ }
+
+ public MyParcelable[] newArray(int size) {
+ return new MyParcelable[size];
+ }
+ };
+
+ private MyParcelable(Parcel in) {
+ mData = in.readInt();
+ }
+}
diff --git a/testapps/aidlTest/mainProject/.classpath b/testapps/aidlTest/mainProject/.classpath
new file mode 100644
index 0000000..a4763d1
--- /dev/null
+++ b/testapps/aidlTest/mainProject/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="gen"/>
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+ <classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/testapps/aidlTest/mainProject/.project b/testapps/aidlTest/mainProject/.project
new file mode 100644
index 0000000..81769cc
--- /dev/null
+++ b/testapps/aidlTest/mainProject/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>aidlTest-mainProject</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/testapps/aidlTest/mainProject/AndroidManifest.xml b/testapps/aidlTest/mainProject/AndroidManifest.xml
new file mode 100644
index 0000000..f7315b0
--- /dev/null
+++ b/testapps/aidlTest/mainProject/AndroidManifest.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.aidl.main"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <application android:label="@string/app_name" >
+ <activity
+ android:name="com.android.tests.aidl.main.MyActivity"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest> \ No newline at end of file
diff --git a/testapps/aidlTest/mainProject/ant.properties b/testapps/aidlTest/mainProject/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/aidlTest/mainProject/ant.properties
@@ -0,0 +1,17 @@
+# This file is used to override default values used by the Ant build system.
+#
+# This file must be checked in Version Control Systems, as it is
+# integral to the build system of your project.
+
+# This file is only used by the Ant script.
+
+# You can use this to override default values such as
+# 'source.dir' for the location of your java source folder and
+# 'out.dir' for the location of your output folder.
+
+# You can also use it define how the release builds are signed by declaring
+# the following properties:
+# 'key.store' for the location of your keystore and
+# 'key.alias' for the name of the key to use.
+# The password will be asked during the build when you use the 'release' target.
+
diff --git a/testapps/aidlTest/mainProject/build.xml b/testapps/aidlTest/mainProject/build.xml
new file mode 100644
index 0000000..30203f0
--- /dev/null
+++ b/testapps/aidlTest/mainProject/build.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="aidlTest-mainProject" default="help">
+
+ <!-- The local.properties file is created and updated by the 'android' tool.
+ It contains the path to the SDK. It should *NOT* be checked into
+ Version Control Systems. -->
+ <property file="local.properties" />
+
+ <!-- The ant.properties file can be created by you. It is only edited by the
+ 'android' tool to add properties to it.
+ This is the place to change some Ant specific build properties.
+ Here are some properties you may want to change/update:
+
+ source.dir
+ The name of the source directory. Default is 'src'.
+ out.dir
+ The name of the output directory. Default is 'bin'.
+
+ For other overridable properties, look at the beginning of the rules
+ files in the SDK, at tools/ant/build.xml
+
+ Properties related to the SDK location or the project target should
+ be updated using the 'android' tool with the 'update' action.
+
+ This file is an integral part of the build system for your
+ application and should be checked into Version Control Systems.
+
+ -->
+ <property file="ant.properties" />
+
+ <!-- The project.properties file is created and updated by the 'android'
+ tool, as well as ADT.
+
+ This contains project specific properties such as project target, and library
+ dependencies. Lower level build properties are stored in ant.properties
+ (or in .classpath for Eclipse projects).
+
+ This file is an integral part of the build system for your
+ application and should be checked into Version Control Systems. -->
+ <loadproperties srcFile="project.properties" />
+
+ <!-- if sdk.dir was not set from one of the property file, then
+ get it from the ANDROID_HOME env var. -->
+ <property environment="env" />
+ <condition property="sdk.dir" value="${env.ANDROID_HOME}">
+ <isset property="env.ANDROID_HOME" />
+ </condition>
+
+ <!-- quick check on sdk.dir -->
+ <fail
+ message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
+ unless="sdk.dir"
+ />
+
+ <!--
+ Import per project custom build rules if present at the root of the project.
+ This is the place to put custom intermediary targets such as:
+ -pre-build
+ -pre-compile
+ -post-compile (This is typically used for code obfuscation.
+ Compiled code location: ${out.classes.absolute.dir}
+ If this is not done in place, override ${out.dex.input.absolute.dir})
+ -post-package
+ -post-build
+ -pre-clean
+ -->
+ <import file="custom_rules.xml" optional="true" />
+
+ <!-- Import the actual build file.
+
+ To customize existing targets, there are two options:
+ - Customize only one target:
+ - copy/paste the target into this file, *before* the
+ <import> task.
+ - customize it to your needs.
+ - Customize the whole content of build.xml
+ - copy/paste the content of the rules files (minus the top node)
+ into this file, replacing the <import> task.
+ - customize to your needs.
+
+ ***********************
+ ****** IMPORTANT ******
+ ***********************
+ In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
+ in order to avoid having your file be overridden by tools such as "android update project"
+ -->
+ <!-- version-tag: 1 -->
+ <import file="${sdk.dir}/tools/ant/build.xml" />
+
+</project>
diff --git a/testapps/aidlTest/mainProject/proguard-project.txt b/testapps/aidlTest/mainProject/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/aidlTest/mainProject/proguard-project.txt
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
diff --git a/testapps/aidlTest/mainProject/project.properties b/testapps/aidlTest/mainProject/project.properties
new file mode 100644
index 0000000..6335320
--- /dev/null
+++ b/testapps/aidlTest/mainProject/project.properties
@@ -0,0 +1,15 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-15
+android.library.reference.1=../libWithAidl
+
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
diff --git a/testapps/aidlTest/mainProject/res/values/strings.xml b/testapps/aidlTest/mainProject/res/values/strings.xml
new file mode 100644
index 0000000..7dde733
--- /dev/null
+++ b/testapps/aidlTest/mainProject/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">aidlTest</string>
+</resources>
diff --git a/testapps/aidlTest/mainProject/src/com/android/tests/aidl/main/IRemoteService.aidl b/testapps/aidlTest/mainProject/src/com/android/tests/aidl/main/IRemoteService.aidl
new file mode 100644
index 0000000..62126c1
--- /dev/null
+++ b/testapps/aidlTest/mainProject/src/com/android/tests/aidl/main/IRemoteService.aidl
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2012 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.tests.aidl.main;
+
+import com.android.tests.aidl.lib.MyParcelable;
+
+interface IRemoteService {
+ MyParcelable get();
+}
+
diff --git a/testapps/aidlTest/mainProject/src/com/android/tests/aidl/main/MyActivity.java b/testapps/aidlTest/mainProject/src/com/android/tests/aidl/main/MyActivity.java
new file mode 100644
index 0000000..117198d
--- /dev/null
+++ b/testapps/aidlTest/mainProject/src/com/android/tests/aidl/main/MyActivity.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2012 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.tests.aidl.main;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class MyActivity extends Activity
+{
+ /** Called when the activity is first created. */
+ @Override
+ public void onCreate(Bundle savedInstanceState)
+ {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.main);
+ }
+}
diff --git a/testapps/customViewTest/libWithCustomView/.project b/testapps/customViewTest/libWithCustomView/.project
index a2d0697..0be1f61 100644
--- a/testapps/customViewTest/libWithCustomView/.project
+++ b/testapps/customViewTest/libWithCustomView/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>libWithCustomView</name>
+ <name>customViewTest-libWithCustomView</name>
<comment></comment>
<projects>
</projects>
diff --git a/testapps/customViewTest/mainProject/.project b/testapps/customViewTest/mainProject/.project
index 12bba31..159296e 100644
--- a/testapps/customViewTest/mainProject/.project
+++ b/testapps/customViewTest/mainProject/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>mainProject</name>
+ <name>customViewTest-mainProject</name>
<comment></comment>
<projects>
</projects>