Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Instrumentation Test DEXing problems. #593

Closed
kingargyle opened this issue Feb 25, 2015 · 9 comments
Closed

Instrumentation Test DEXing problems. #593

kingargyle opened this issue Feb 25, 2015 · 9 comments

Comments

@kingargyle
Copy link

With android-maven-plugin 4.1.1 I'm having a problem getting the instrumentation apk created correctly. The issue is that it is trying add duplicate classes that come from dependencies that created the APK that is under test. All the duplicate classes come from AAR dependencies of the APK that is under test.

I managed to get a build to finally work by saying that the APK that is under test is provided, and having it use the JAR file for the apk, and then marking the additional group Ids and artificats as provided. However, this breaks running the tests in Intellij 14.

So here is the relevant maven output in which I was able to get things to work from maven.

[DEBUG] Adding jvm argument -Xmx1024M
[DEBUG] Using non-obfuscated input
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/altair/smartfusion-android/1.14.0-SNAPSHOT/smartfusion-android-1.14.0-SNAPSHOT.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/android/support/compatibility-v4/21.0.3/compatibility-v4-21.0.3.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpclient/4.3.1/httpclient-4.3.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpcore/4.3/httpcore-4.3.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpmime/4.3.1/httpmime-4.3.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/dagger/dagger/1.2.2/dagger-1.2.2.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/net/lingala/zip4j/zip4j/1.3.2/zip4j-1.3.2.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/google/analytics/libGoogleAnalyticsServices/3.0.0/libGoogleAnalyticsServices-3.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/path/android-priority-jobqueue/1.1.2/android-priority-jobqueue-1.1.2.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/de/greenrobot/eventbus/2.4.0/eventbus-2.4.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar
[DEBUG] /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/bin/java [-Xmx1024M, -jar, /Users/Shared/Jenkins/Home/tools/android-sdk/build-tools/21.1.2/lib/dx.jar, --dex, --output=/Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex, /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar, /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar, /Users/davidcarver/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar, /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpmime/4.3.1/httpmime-4.3.1.jar, /Users/davidcarver/.m2/repository/com/path/android-priority-jobqueue/1.1.2/android-priority-jobqueue-1.1.2.jar, /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar, /Users/davidcarver/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar, /Users/davidcarver/.m2/repository/android/support/compatibility-v4/21.0.3/compatibility-v4-21.0.3.jar, /Users/davidcarver/.m2/repository/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar, /Users/davidcarver/.m2/repository/com/squareup/dagger/dagger/1.2.2/dagger-1.2.2.jar, /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpcore/4.3/httpcore-4.3.jar, /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpclient/4.3.1/httpclient-4.3.1.jar, /Users/davidcarver/.m2/repository/com/google/analytics/libGoogleAnalyticsServices/3.0.0/libGoogleAnalyticsServices-3.0.0.jar, /Users/davidcarver/.m2/repository/net/lingala/zip4j/zip4j/1.3.2/zip4j-1.3.2.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar, /Users/davidcarver/.m2/repository/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar, /Users/davidcarver/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar, /Users/davidcarver/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar, /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar, /Users/davidcarver/.m2/repository/com/altair/smartfusion-android/1.14.0-SNAPSHOT/smartfusion-android-1.14.0-SNAPSHOT.jar, /Users/davidcarver/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar, /Users/davidcarver/.m2/repository/de/greenrobot/eventbus/2.4.0/eventbus-2.4.0.jar, /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar]
[INFO] Convert classes to Dex : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex
[DEBUG] ANDROID-040-000: Executing command: Commandline = /bin/sh -c cd /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests && /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/bin/java -Xmx1024M -jar /Users/Shared/Jenkins/Home/tools/android-sdk/build-tools/21.1.2/lib/dx.jar --dex --output=/Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar /Users/davidcarver/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpmime/4.3.1/httpmime-4.3.1.jar /Users/davidcarver/.m2/repository/com/path/android-priority-jobqueue/1.1.2/android-priority-jobqueue-1.1.2.jar /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar /Users/davidcarver/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar /Users/davidcarver/.m2/repository/android/support/compatibility-v4/21.0.3/compatibility-v4-21.0.3.jar /Users/davidcarver/.m2/repository/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar /Users/davidcarver/.m2/repository/com/squareup/dagger/dagger/1.2.2/dagger-1.2.2.jar /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpcore/4.3/httpcore-4.3.jar /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpclient/4.3.1/httpclient-4.3.1.jar /Users/davidcarver/.m2/repository/com/google/analytics/libGoogleAnalyticsServices/3.0.0/libGoogleAnalyticsServices-3.0.0.jar /Users/davidcarver/.m2/repository/net/lingala/zip4j/zip4j/1.3.2/zip4j-1.3.2.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar /Users/davidcarver/.m2/repository/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar /Users/davidcarver/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar /Users/davidcarver/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar /Users/davidcarver/.m2/repository/com/altair/smartfusion-android/1.14.0-SNAPSHOT/smartfusion-android-1.14.0-SNAPSHOT.jar /Users/davidcarver/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar /Users/davidcarver/.m2/repository/de/greenrobot/eventbus/2.4.0/eventbus-2.4.0.jar /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar

