简体   繁体   中英

Building stORM getting dex error upon building with Gradle and Android Studio

stORM https://code.google.com/p/storm-gen/

I have the following in build.gradle

...
dependencies {
    compile 'com.android.support:support-v13:+'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.googlecode.libphonenumber:libphonenumber:6.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'log4j:log4j:1.2.16'
    compile 'org.slf4j:slf4j-log4j12:1.6.1'
}

android.applicationVariants.all { variant ->
    def aptOutput = file("${project.buildDir}/source/apt_generated/${variant.dirName}")

    variant.javaCompile.options.compilerArgs += [
            "-processor", "com.turbomanage.storm.apt.MainProcessor",
            '-AandroidManifestFile=' + variant.processResources.manifestFile,
            '-s', aptOutput
    ]

    variant.javaCompile.source = variant.javaCompile.source.filter { p ->
        return !p.getPath().startsWith(aptOutput.getPath())
    }

    variant.javaCompile.doFirst {
        aptOutput.mkdirs()
    }
}
...

Dropped in libs:

storm-api-0.97.jar
storm-apt-0.97.jar

And upon building with gradle assembleRelease, I get:

:app:dexRelease FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:dexRelease'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
    /xyz/android/sdk/build-tools/19.0.1/dx --dex --output 
/xyz/code/studio/Myapp/app/build/dex/release 
/xyz/code/studio/Myapp/app/build/classes/release 
/xyz/code/studio/Myapp/app/build/dependency-cache/release 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/libphonenumber-6.0-abc2e51ec6ac0cb8f28ec86ee41a37511055f6ea.jar 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/library-2.4.0-31f82b62b24973486e6bf5acdc255648bd6a567a.jar 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/log4j-1.2.16-51a933677ad733ef5cca3cb304434fddd96c08ca.jar 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/slf4j-api-1.6.1-a040969be47961e95d820688122f6e64c1ac6025.jar 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/slf4j-log4j12-1.6.1-8c58ce04b54255044a79c495ab437e1d1837ca00.jar 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/storm-api-0.97-5a13884740c461b336ce512036f4706f19544b0b.jar 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/storm-apt-0.97-59dde234977ec5d0b6dadf5e7497cf4d6ccb1649.jar 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/support-v13-19.1.0-dd8f989f7c1c7adbefa06c594c0cfc6cb6c75387.jar 
/xyz/code/studio/Myapp/app/build/pre-dexed/release/support-v4-19.1.0-155f54881a6e6cf88c81786a2d33043cfc538af3.jar
  Error Code:
2
  Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define   Lcom/example/storm/BuildConfig;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)

The command gradle -q dependencies, shows only

------------------------------------------------------------
Root project
------------------------------------------------------------

No configurations

Im not sure what the problem is, anyone?

It complains that both jars brought BuildConfig class (because of the way the two jars are build right now, which will change in the future).

You don't need the API jar, only the APT one (which contains the API classes, actually). This will remove your dex problem.

Another recommendation is to use android-apt , it'll make your life simpler!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM