From 44a21c237072fba5454732c74d1f7653523c4105 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet Date: Thu, 23 Feb 2012 11:07:19 -0800 Subject: Fix issue when a project and its libraries use the same jar files. This is only an issue in Ant because in Eclipse we don't automatically pull the jar files from libraries into the main project (we should somehow now that we have the Library Projects jar container that is dynamic). Right now we do a simple size/sha1 check on libraries that have the same name to figure out if they are the same version. If they are we only use one in the dex step (that notoriously fails to add the same class twice). If they are different we stop the build as it's an error (having two library projects depending on two different versions of a jar file should be an error as we can be sure the two versions are API compatible). For later: not use the file name only? find a way to version the libraries and to have them declare whether they are API compatible with older versions? Also added a hard-coded case for the Android Support Library. If both the v4 and the v13 are detected, use the v13 only as it includes the v4 already. New test apps. Three cases: - main and library projects with duplicate jar files that are identical - main and library projects with duplicate jar files that are NOT identical - main and library projects with v4 and v13 in the dependency list. Change-Id: I3a9abdcbec635d7c9d3228bdd105120f77178b27 --- anttasks/src/com/android/ant/DexExecTask.java | 43 +- .../com/android/sdklib/build/JarListSanitizer.java | 442 +++++++++++++++++++++ testapps/.gitignore | 6 +- .../basicLibWithSupport/AndroidManifest.xml | 15 + .../basicLibWithSupport/ant.properties | 17 + .../jarCheckTests1/basicLibWithSupport/build.xml | 85 ++++ .../libs/android-support-v4.jar | Bin 0 -> 247894 bytes .../basicLibWithSupport/proguard-project.txt | 20 + .../basicLibWithSupport/project.properties | 13 + .../basicLibWithSupport/res/layout/main.xml | 13 + .../basicLibWithSupport/res/values/strings.xml | 4 + .../android/tests/libwithsupport/MyActivity.java | 15 + .../basicLibWithSupport2/AndroidManifest.xml | 15 + .../basicLibWithSupport2/ant.properties | 17 + .../jarCheckTests1/basicLibWithSupport2/build.xml | 85 ++++ .../libs/android-support-v4.jar | Bin 0 -> 247894 bytes .../basicLibWithSupport2/proguard-project.txt | 20 + .../basicLibWithSupport2/project.properties | 13 + .../basicLibWithSupport2/res/layout/main.xml | 13 + .../basicLibWithSupport2/res/values/strings.xml | 4 + .../android/tests/libwithsupport2/MyActivity.java | 15 + .../basicProjectWithSupport/AndroidManifest.xml | 15 + .../basicProjectWithSupport/ant.properties | 17 + .../basicProjectWithSupport/build.xml | 85 ++++ .../libs/android-support-v4.jar | Bin 0 -> 247894 bytes .../basicProjectWithSupport/libs/foo.txt | 1 + .../basicProjectWithSupport/proguard-project.txt | 20 + .../basicProjectWithSupport/project.properties | 13 + .../basicProjectWithSupport/res/layout/main.xml | 13 + .../basicProjectWithSupport/res/values/strings.xml | 4 + .../tests/projectwithsupport/MyActivity.java | 15 + .../jarCheckTests2/basicLibWithSupport/.classpath | 9 + .../jarCheckTests2/basicLibWithSupport/.project | 33 ++ .../basicLibWithSupport/AndroidManifest.xml | 15 + .../basicLibWithSupport/ant.properties | 17 + .../jarCheckTests2/basicLibWithSupport/build.xml | 85 ++++ .../libs/android-support-v4.jar | Bin 0 -> 247894 bytes .../basicLibWithSupport/proguard-project.txt | 20 + .../basicLibWithSupport/project.properties | 13 + .../basicLibWithSupport/res/layout/main.xml | 13 + .../basicLibWithSupport/res/values/strings.xml | 4 + .../android/tests/libwithsupport/MyActivity.java | 15 + .../jarCheckTests2/basicLibWithSupport2/.classpath | 9 + .../jarCheckTests2/basicLibWithSupport2/.project | 33 ++ .../basicLibWithSupport2/AndroidManifest.xml | 15 + .../basicLibWithSupport2/ant.properties | 17 + .../jarCheckTests2/basicLibWithSupport2/build.xml | 85 ++++ .../libs/android-support-v4.jar | Bin 0 -> 244970 bytes .../basicLibWithSupport2/proguard-project.txt | 20 + .../basicLibWithSupport2/project.properties | 13 + .../basicLibWithSupport2/res/layout/main.xml | 13 + .../basicLibWithSupport2/res/values/strings.xml | 4 + .../android/tests/libwithsupport2/MyActivity.java | 15 + .../basicProjectWithSupport/.classpath | 8 + .../basicProjectWithSupport/.project | 33 ++ .../basicProjectWithSupport/AndroidManifest.xml | 15 + .../basicProjectWithSupport/ant.properties | 17 + .../basicProjectWithSupport/build.xml | 85 ++++ .../basicProjectWithSupport/libs/foo.txt | 1 + .../basicProjectWithSupport/proguard-project.txt | 20 + .../basicProjectWithSupport/project.properties | 13 + .../basicProjectWithSupport/res/layout/main.xml | 13 + .../basicProjectWithSupport/res/values/strings.xml | 4 + .../tests/projectwithsupport/MyActivity.java | 15 + .../basicLibWithSupport/AndroidManifest.xml | 15 + .../basicLibWithSupport/ant.properties | 17 + .../jarCheckTests3/basicLibWithSupport/build.xml | 85 ++++ .../libs/android-support-v4.jar | Bin 0 -> 247894 bytes .../basicLibWithSupport/proguard-project.txt | 20 + .../basicLibWithSupport/project.properties | 13 + .../basicLibWithSupport/res/layout/main.xml | 13 + .../basicLibWithSupport/res/values/strings.xml | 4 + .../android/tests/libwithsupport/MyActivity.java | 15 + .../basicLibWithSupport2/AndroidManifest.xml | 15 + .../basicLibWithSupport2/ant.properties | 17 + .../jarCheckTests3/basicLibWithSupport2/build.xml | 85 ++++ .../libs/android-support-v13.jar | Bin 0 -> 307683 bytes .../basicLibWithSupport2/proguard-project.txt | 20 + .../basicLibWithSupport2/project.properties | 13 + .../basicLibWithSupport2/res/layout/main.xml | 13 + .../basicLibWithSupport2/res/values/strings.xml | 4 + .../android/tests/libwithsupport2/MyActivity.java | 15 + .../basicProjectWithSupport/AndroidManifest.xml | 15 + .../basicProjectWithSupport/ant.properties | 17 + .../basicProjectWithSupport/build.xml | 85 ++++ .../basicProjectWithSupport/libs/foo.txt | 1 + .../basicProjectWithSupport/proguard-project.txt | 20 + .../basicProjectWithSupport/project.properties | 13 + .../basicProjectWithSupport/res/layout/main.xml | 13 + .../basicProjectWithSupport/res/values/strings.xml | 4 + .../tests/projectwithsupport/MyActivity.java | 15 + 91 files changed, 2253 insertions(+), 4 deletions(-) create mode 100644 sdkmanager/libs/sdklib/src/com/android/sdklib/build/JarListSanitizer.java create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/AndroidManifest.xml create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/ant.properties create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/build.xml create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/libs/android-support-v4.jar create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/proguard-project.txt create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/project.properties create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/res/layout/main.xml create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/res/values/strings.xml create mode 100644 testapps/jarCheckTests1/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/AndroidManifest.xml create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/ant.properties create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/build.xml create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/libs/android-support-v4.jar create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/proguard-project.txt create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/project.properties create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/res/layout/main.xml create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/res/values/strings.xml create mode 100644 testapps/jarCheckTests1/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/AndroidManifest.xml create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/ant.properties create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/build.xml create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/libs/android-support-v4.jar create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/libs/foo.txt create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/proguard-project.txt create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/project.properties create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/res/layout/main.xml create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/res/values/strings.xml create mode 100644 testapps/jarCheckTests1/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/.classpath create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/.project create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/AndroidManifest.xml create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/ant.properties create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/build.xml create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/libs/android-support-v4.jar create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/proguard-project.txt create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/project.properties create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/res/layout/main.xml create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/res/values/strings.xml create mode 100644 testapps/jarCheckTests2/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/.classpath create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/.project create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/AndroidManifest.xml create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/ant.properties create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/build.xml create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/libs/android-support-v4.jar create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/proguard-project.txt create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/project.properties create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/res/layout/main.xml create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/res/values/strings.xml create mode 100644 testapps/jarCheckTests2/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/.classpath create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/.project create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/AndroidManifest.xml create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/ant.properties create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/build.xml create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/libs/foo.txt create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/proguard-project.txt create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/project.properties create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/res/layout/main.xml create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/res/values/strings.xml create mode 100644 testapps/jarCheckTests2/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/AndroidManifest.xml create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/ant.properties create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/build.xml create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/libs/android-support-v4.jar create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/proguard-project.txt create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/project.properties create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/res/layout/main.xml create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/res/values/strings.xml create mode 100644 testapps/jarCheckTests3/basicLibWithSupport/src/com/android/tests/libwithsupport/MyActivity.java create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/AndroidManifest.xml create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/ant.properties create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/build.xml create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/libs/android-support-v13.jar create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/proguard-project.txt create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/project.properties create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/res/layout/main.xml create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/res/values/strings.xml create mode 100644 testapps/jarCheckTests3/basicLibWithSupport2/src/com/android/tests/libwithsupport2/MyActivity.java create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/AndroidManifest.xml create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/ant.properties create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/build.xml create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/libs/foo.txt create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/proguard-project.txt create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/project.properties create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/res/layout/main.xml create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/res/values/strings.xml create mode 100644 testapps/jarCheckTests3/basicProjectWithSupport/src/com/android/tests/projectwithsupport/MyActivity.java 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 sanitizePaths(List paths) { + // first get the non-files. + List results = new ArrayList(); + 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 sanitize(List files) throws DifferentLibException, Sha1Exception { + List results = new ArrayList(); + + // get the cache list. + Map 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> nameMap = new HashMap>(); + + // 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 nameList = nameMap.get(filename); + if (nameList == null) { + nameList = new ArrayList(); + 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> entry : nameMap.entrySet()) { + List 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 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 results + * @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> nameMap, List results) { + List v4 = nameMap.get("android-support-v4.jar"); + List 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 getCachedJarList() { + Map cache = new HashMap(); + + 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> 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 \n"); + writer.write("# Encoding is UTF-8\n"); + + for (List 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 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 Binary files /dev/null and b/testapps/jarCheckTests1/basicLibWithSupport/libs/android-support-v4.jar 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 @@ + + + + + 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 @@ + + + MyActivity + 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 Binary files /dev/null and b/testapps/jarCheckTests1/basicLibWithSupport2/libs/android-support-v4.jar 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 @@ + + + + + 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 @@ + + + MyActivity + 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 Binary files /dev/null and b/testapps/jarCheckTests1/basicProjectWithSupport/libs/android-support-v4.jar 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 @@ + + + + + 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 @@ + + + MyActivity + 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 @@ + + + + + + + + + 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 @@ + + + test2Lib1 + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 Binary files /dev/null and b/testapps/jarCheckTests2/basicLibWithSupport/libs/android-support-v4.jar 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 @@ + + + + + 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 @@ + + + MyActivity + 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 @@ + + + + + + + + + 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 @@ + + + test2Lib2 + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 Binary files /dev/null and b/testapps/jarCheckTests2/basicLibWithSupport2/libs/android-support-v4.jar 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 @@ + + + + + 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 @@ + + + MyActivity + 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 @@ + + + + + + + + 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 @@ + + + test2App + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + 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 @@ + + + MyActivity + 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 Binary files /dev/null and b/testapps/jarCheckTests3/basicLibWithSupport/libs/android-support-v4.jar 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 @@ + + + + + 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 @@ + + + MyActivity + 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 Binary files /dev/null and b/testapps/jarCheckTests3/basicLibWithSupport2/libs/android-support-v13.jar 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 @@ + + + + + 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 @@ + + + MyActivity + 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 @@ + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + 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 @@ + + + MyActivity + 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); + } +} -- cgit v1.1