The dependency in the integration-tests pom looks like the following.

    <dependency>
        <groupId>android</groupId>
        <artifactId>android</artifactId>
        <version>${platform.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.android.support.test</groupId>
        <artifactId>testing-support-lib</artifactId>
        <version>0.1</version>
        <type>aar</type>
        <exclusions>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
        </exclusions>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.altair</groupId>
        <artifactId>smartfusion-android</artifactId>
        <version>${project.version}</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>com.altair</groupId>
        <artifactId>smartfusion-android</artifactId>
        <version>${project.version}</version>
        <type>apk</type>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.android.support</groupId>
        <artifactId>appcompat-v7</artifactId>
        <version>21.0.3</version>
        <type>aar</type>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>com.android.support</groupId>
                <artifactId>support-annotations</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.android.support</groupId>
                <artifactId>support-v4</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>com.android.support</groupId>
        <artifactId>cardview-v7</artifactId>
        <version>21.0.3</version>
        <type>aar</type>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.viewpagerindicator</groupId>
        <artifactId>library</artifactId>
        <version>2.4.1</version>
        <type>aar</type>
        <scope>provided</scope>

        <exclusions>
            <exclusion>
                <groupId>com.google.android</groupId>
                <artifactId>support-v4</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.google.android</groupId>
                <artifactId>android</artifactId>
            </exclusion>

        </exclusions>
    </dependency>

Now the version that works in IntelliJ but with maven looks like the following for the dependencies:

    <dependency>
        <groupId>android</groupId>
        <artifactId>android</artifactId>
        <version>${platform.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.android.support.test</groupId>
        <artifactId>testing-support-lib</artifactId>
        <version>0.1</version>
        <type>aar</type>
        <exclusions>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
        </exclusions>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.altair</groupId>
        <artifactId>smartfusion-android</artifactId>
        <version>${project.version}</version>
        <type>jar</type>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.altair</groupId>
        <artifactId>smartfusion-android</artifactId>
        <version>${project.version}</version>
        <type>apk</type>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.squareup.okhttp</groupId>
        <artifactId>mockwebserver</artifactId>
        <version>2.0.0</version>
    </dependency>

    <dependency>
        <groupId>com.jayway.android.robotium</groupId>
        <artifactId>robotium-solo</artifactId>
        <version>5.2.1</version>
    </dependency>

The output for this when dexing occurs for the integration-test module is as follows:

DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/ca_smartfusion-android_1.14.0-SNAPSHOT/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar
[DEBUG] /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/bin/java [-Xmx1024M, -jar, /Users/Shared/Jenkins/Home/tools/android-sdk/build-tools/21.1.2/lib/dx.jar, --dex, --output=/Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex, /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar, /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar, /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/ca_smartfusion-android_1.14.0-SNAPSHOT/classes.jar, /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar, /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar]
[INFO] Convert classes to Dex : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex
[DEBUG] ANDROID-040-000: Executing command: Commandline = /bin/sh -c cd /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests && /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/bin/java -Xmx1024M -jar /Users/Shared/Jenkins/Home/tools/android-sdk/build-tools/21.1.2/lib/dx.jar --dex --output=/Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/ca_smartfusion-android_1.14.0-SNAPSHOT/classes.jar /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar
[DEBUG] ANDROID-040-000: Executed command: Commandline = /bin/sh -c cd /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests && /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/bin/java -Xmx1024M -jar /Users/Shared/Jenkins/Home/tools/android-sdk/build-tools/21.1.2/lib/dx.jar --dex --output=/Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/ca_smartfusion-android_1.14.0-SNAPSHOT/classes.jar /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar, Result = 0

However when the tests are run on the emulator an IllegalAccessor Error is tossed.

02-25 10:48:21.189 2686-2686/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
at com.altair.fusion.android.injection.modules.AndroidModule$$ModuleAdapter.a(SourceFile:28)
at com.altair.fusion.android.injection.modules.AndroidModule$$ModuleAdapter.a(SourceFile:13)
at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(SourceFile:185)
at dagger.ObjectGraph$DaggerObjectGraph.access$000(SourceFile:138)
at dagger.ObjectGraph.create(SourceFile:129)
at com.altair.fusion.android.injection.FusionObjectGraph.createObjectGraph(FusionObjectGraph.java:38)
at com.altair.fusion.android.AbstractFusionApplication.onCreate(AbstractFusionApplication.java:23)
at com.altair.smartfusion.android.SmartFusionApplication.onCreate(SmartFusionApplication.java:18)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4444)
at android.app.ActivityThread.access$1300(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

Basically this is happening because a different implemenation of dagger is being found than what it expects. Dagger is really should come from the APK under test. If I change that apk to be:

    <dependency>
        <groupId>com.altair</groupId>
        <artifactId>smartfusion-android</artifactId>
        <version>${project.version}</version>
        <type>apk</type>
    </dependency>

Which is outlined in the maven-android-plugin docs to include the APK, and mark the jar as provided. I get a DEX error as it brings in the AARs twice.

Log output for the DEX error:

DEBUG] -- end configuration --
[DEBUG] Adding jvm argument -Xmx1024M
[DEBUG] Using non-obfuscated input
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes
[DEBUG] Extracting APK classes to target/classes : smartfusion-android
[DEBUG] Extracting APK : /Users/davidcarver/.m2/repository/com/altair/smartfusion-android/1.14.0-SNAPSHOT/smartfusion-android-1.14.0-SNAPSHOT.jar to /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target
[DEBUG] Extracting archive to /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target
[DEBUG] Expanding: /Users/davidcarver/.m2/repository/com/altair/smartfusion-android/1.14.0-SNAPSHOT/smartfusion-android-1.14.0-SNAPSHOT.jar into /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target
[DEBUG] expand complete
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/android/support/compatibility-v4/21.0.3/compatibility-v4-21.0.3.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpclient/4.3.1/httpclient-4.3.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpcore/4.3/httpcore-4.3.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpmime/4.3.1/httpmime-4.3.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/dagger/dagger/1.2.2/dagger-1.2.2.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/net/lingala/zip4j/zip4j/1.3.2/zip4j-1.3.2.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/google/analytics/libGoogleAnalyticsServices/3.0.0/libGoogleAnalyticsServices-3.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/path/android-priority-jobqueue/1.1.2/android-priority-jobqueue-1.1.2.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/de/greenrobot/eventbus/2.4.0/eventbus-2.4.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar
[DEBUG] Adding dex input : /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/ca_smartfusion-android_1.14.0-SNAPSHOT/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar
[DEBUG] Adding dex input : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar
[DEBUG] /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/bin/java [-Xmx1024M, -jar, /Users/Shared/Jenkins/Home/tools/android-sdk/build-tools/21.1.2/lib/dx.jar, --dex, --output=/Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex, /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar, /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar, /Users/davidcarver/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/ca_smartfusion-android_1.14.0-SNAPSHOT/classes.jar, /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpmime/4.3.1/httpmime-4.3.1.jar, /Users/davidcarver/.m2/repository/com/path/android-priority-jobqueue/1.1.2/android-priority-jobqueue-1.1.2.jar, /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar, /Users/davidcarver/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar, /Users/davidcarver/.m2/repository/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar, /Users/davidcarver/.m2/repository/android/support/compatibility-v4/21.0.3/compatibility-v4-21.0.3.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar, /Users/davidcarver/.m2/repository/com/squareup/dagger/dagger/1.2.2/dagger-1.2.2.jar, /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpcore/4.3/httpcore-4.3.jar, /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpclient/4.3.1/httpclient-4.3.1.jar, /Users/davidcarver/.m2/repository/com/google/analytics/libGoogleAnalyticsServices/3.0.0/libGoogleAnalyticsServices-3.0.0.jar, /Users/davidcarver/.m2/repository/net/lingala/zip4j/zip4j/1.3.2/zip4j-1.3.2.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar, /Users/davidcarver/.m2/repository/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar, /Users/davidcarver/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar, /Users/davidcarver/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes, /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar, /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar, /Users/davidcarver/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar, /Users/davidcarver/.m2/repository/de/greenrobot/eventbus/2.4.0/eventbus-2.4.0.jar, /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar]
[INFO] Convert classes to Dex : /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex
[DEBUG] ANDROID-040-000: Executing command: Commandline = /bin/sh -c cd /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests && /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/bin/java -Xmx1024M -jar /Users/Shared/Jenkins/Home/tools/android-sdk/build-tools/21.1.2/lib/dx.jar --dex --output=/Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes.dex /Users/davidcarver/.m2/repository/com/squareup/okhttp/okhttp/2.0.0/okhttp-2.0.0.jar /Users/davidcarver/.m2/repository/com/squareup/okhttp/mockwebserver/2.0.0/mockwebserver-2.0.0.jar /Users/davidcarver/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/ca_smartfusion-android_1.14.0-SNAPSHOT/classes.jar /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpmime/4.3.1/httpmime-4.3.1.jar /Users/davidcarver/.m2/repository/com/path/android-priority-jobqueue/1.1.2/android-priority-jobqueue-1.1.2.jar /Users/davidcarver/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.50/bcprov-jdk15on-1.50.jar /Users/davidcarver/.m2/repository/commons-codec/commons-codec/1.6/commons-codec-1.6.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_cardview-v7_21.0.3/classes.jar /Users/davidcarver/.m2/repository/commons-configuration/commons-configuration/1.10/commons-configuration-1.10.jar /Users/davidcarver/.m2/repository/android/support/compatibility-v4/21.0.3/compatibility-v4-21.0.3.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_recyclerview-v7_21.0.3/classes.jar /Users/davidcarver/.m2/repository/com/squareup/dagger/dagger/1.2.2/dagger-1.2.2.jar /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpcore/4.3/httpcore-4.3.jar /Users/davidcarver/.m2/repository/org/apache/httpcomponents/httpclient/4.3.1/httpclient-4.3.1.jar /Users/davidcarver/.m2/repository/com/google/analytics/libGoogleAnalyticsServices/3.0.0/libGoogleAnalyticsServices-3.0.0.jar /Users/davidcarver/.m2/repository/net/lingala/zip4j/zip4j/1.3.2/zip4j-1.3.2.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cas_appcompat-v7_21.0.3/classes.jar /Users/davidcarver/.m2/repository/org/apache/commons/commons-collections4/4.0/commons-collections4-4.0.jar /Users/davidcarver/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cast_testing-support-lib_0.1/classes.jar /Users/davidcarver/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/classes /Users/davidcarver/Work/IQ/git/fusion-android/integration-tests/target/unpacked-libs/cv_library_2.4.1/classes.jar /Users/davidcarver/.m2/repository/com/squareup/okio/okio/1.0.0/okio-1.0.0.jar /Users/davidcarver/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar /Users/davidcarver/.m2/repository/de/greenrobot/eventbus/2.4.0/eventbus-2.4.0.jar /Users/davidcarver/.m2/repository/com/jayway/android/robotium/robotium-solo/5.2.1/robotium-solo-5.2.1.jar
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO] warning: Ignoring InnerClasses attribute for an anonymous inner class
INFO that doesn't come with an
[INFO] associated EnclosingMethod attribute. This class was probably produced by a
[INFO] compiler that did not target the modern .class file format. The recommended
[INFO] solution is to recompile the class from source, using an up-to-date compiler
[INFO] and without specifying any "-target" type options. The consequence of ignoring
[INFO] this warning is that reflective operations on this class will incorrectly
[INFO] indicate that it is not an inner class.
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$anim;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$attr;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$bool;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$color;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$dimen;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$drawable;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$id;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$integer;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$layout;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.IllegalArgumentException: already added: Landroid/support/v7/appcompat/R$string;
[INFO] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
[INFO] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
[INFO] at com.android.dx.command.dexer.Main.processClass(Main.java:732)
[INFO] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
[INFO] at com.android.dx.command.dexer.Main.access$300(Main.java:83)
[INFO] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:632)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
[INFO] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:246)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:215)
[INFO] at com.android.dx.command.Main.main(Main.java:106)
[INFO]

