diff options
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 Binary files differnew file mode 100644 index 0000000..d006198 --- /dev/null +++ b/testapps/jarCheckTests1/basicLibWithSupport/libs/android-support-v4.jar 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 Binary files differnew file mode 100644 index 0000000..d006198 --- /dev/null +++ b/testapps/jarCheckTests1/basicLibWithSupport2/libs/android-support-v4.jar 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 Binary files differnew file mode 100644 index 0000000..d006198 --- /dev/null +++ b/testapps/jarCheckTests1/basicProjectWithSupport/libs/android-support-v4.jar 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 Binary files differnew file mode 100644 index 0000000..d006198 --- /dev/null +++ b/testapps/jarCheckTests2/basicLibWithSupport/libs/android-support-v4.jar 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 Binary files differnew file mode 100644 index 0000000..1e90718 --- /dev/null +++ b/testapps/jarCheckTests2/basicLibWithSupport2/libs/android-support-v4.jar 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 Binary files differnew file mode 100644 index 0000000..d006198 --- /dev/null +++ b/testapps/jarCheckTests3/basicLibWithSupport/libs/android-support-v4.jar 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 Binary files differnew file mode 100644 index 0000000..c9354ec --- /dev/null +++ b/testapps/jarCheckTests3/basicLibWithSupport2/libs/android-support-v13.jar 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); + } +} |