aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--anttasks/src/com/android/ant/DexExecTask.java43
-rw-r--r--sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java442
-rw-r--r--testapps/.gitignore6
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/ant.properties17
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/build.xml85
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/libs/android-support-v4.jarbin0 -> 247894 bytes
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/project.properties13
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java15
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/ant.properties17
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/build.xml85
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/libs/android-support-v4.jarbin0 -> 247894 bytes
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/project.properties13
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests1/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java15
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/ant.properties17
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/build.xml85
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/libs/android-support-v4.jarbin0 -> 247894 bytes
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/libs/foo.txt1
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/project.properties13
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests1/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java15
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/.classpath9
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/.project33
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/ant.properties17
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/build.xml85
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/libs/android-support-v4.jarbin0 -> 247894 bytes
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/project.properties13
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java15
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/.classpath9
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/.project33
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/ant.properties17
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/build.xml85
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/libs/android-support-v4.jarbin0 -> 244970 bytes
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/project.properties13
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests2/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java15
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/.classpath8
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/.project33
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/ant.properties17
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/build.xml85
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/libs/foo.txt1
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/project.properties13
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests2/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java15
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/ant.properties17
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/build.xml85
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/libs/android-support-v4.jarbin0 -> 247894 bytes
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/project.properties13
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java15
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/ant.properties17
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/build.xml85
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/libs/android-support-v13.jarbin0 -> 307683 bytes
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/project.properties13
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests3/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java15
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/AndroidManifest.xml15
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/ant.properties17
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/build.xml85
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/libs/foo.txt1
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/proguard-project.txt20
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/project.properties13
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/res/layout/main.xml13
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/res/values/strings.xml4
-rw-r--r--testapps/jarCheckTests3/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java15
91 files changed, 2253 insertions, 4 deletions
diff --git a/anttasks/src/com/android/ant/DexExecTask.java b/anttasks/src/com/android/ant/DexExecTask.java
index 2d9479e..273f689 100644
--- a/anttasks/src/com/android/ant/DexExecTask.java
+++ b/anttasks/src/com/android/ant/DexExecTask.java
@@ -16,6 +16,10 @@
package com.android.ant;
+import com.android.sdklib.build.JarListSanitizer;
+import com.android.sdklib.build.JarListSanitizer.DifferentLibException;
+import com.android.sdklib.build.JarListSanitizer.Sha1Exception;
+
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.ExecTask;
import org.apache.tools.ant.types.FileSet;
@@ -162,8 +166,12 @@ public class DexExecTask extends SingleDependencyTask {
task.createArg().setValue(mOutput);
+ paths = sanitizePaths(paths);
+
for (File f : paths) {
- task.createArg().setValue(f.getAbsolutePath());
+ String absPath = f.getAbsolutePath();
+ System.out.println("Input: " + absPath);
+ task.createArg().setValue(absPath);
}
// execute it.
@@ -177,4 +185,37 @@ public class DexExecTask extends SingleDependencyTask {
protected String getExecTaskName() {
return "dx";
}
+
+ // private helper methods.
+
+ private List<File> sanitizePaths(List<File> paths) {
+ // first get the non-files.
+ List<File> results = new ArrayList<File>();
+ for (int i = 0 ; i < paths.size() ;) {
+ File f = paths.get(i);
+ // TEMP WORKAROUND: ignore classes.jar as all the output of libraries are
+ // called the same (in Ant) but are not actually the same jar file.
+ // TODO: Be aware of library output vs. regular jar dependency.
+ if (f.isFile() && f.getName().equals("classes.jar") == false) {
+ i++;
+ } else {
+ results.add(f);
+ paths.remove(i);
+ }
+ }
+
+ File outputFile = new File(mOutput);
+ JarListSanitizer sanitizer = new JarListSanitizer(outputFile.getParentFile());
+
+ try {
+ results.addAll(sanitizer.sanitize(paths));
+ } catch (DifferentLibException e) {
+ throw new BuildException(e.getMessage(), e);
+ } catch (Sha1Exception e) {
+ throw new BuildException(
+ "Failed to compute sha1 for " + e.getJarFile().getAbsolutePath(), e);
+ }
+
+ return results;
+ }
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java
new file mode 100644
index 0000000..bd4d9a4
--- /dev/null
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java
@@ -0,0 +1,442 @@
+/*
+ * 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.sdklib.build;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.security.MessageDigest;
+import java.util.ArrayList;
+import java.util.Formatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * A Class to handle a list of jar files, finding and removing duplicates.
+ *
+ * Right now duplicates are based on:
+ * - same filename
+ * - same length
+ * - same content: using sha1 comparison.
+ *
+ * The length/sha1 are kept in a cache and only updated if the library is changed.
+ */
+public class JarListSanitizer {
+
+ private static final byte[] sBuffer = new byte[4096];
+ private static final String CACHE_FILENAME = "jarlist.cache";
+ private static final Pattern READ_PATTERN = Pattern.compile("^(\\d+) (\\d+) ([0-9a-f]+) (.+)$");
+
+ /**
+ * Simple class holding the data regarding a jar dependency.
+ *
+ */
+ private static final class JarEntity {
+ private final File mFile;
+ private final long mLastModified;
+ private long mLength;
+ private String mSha1;
+
+ /**
+ * Creates an entity from cached data.
+ * @param path the file path
+ * @param lastModified when it was last modified
+ * @param length its length
+ * @param sha1 its sha1
+ */
+ private JarEntity(String path, long lastModified, long length, String sha1) {
+ mFile = new File(path);
+ mLastModified = lastModified;
+ mLength = length;
+ mSha1 = sha1;
+ }
+
+ /**
+ * Creates an entity from a {@link File}.
+ * @param file the file.
+ */
+ private JarEntity(File file) {
+ mFile = file;
+ mLastModified = file.lastModified();
+ mLength = file.length();
+ }
+
+ /**
+ * Checks whether the {@link File#lastModified()} matches the cached value. If not, length
+ * is updated and the sha1 is reset (but not recomputed, this is done on demand).
+ * @return return whether the file was changed.
+ */
+ private boolean checkValidity() {
+ if (mLastModified != mFile.lastModified()) {
+ mLength = mFile.length();
+ mSha1 = null;
+ return true;
+ }
+
+ return false;
+ }
+
+ private File getFile() {
+ return mFile;
+ }
+
+ private long getLastModified() {
+ return mLastModified;
+ }
+
+ private long getLength() {
+ return mLength;
+ }
+
+ /**
+ * Returns the file's sha1, computing it if necessary.
+ * @return the sha1
+ * @throws Sha1Exception
+ */
+ private String getSha1() throws Sha1Exception {
+ if (mSha1 == null) {
+ mSha1 = JarListSanitizer.getSha1(mFile);
+ }
+ return mSha1;
+ }
+
+ private boolean hasSha1() {
+ return mSha1 != null;
+ }
+ }
+
+ /**
+ * Exception used to indicate the sanitized list of jar dependency cannot be computed due
+ * to inconsistency in duplicate jar files.
+ */
+ public static final class DifferentLibException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ public DifferentLibException(String message) {
+ super(message);
+ }
+ }
+
+ /**
+ * Exception to indicate a failure to check a jar file's content.
+ */
+ public static final class Sha1Exception extends Exception {
+ private static final long serialVersionUID = 1L;
+ private final File mJarFile;
+
+ public Sha1Exception(File jarFile, Throwable cause) {
+ super(cause);
+ mJarFile = jarFile;
+ }
+
+ public File getJarFile() {
+ return mJarFile;
+ }
+ }
+
+ private final File mOut;
+
+ /**
+ * Creates a sanitizer.
+ * @param out the project output where the cache is to be stored.
+ */
+ public JarListSanitizer(File out) {
+ mOut = out;
+ }
+
+ /**
+ * Sanitize a given list of files
+ * @param files the list to sanitize
+ * @return a new list containing no duplicates.
+ * @throws DifferentLibException
+ * @throws Sha1Exception
+ */
+ public List<File> sanitize(List<File> files) throws DifferentLibException, Sha1Exception {
+ List<File> results = new ArrayList<File>();
+
+ // get the cache list.
+ Map<String, JarEntity> jarList = getCachedJarList();
+
+ boolean updateJarList = false;
+
+ // clean it up of removed files.
+ // use results as a temp storage to store the files to remove as we go through the map.
+ for (JarEntity entity : jarList.values()) {
+ if (entity.getFile().exists() == false) {
+ results.add(entity.getFile());
+ }
+ }
+
+ // the actual clean up.
+ if (results.size() > 0) {
+ for (File f : results) {
+ jarList.remove(f.getAbsolutePath());
+ }
+
+ results.clear();
+ updateJarList = true;
+ }
+
+ Map<String, List<JarEntity>> nameMap = new HashMap<String, List<JarEntity>>();
+
+ // update the current jar list if needed, while building a 2ndary map based on
+ // filename only.
+ for (File file : files) {
+ String path = file.getAbsolutePath();
+ JarEntity entity = jarList.get(path);
+
+ if (entity == null) {
+ entity = new JarEntity(file);
+ jarList.put(path, entity);
+ updateJarList = true;
+ } else {
+ updateJarList |= entity.checkValidity();
+ }
+
+ String filename = file.getName();
+ List<JarEntity> nameList = nameMap.get(filename);
+ if (nameList == null) {
+ nameList = new ArrayList<JarEntity>();
+ nameMap.put(filename, nameList);
+ }
+ nameList.add(entity);
+ }
+
+ try {
+ // now look for dups. Each name list can have more than one file but they must
+ // have the same size/sha1
+ for (Entry<String, List<JarEntity>> entry : nameMap.entrySet()) {
+ List<JarEntity> list = entry.getValue();
+ checkEntities(entry.getKey(), list);
+
+ // if we are here, there's no issue. Add the first of the list to the results.
+ results.add(list.get(0).getFile());
+ }
+
+ // special case for android-support-v4/13
+ checkSupportLibs(nameMap, results);
+ } finally {
+ if (updateJarList) {
+ writeJarList(nameMap);
+ }
+ }
+
+ return results;
+ }
+
+ /**
+ * Checks whether a given list of duplicates can be replaced by a single one.
+ * @param filename the filename of the files
+ * @param list the list of dup files
+ * @throws DifferentLibException
+ * @throws Sha1Exception
+ */
+ private void checkEntities(String filename, List<JarEntity> list)
+ throws DifferentLibException, Sha1Exception {
+ if (list.size() == 1) {
+ return;
+ }
+
+ JarEntity baseEntity = list.get(0);
+ long baseLength = baseEntity.getLength();
+ String baseSha1 = baseEntity.getSha1();
+
+ final int count = list.size();
+ for (int i = 1; i < count ; i++) {
+ JarEntity entity = list.get(i);
+ if (entity.getLength() != baseLength || entity.getSha1().equals(baseSha1) == false) {
+ printEntityDetails(filename, list);
+ throw new DifferentLibException("Jar mismatch! Fix your dependencies");
+ }
+
+ }
+ }
+
+ /**
+ * Checks for present of both support libraries in v4 and v13. If both are detected,
+ * v4 is removed from <var>results</var>
+ * @param nameMap the list of jar as a map of (filename, list of files).
+ * @param results the current list of jar file set to be used. it's already been cleaned of
+ * duplicates.
+ */
+ private void checkSupportLibs(Map<String, List<JarEntity>> nameMap, List<File> results) {
+ List<JarEntity> v4 = nameMap.get("android-support-v4.jar");
+ List<JarEntity> v13 = nameMap.get("android-support-v13.jar");
+
+ if (v13 != null && v4 != null) {
+ System.out.println("WARNING: Found both android-support-v4 and android-support-v13 in the dependency list.");
+ System.out.println("Because v13 includes v4, using only v13.");
+ results.remove(v4.get(0).getFile());
+ }
+ }
+
+ private Map<String, JarEntity> getCachedJarList() {
+ Map<String, JarEntity> cache = new HashMap<String, JarListSanitizer.JarEntity>();
+
+ File cacheFile = new File(mOut, CACHE_FILENAME);
+ if (cacheFile.exists() == false) {
+ return cache;
+ }
+
+ BufferedReader reader = null;
+ try {
+ reader = new BufferedReader(new InputStreamReader(new FileInputStream(cacheFile),
+ "UTF-8"));
+
+ String line = null;
+ while ((line = reader.readLine()) != null) {
+ // skip comments
+ if (line.charAt(0) == '#') {
+ continue;
+ }
+
+ // get the data with a regexp
+ Matcher m = READ_PATTERN.matcher(line);
+ if (m.matches()) {
+ String path = m.group(4);
+
+ JarEntity entity = new JarEntity(
+ path,
+ Long.parseLong(m.group(1)),
+ Long.parseLong(m.group(2)),
+ m.group(3));
+
+ cache.put(path, entity);
+ }
+ }
+
+ } catch (FileNotFoundException e) {
+ // won't happen, we check up front.
+ } catch (UnsupportedEncodingException e) {
+ // shouldn't happen, but if it does, we just won't have a cache.
+ } catch (IOException e) {
+ // shouldn't happen, but if it does, we just won't have a cache.
+ } finally {
+ if (reader != null) {
+ try {
+ reader.close();
+ } catch (IOException e) {
+ }
+ }
+ }
+
+ return cache;
+ }
+
+ private void writeJarList(Map<String, List<JarEntity>> nameMap) {
+ File cacheFile = new File(mOut, CACHE_FILENAME);
+ try {
+ OutputStreamWriter writer = new OutputStreamWriter(
+ new FileOutputStream(cacheFile), "UTF-8");
+
+ writer.write("# cache for current jar dependecy. DO NOT EDIT.\n");
+ writer.write("# format is <lastModified> <length> <SHA-1> <path>\n");
+ writer.write("# Encoding is UTF-8\n");
+
+ for (List<JarEntity> list : nameMap.values()) {
+ // clean up the list of files that don't have a sha1.
+ for (int i = 0 ; i < list.size() ; ) {
+ JarEntity entity = list.get(i);
+ if (entity.hasSha1()) {
+ i++;
+ } else {
+ list.remove(i);
+ }
+ }
+
+ if (list.size() > 1) {
+ for (JarEntity entity : list) {
+ writer.write(String.format("%d %d %s %s\n",
+ entity.getLastModified(),
+ entity.getLength(),
+ entity.getSha1(),
+ entity.getFile().getAbsolutePath()));
+ }
+ }
+ }
+
+ writer.close();
+ } catch (IOException e) {
+ System.err.println("WARNING: unable to write jarlist cache file " +
+ cacheFile.getAbsolutePath());
+ } catch (Sha1Exception e) {
+ // shouldn't happen here since we check that the sha1 is present first, meaning it's
+ // already been computing.
+ }
+ }
+
+ private void printEntityDetails(String filename, List<JarEntity> list) throws Sha1Exception {
+ System.err.println(
+ String.format("Found %d versions of %s in the dependency list,",
+ list.size(), filename));
+ System.err.println("but not all the versions are identical (check is based on SHA-1 only at this time).");
+ System.err.println("All versions of the libraries must be the same at this time.");
+ System.err.println("Versions found are:");
+ for (JarEntity entity : list) {
+ System.err.println("Path: " + entity.getFile().getAbsolutePath());
+ System.err.println("\tLength: " + entity.getLength());
+ System.err.println("\tSHA-1: " + entity.getSha1());
+ }
+ }
+
+ /**
+ * Computes the sha1 of a file and returns it.
+ * @param f the file to compute the sha1 for.
+ * @return the sha1 value
+ * @throws Sha1Exception if the sha1 value cannot be computed.
+ */
+ private static String getSha1(File f) throws Sha1Exception {
+ synchronized (sBuffer) {
+ try {
+ MessageDigest md = MessageDigest.getInstance("SHA-1");
+
+ FileInputStream fis = new FileInputStream(f);
+ while (true) {
+ int length = fis.read(sBuffer);
+ if (length > 0) {
+ md.update(sBuffer, 0, length);
+ } else {
+ break;
+ }
+ }
+
+ return byteArray2Hex(md.digest());
+
+ } catch (Exception e) {
+ throw new Sha1Exception(f, e);
+ }
+ }
+ }
+
+ private static String byteArray2Hex(final byte[] hash) {
+ Formatter formatter = new Formatter();
+ for (byte b : hash) {
+ formatter.format("%02x", b);
+ }
+ return formatter.toString();
+ }
+}
diff --git a/testapps/.gitignore b/testapps/.gitignore
index 0c75cfd..846ae70 100644
--- a/testapps/.gitignore
+++ b/testapps/.gitignore
@@ -1,3 +1,3 @@
-*/bin
-*/local.properties
-*/gen
+bin
+local.properties
+gen
diff --git a/testapps/jarCheckTests1/basicLibWithSupport/AndroidManifest.xml b/testapps/jarCheckTests1/basicLibWithSupport/AndroidManifest.xml
new file mode 100644
index 0000000..a634bdb
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.libwithsupport"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests1/basicLibWithSupport/ant.properties b/testapps/jarCheckTests1/basicLibWithSupport/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/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/jarCheckTests1/basicLibWithSupport/build.xml b/testapps/jarCheckTests1/basicLibWithSupport/build.xml
new file mode 100644
index 0000000..772f422
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicLibWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests1/basicLibWithSupport/libs/android-support-v4.jar b/testapps/jarCheckTests1/basicLibWithSupport/libs/android-support-v4.jar
new file mode 100644
index 0000000..d006198
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/libs/android-support-v4.jar
Binary files differ
diff --git a/testapps/jarCheckTests1/basicLibWithSupport/proguard-project.txt b/testapps/jarCheckTests1/basicLibWithSupport/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/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/jarCheckTests1/basicLibWithSupport/project.properties b/testapps/jarCheckTests1/basicLibWithSupport/project.properties
new file mode 100644
index 0000000..23d80c4
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/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/jarCheckTests1/basicLibWithSupport/res/layout/main.xml b/testapps/jarCheckTests1/basicLibWithSupport/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests1/basicLibWithSupport/res/values/strings.xml b/testapps/jarCheckTests1/basicLibWithSupport/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/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/jarCheckTests1/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java b/testapps/jarCheckTests1/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java
new file mode 100644
index 0000000..2c316ca
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.libwithsupport;
+
+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/jarCheckTests1/basicLibWithSupport2/AndroidManifest.xml b/testapps/jarCheckTests1/basicLibWithSupport2/AndroidManifest.xml
new file mode 100644
index 0000000..6fa91eb
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.libwithsupport2"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests1/basicLibWithSupport2/ant.properties b/testapps/jarCheckTests1/basicLibWithSupport2/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/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/jarCheckTests1/basicLibWithSupport2/build.xml b/testapps/jarCheckTests1/basicLibWithSupport2/build.xml
new file mode 100644
index 0000000..772f422
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicLibWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests1/basicLibWithSupport2/libs/android-support-v4.jar b/testapps/jarCheckTests1/basicLibWithSupport2/libs/android-support-v4.jar
new file mode 100644
index 0000000..d006198
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/libs/android-support-v4.jar
Binary files differ
diff --git a/testapps/jarCheckTests1/basicLibWithSupport2/proguard-project.txt b/testapps/jarCheckTests1/basicLibWithSupport2/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/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/jarCheckTests1/basicLibWithSupport2/project.properties b/testapps/jarCheckTests1/basicLibWithSupport2/project.properties
new file mode 100644
index 0000000..23d80c4
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/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/jarCheckTests1/basicLibWithSupport2/res/layout/main.xml b/testapps/jarCheckTests1/basicLibWithSupport2/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests1/basicLibWithSupport2/res/values/strings.xml b/testapps/jarCheckTests1/basicLibWithSupport2/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/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/jarCheckTests1/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java b/testapps/jarCheckTests1/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java
new file mode 100644
index 0000000..fc97aa7
--- /dev/null
+++ b/testapps/jarCheckTests1/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.libwithsupport2;
+
+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/jarCheckTests1/basicProjectWithSupport/AndroidManifest.xml b/testapps/jarCheckTests1/basicProjectWithSupport/AndroidManifest.xml
new file mode 100644
index 0000000..ff41761
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.projectwithsupport"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests1/basicProjectWithSupport/ant.properties b/testapps/jarCheckTests1/basicProjectWithSupport/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/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/jarCheckTests1/basicProjectWithSupport/build.xml b/testapps/jarCheckTests1/basicProjectWithSupport/build.xml
new file mode 100644
index 0000000..f3a3d91
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicProjectWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests1/basicProjectWithSupport/libs/android-support-v4.jar b/testapps/jarCheckTests1/basicProjectWithSupport/libs/android-support-v4.jar
new file mode 100644
index 0000000..d006198
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/libs/android-support-v4.jar
Binary files differ
diff --git a/testapps/jarCheckTests1/basicProjectWithSupport/libs/foo.txt b/testapps/jarCheckTests1/basicProjectWithSupport/libs/foo.txt
new file mode 100644
index 0000000..fe0c852
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/libs/foo.txt
@@ -0,0 +1 @@
+sdf \ No newline at end of file
diff --git a/testapps/jarCheckTests1/basicProjectWithSupport/proguard-project.txt b/testapps/jarCheckTests1/basicProjectWithSupport/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/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/jarCheckTests1/basicProjectWithSupport/project.properties b/testapps/jarCheckTests1/basicProjectWithSupport/project.properties
new file mode 100644
index 0000000..3c58bfa
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/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.reference.1=../basicLibWithSupport
+android.library.reference.2=../basicLibWithSupport2
diff --git a/testapps/jarCheckTests1/basicProjectWithSupport/res/layout/main.xml b/testapps/jarCheckTests1/basicProjectWithSupport/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests1/basicProjectWithSupport/res/values/strings.xml b/testapps/jarCheckTests1/basicProjectWithSupport/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/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/jarCheckTests1/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java b/testapps/jarCheckTests1/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java
new file mode 100644
index 0000000..c065839
--- /dev/null
+++ b/testapps/jarCheckTests1/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.projectwithsupport;
+
+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/jarCheckTests2/basicLibWithSupport/.classpath b/testapps/jarCheckTests2/basicLibWithSupport/.classpath
new file mode 100644
index 0000000..c5c5afd
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/.classpath
@@ -0,0 +1,9 @@
+<?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="lib" path="libs/android-support-v4.jar"/>
+ <classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/testapps/jarCheckTests2/basicLibWithSupport/.project b/testapps/jarCheckTests2/basicLibWithSupport/.project
new file mode 100644
index 0000000..467950f
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>test2Lib1</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/jarCheckTests2/basicLibWithSupport/AndroidManifest.xml b/testapps/jarCheckTests2/basicLibWithSupport/AndroidManifest.xml
new file mode 100644
index 0000000..a634bdb
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.libwithsupport"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests2/basicLibWithSupport/ant.properties b/testapps/jarCheckTests2/basicLibWithSupport/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/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/jarCheckTests2/basicLibWithSupport/build.xml b/testapps/jarCheckTests2/basicLibWithSupport/build.xml
new file mode 100644
index 0000000..772f422
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicLibWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests2/basicLibWithSupport/libs/android-support-v4.jar b/testapps/jarCheckTests2/basicLibWithSupport/libs/android-support-v4.jar
new file mode 100644
index 0000000..d006198
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/libs/android-support-v4.jar
Binary files differ
diff --git a/testapps/jarCheckTests2/basicLibWithSupport/proguard-project.txt b/testapps/jarCheckTests2/basicLibWithSupport/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/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/jarCheckTests2/basicLibWithSupport/project.properties b/testapps/jarCheckTests2/basicLibWithSupport/project.properties
new file mode 100644
index 0000000..23d80c4
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/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/jarCheckTests2/basicLibWithSupport/res/layout/main.xml b/testapps/jarCheckTests2/basicLibWithSupport/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests2/basicLibWithSupport/res/values/strings.xml b/testapps/jarCheckTests2/basicLibWithSupport/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/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/jarCheckTests2/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java b/testapps/jarCheckTests2/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java
new file mode 100644
index 0000000..2c316ca
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.libwithsupport;
+
+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/jarCheckTests2/basicLibWithSupport2/.classpath b/testapps/jarCheckTests2/basicLibWithSupport2/.classpath
new file mode 100644
index 0000000..c5c5afd
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/.classpath
@@ -0,0 +1,9 @@
+<?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="lib" path="libs/android-support-v4.jar"/>
+ <classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/testapps/jarCheckTests2/basicLibWithSupport2/.project b/testapps/jarCheckTests2/basicLibWithSupport2/.project
new file mode 100644
index 0000000..efeaaae
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>test2Lib2</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/jarCheckTests2/basicLibWithSupport2/AndroidManifest.xml b/testapps/jarCheckTests2/basicLibWithSupport2/AndroidManifest.xml
new file mode 100644
index 0000000..6fa91eb
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.libwithsupport2"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests2/basicLibWithSupport2/ant.properties b/testapps/jarCheckTests2/basicLibWithSupport2/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/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/jarCheckTests2/basicLibWithSupport2/build.xml b/testapps/jarCheckTests2/basicLibWithSupport2/build.xml
new file mode 100644
index 0000000..772f422
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicLibWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests2/basicLibWithSupport2/libs/android-support-v4.jar b/testapps/jarCheckTests2/basicLibWithSupport2/libs/android-support-v4.jar
new file mode 100644
index 0000000..1e90718
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/libs/android-support-v4.jar
Binary files differ
diff --git a/testapps/jarCheckTests2/basicLibWithSupport2/proguard-project.txt b/testapps/jarCheckTests2/basicLibWithSupport2/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/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/jarCheckTests2/basicLibWithSupport2/project.properties b/testapps/jarCheckTests2/basicLibWithSupport2/project.properties
new file mode 100644
index 0000000..23d80c4
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/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/jarCheckTests2/basicLibWithSupport2/res/layout/main.xml b/testapps/jarCheckTests2/basicLibWithSupport2/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests2/basicLibWithSupport2/res/values/strings.xml b/testapps/jarCheckTests2/basicLibWithSupport2/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/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/jarCheckTests2/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java b/testapps/jarCheckTests2/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java
new file mode 100644
index 0000000..fc97aa7
--- /dev/null
+++ b/testapps/jarCheckTests2/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.libwithsupport2;
+
+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/jarCheckTests2/basicProjectWithSupport/.classpath b/testapps/jarCheckTests2/basicProjectWithSupport/.classpath
new file mode 100644
index 0000000..a4763d1
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/.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/jarCheckTests2/basicProjectWithSupport/.project b/testapps/jarCheckTests2/basicProjectWithSupport/.project
new file mode 100644
index 0000000..f236696
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>test2App</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/jarCheckTests2/basicProjectWithSupport/AndroidManifest.xml b/testapps/jarCheckTests2/basicProjectWithSupport/AndroidManifest.xml
new file mode 100644
index 0000000..ff41761
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.projectwithsupport"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests2/basicProjectWithSupport/ant.properties b/testapps/jarCheckTests2/basicProjectWithSupport/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/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/jarCheckTests2/basicProjectWithSupport/build.xml b/testapps/jarCheckTests2/basicProjectWithSupport/build.xml
new file mode 100644
index 0000000..f3a3d91
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicProjectWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests2/basicProjectWithSupport/libs/foo.txt b/testapps/jarCheckTests2/basicProjectWithSupport/libs/foo.txt
new file mode 100644
index 0000000..fe0c852
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/libs/foo.txt
@@ -0,0 +1 @@
+sdf \ No newline at end of file
diff --git a/testapps/jarCheckTests2/basicProjectWithSupport/proguard-project.txt b/testapps/jarCheckTests2/basicProjectWithSupport/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/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/jarCheckTests2/basicProjectWithSupport/project.properties b/testapps/jarCheckTests2/basicProjectWithSupport/project.properties
new file mode 100644
index 0000000..cf77006
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/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.reference.1=../basicLibWithSupport
+android.library.reference.2=../basicLibWithSupport2 \ No newline at end of file
diff --git a/testapps/jarCheckTests2/basicProjectWithSupport/res/layout/main.xml b/testapps/jarCheckTests2/basicProjectWithSupport/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests2/basicProjectWithSupport/res/values/strings.xml b/testapps/jarCheckTests2/basicProjectWithSupport/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/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/jarCheckTests2/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java b/testapps/jarCheckTests2/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java
new file mode 100644
index 0000000..c065839
--- /dev/null
+++ b/testapps/jarCheckTests2/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.projectwithsupport;
+
+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/jarCheckTests3/basicLibWithSupport/AndroidManifest.xml b/testapps/jarCheckTests3/basicLibWithSupport/AndroidManifest.xml
new file mode 100644
index 0000000..a634bdb
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.libwithsupport"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests3/basicLibWithSupport/ant.properties b/testapps/jarCheckTests3/basicLibWithSupport/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/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/jarCheckTests3/basicLibWithSupport/build.xml b/testapps/jarCheckTests3/basicLibWithSupport/build.xml
new file mode 100644
index 0000000..772f422
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicLibWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests3/basicLibWithSupport/libs/android-support-v4.jar b/testapps/jarCheckTests3/basicLibWithSupport/libs/android-support-v4.jar
new file mode 100644
index 0000000..d006198
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/libs/android-support-v4.jar
Binary files differ
diff --git a/testapps/jarCheckTests3/basicLibWithSupport/proguard-project.txt b/testapps/jarCheckTests3/basicLibWithSupport/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/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/jarCheckTests3/basicLibWithSupport/project.properties b/testapps/jarCheckTests3/basicLibWithSupport/project.properties
new file mode 100644
index 0000000..23d80c4
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/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/jarCheckTests3/basicLibWithSupport/res/layout/main.xml b/testapps/jarCheckTests3/basicLibWithSupport/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests3/basicLibWithSupport/res/values/strings.xml b/testapps/jarCheckTests3/basicLibWithSupport/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/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/jarCheckTests3/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java b/testapps/jarCheckTests3/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java
new file mode 100644
index 0000000..2c316ca
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.libwithsupport;
+
+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/jarCheckTests3/basicLibWithSupport2/AndroidManifest.xml b/testapps/jarCheckTests3/basicLibWithSupport2/AndroidManifest.xml
new file mode 100644
index 0000000..6fa91eb
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.libwithsupport2"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests3/basicLibWithSupport2/ant.properties b/testapps/jarCheckTests3/basicLibWithSupport2/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/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/jarCheckTests3/basicLibWithSupport2/build.xml b/testapps/jarCheckTests3/basicLibWithSupport2/build.xml
new file mode 100644
index 0000000..772f422
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicLibWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests3/basicLibWithSupport2/libs/android-support-v13.jar b/testapps/jarCheckTests3/basicLibWithSupport2/libs/android-support-v13.jar
new file mode 100644
index 0000000..c9354ec
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/libs/android-support-v13.jar
Binary files differ
diff --git a/testapps/jarCheckTests3/basicLibWithSupport2/proguard-project.txt b/testapps/jarCheckTests3/basicLibWithSupport2/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/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/jarCheckTests3/basicLibWithSupport2/project.properties b/testapps/jarCheckTests3/basicLibWithSupport2/project.properties
new file mode 100644
index 0000000..23d80c4
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/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/jarCheckTests3/basicLibWithSupport2/res/layout/main.xml b/testapps/jarCheckTests3/basicLibWithSupport2/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests3/basicLibWithSupport2/res/values/strings.xml b/testapps/jarCheckTests3/basicLibWithSupport2/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/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/jarCheckTests3/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java b/testapps/jarCheckTests3/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java
new file mode 100644
index 0000000..fc97aa7
--- /dev/null
+++ b/testapps/jarCheckTests3/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.libwithsupport2;
+
+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/jarCheckTests3/basicProjectWithSupport/AndroidManifest.xml b/testapps/jarCheckTests3/basicProjectWithSupport/AndroidManifest.xml
new file mode 100644
index 0000000..ff41761
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/AndroidManifest.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.tests.projectwithsupport"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <application android:label="@string/app_name">
+ <activity android:name=".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>
diff --git a/testapps/jarCheckTests3/basicProjectWithSupport/ant.properties b/testapps/jarCheckTests3/basicProjectWithSupport/ant.properties
new file mode 100644
index 0000000..ee52d86
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/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/jarCheckTests3/basicProjectWithSupport/build.xml b/testapps/jarCheckTests3/basicProjectWithSupport/build.xml
new file mode 100644
index 0000000..f3a3d91
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/build.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="basicProjectWithSupport" 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" />
+
+ <!-- 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 an env var"
+ unless="sdk.dir"
+ />
+
+
+<!-- extension targets. Uncomment the ones where you want to do custom work
+ in between standard targets -->
+<!--
+ <target name="-pre-build">
+ </target>
+ <target name="-pre-compile">
+ </target>
+
+ /* 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} */
+ <target name="-post-compile">
+ </target>
+-->
+
+ <!-- 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/jarCheckTests3/basicProjectWithSupport/libs/foo.txt b/testapps/jarCheckTests3/basicProjectWithSupport/libs/foo.txt
new file mode 100644
index 0000000..fe0c852
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/libs/foo.txt
@@ -0,0 +1 @@
+sdf \ No newline at end of file
diff --git a/testapps/jarCheckTests3/basicProjectWithSupport/proguard-project.txt b/testapps/jarCheckTests3/basicProjectWithSupport/proguard-project.txt
new file mode 100644
index 0000000..f2fe155
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/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/jarCheckTests3/basicProjectWithSupport/project.properties b/testapps/jarCheckTests3/basicProjectWithSupport/project.properties
new file mode 100644
index 0000000..3c58bfa
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/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.reference.1=../basicLibWithSupport
+android.library.reference.2=../basicLibWithSupport2
diff --git a/testapps/jarCheckTests3/basicProjectWithSupport/res/layout/main.xml b/testapps/jarCheckTests3/basicProjectWithSupport/res/layout/main.xml
new file mode 100644
index 0000000..7fe5dce
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/res/layout/main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="Hello World, MyActivity"
+ />
+</LinearLayout>
+
diff --git a/testapps/jarCheckTests3/basicProjectWithSupport/res/values/strings.xml b/testapps/jarCheckTests3/basicProjectWithSupport/res/values/strings.xml
new file mode 100644
index 0000000..3fa203a
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/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/jarCheckTests3/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java b/testapps/jarCheckTests3/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java
new file mode 100644
index 0000000..c065839
--- /dev/null
+++ b/testapps/jarCheckTests3/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java
@@ -0,0 +1,15 @@
+package com.android.tests.projectwithsupport;
+
+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);
+ }
+}