IntelliJ itself seems to have issues with including the APK without the provided scope as well, as it tosses IllegalAccessorErrors.

All this inconsistency started happening after upgrading to 4.x, and moving to AARs. I'll try to work on a smaller project that can be used to demo this. The example that the android-maven-plugin has for integration tests is just a single APK without any AAR dependencies. The above scenario isn't currently included as far as I can tell in any of the sample projects used for testing.

@william-ferguson-au
Copy link
Contributor

I don't understand why your integration-test POM has deps like:
`

com.android.support
appcompat-v7
21.0.3
aar
provided


com.android.support
support-annotations


com.android.support
support-v4


<dependency>
    <groupId>com.android.support</groupId>
    <artifactId>cardview-v7</artifactId>
    <version>21.0.3</version>
    <type>aar</type>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.viewpagerindicator</groupId>
    <artifactId>library</artifactId>
    <version>2.4.1</version>
    <type>aar</type>
    <scope>provided</scope>

    <exclusions>
        <exclusion>
            <groupId>com.google.android</groupId>
            <artifactId>support-v4</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
        </exclusion>

    </exclusions>
</dependency>

`

These should only be defined as deps in your APK.

Also note that if your APK has a dep on an AAR (a) which itself has a dep on an AAR (b), and AAR (b) has internal libraries then 4.1.1 mistakenly includes the internal libs twice. This is fixed in PR#589

@kingargyle
Copy link
Author

That was the only way I could get things to work. Ideally, I'd only put a dependency on the APK, but doing so, then also brings in the APK's AARs which are already in the APK. The Dexing process needs to exclude any dependencies that the APK has since they are already included. Including the JAR and then excluding a bunch of stuff or marking it as provided so it doesn't get included is just ugly.

@kingargyle
Copy link
Author

I took a quick look at the sample. There are some additional dependencies I think that need to be added to replicate the current situation I'm seeing. We have multiple AARs that we depend on, and each of those may or may not have a dependency on appcompat-v7 AAR, which has a dependency on the AAR version of the support-v4 library. We also have dependencies in the AAR for recycler-view. We don't depend on the com.google.android items from Maven central, but depend on artificats deployed from the maven-android-sdk-deployer.

I'll try and get a small sample that can reproduce the the DEXing issue.

@mosabua
Copy link
Member

mosabua commented Feb 26, 2015

Excellent. It might be worth submitting it as an example project in a pull request..

@kingargyle
Copy link
Author

Yeah, once I create the sample project I'll put it up on my github account, and then make a pull request later. Also I think there needs to be a test that actually tries to launch the emulator and run the tests, as getting it dexing it part of the challenge.

@kingargyle
Copy link
Author

Alright, I found a way to produce the DEX issue simply.

In the sample project:

https://github.com/simpligility/android-maven-plugin/blob/master/src/test/projects/apidemos-android-16/apidemos-tests/pom.xml

The dependency scope on the APK that is under test is not being set as provided If I follow this example project way of doing the integration test, it will generate the DEX errors.

If I setup the project so that the scope is provided, I don't get the dexing errors.

Is there a way we could have an enforcer rule or something setup so that if an APK is a dependency that it's scope has to be provided?

I also think the documentation and the sample plugin need to be clear that the scope needs to be provided.

I have some other issues but I'll open a separate issue for those when it comes to running some of my tests that are using Dagger for dependency injection.

kingargyle pushed a commit to kingargyle/sample-dex-issue that referenced this issue Feb 27, 2015
@kingargyle
Copy link
Author

Here is a sample project, you'll need to have used maven-sdk-deployer and installed locally the AAR versions of the support libraries in order to get this replicate the issue.

https://github.com/kingargyle/sample-dex-issue

@mhanschi
Copy link

I have the same problem, is there a solution for this?

@mosabua
Copy link
Member

mosabua commented May 3, 2019

Closing old issue since it wont be worked on at this stage anyway.

@mosabua mosabua closed this as completed May 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants