我正在将应用程序从2.3升级到Nougat(SDK 25).当我添加com.
android.support:appcompat-v7:25.0.0以支持ActivityCompat.requestPermissions时.当我在调试模式下运行它时,应用程序运行没有问题,但使用./gradlew assembleDebug运行会导致以下错误:
Error:Execution Failed for task ':transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/hardware/display/DisplayManagerCompat.class
当我在调试模式下运行时,应用程序构建没有问题,但是,当我尝试构建APK时,我得到上面的错误.
有没有办法可以追踪重复的包裹?我运行了以下内容:
./gradlew -q dependencies :dependencies --configuration compile ------------------------------------------------------------ Root project ------------------------------------------------------------ compile - Classpath for compiling the main sources. +--- com.android.support:multidex:1.0.1 +--- com.android.support:appcompat-v7:25.0.0 | +--- com.android.support:support-vector-drawable:25.0.0 | | \--- com.android.support:support-compat:25.0.0 | | \--- com.android.support:support-annotations:25.0.0 | \--- com.android.support:animated-vector-drawable:25.0.0 | \--- com.android.support:support-vector-drawable:25.0.0 (*) +--- project :deps:android-map-utils:library | \--- project :deps:google-maps-m4b \--- project :deps:google-play-services (*) - dependencies omitted (listed prevIoUsly)
这是我的build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' } } apply plugin: 'com.android.application' dependencies { compile 'com.android.support:multidex:1.0.1' compile 'com.android.support:appcompat-v7:25.0.0' compile fileTree(include: '*.jar',dir: 'libs') compile fileTree(include: '*.jar',dir: 'lib') compile project(':deps:google-maps-m4b') compile project(':deps:android-map-utils:library') compile project(':deps:google-play-services') } android { compileSdkVersion 24 buildToolsVersion '25.0.0' packagingOptions { exclude 'Meta-INF/DEPENDENCIES.txt' exclude 'Meta-INF/DEPENDENCIES' exclude 'Meta-INF/dependencies.txt' exclude 'Meta-INF/LICENSE.txt' exclude 'Meta-INF/LICENSE' exclude 'Meta-INF/license.txt' exclude 'Meta-INF/LGPL2.1' exclude 'Meta-INF/NOTICE.txt' exclude 'Meta-INF/NOTICE' exclude 'Meta-INF/notice.txt' } defaultConfig { // Already hit dex limit multiDexEnabled true dexOptions { javaMaxHeapSize "4g" } } lintOptions { abortOnError false } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] } // Move the tests to tests/java,tests/res,etc... instrumentTest.setRoot('tests') // Move the build types to build-types/<type> // For instance,build-types/debug/java,build-types/debug/AndroidManifest.xml,... // This moves them out of them default location under src/<type>/... which would // conflict with src/ being used by the main source set. // Adding new build types or product flavors should be accompanied // by a similar customization. debug.setRoot('build-types/debug') release.setRoot('build-types/release') } } allprojects { repositories { jcenter() } }
libs中的文件:armeabi / libcryptowrapper.so
lib中的文件:
ClientCertUtil.jar apache-mime4j-0.6.jar commons-codec-1.6.jar commons-io-2.4.jar commons-logging-1.1.3.jar gcm.jar httpclient-4.3.4.jar httpclientandroidlib-1.2.1.jar httpcore-4.3.jar httpmime-4.3.1.jar javarosa.jar joda-time-2.0.jar kxml2-2.3.0.jar mgrs.jar opencsv-2.3.jar regexp-me.jar zip4j_1.3.2.jar
将exclude module:’support-v4’添加到appcompat-v7时,构建失败仍然显示调试日志,无法加载索引超出范围的主活动,长度:0,索引:3:
Error:warning: Ignoring InnerClasses attribute for an anonymous inner class Error:(net.lingala.zip4j.unzip.Unzip$1) that doesn't come with an Error:associated EnclosingMethod attribute. This class was probably produced by a Error:compiler that did not target the modern .class file format. The recommended Error:solution is to recompile the class from source,using an up-to-date compiler Error:and without specifying any "-target" type options. The consequence of ignoring Error:this warning is that reflective operations on this class will incorrectly Error:indicate that it is *not* an inner class.
运行
./gradlew -q projects ------------------------------------------------------------ Root project ------------------------------------------------------------ Root project 'opendatakit-collect' \--- Project ':deps' +--- Project ':deps:android-map-utils' | \--- Project ':deps:android-map-utils:library' +--- Project ':deps:google-maps-m4b' \--- Project ':deps:google-play-services'
运行./gradlew:依赖项,因为我似乎没有项目名称:
Incremental java compilation is an incubating feature. :dependencies ------------------------------------------------------------ Root project ------------------------------------------------------------ _debugAndroidTestAnnotationProcessor - ## Internal use,do not manually configure ## No dependencies _debugAndroidTestApk - ## Internal use,do not manually configure ## \--- com.android.support:multidex-instrumentation:1.0.1 \--- com.android.support:multidex:1.0.1 _debugAndroidTestCompile - ## Internal use,do not manually configure ## \--- com.android.support:multidex-instrumentation:1.0.1 \--- com.android.support:multidex:1.0.1 _debugAnnotationProcessor - ## Internal use,do not manually configure ## No dependencies _debugApk - ## Internal use,do not manually configure ## +--- com.android.support:multidex:1.0.1 +--- com.android.support:appcompat-v7:25.0.0 | +--- com.android.support:support-vector-drawable:25.0.0 | | \--- com.android.support:support-compat:25.0.0 | | \--- com.android.support:support-annotations:25.0.0 | \--- com.android.support:animated-vector-drawable:25.0.0 | \--- com.android.support:support-vector-drawable:25.0.0 (*) +--- project :deps:google-maps-m4b +--- project :deps:android-map-utils:library | \--- project :deps:google-maps-m4b \--- project :deps:google-play-services _debugCompile - ## Internal use,do not manually configure ## +--- com.android.support:multidex:1.0.1 +--- com.android.support:appcompat-v7:25.0.0 | +--- com.android.support:support-vector-drawable:25.0.0 | | \--- com.android.support:support-compat:25.0.0 | | \--- com.android.support:support-annotations:25.0.0 | \--- com.android.support:animated-vector-drawable:25.0.0 | \--- com.android.support:support-vector-drawable:25.0.0 (*) +--- project :deps:google-maps-m4b +--- project :deps:android-map-utils:library | \--- project :deps:google-maps-m4b \--- project :deps:google-play-services _debugUnitTestAnnotationProcessor - ## Internal use,do not manually configure ## No dependencies _debugUnitTestApk - ## Internal use,do not manually configure ## No dependencies _debugUnitTestCompile - ## Internal use,do not manually configure ## No dependencies _releaseAnnotationProcessor - ## Internal use,do not manually configure ## No dependencies _releaseApk - ## Internal use,do not manually configure ## +--- com.android.support:multidex:1.0.1 +--- com.android.support:appcompat-v7:25.0.0 | +--- com.android.support:support-vector-drawable:25.0.0 | | \--- com.android.support:support-compat:25.0.0 | | \--- com.android.support:support-annotations:25.0.0 | \--- com.android.support:animated-vector-drawable:25.0.0 | \--- com.android.support:support-vector-drawable:25.0.0 (*) +--- project :deps:google-maps-m4b +--- project :deps:android-map-utils:library | \--- project :deps:google-maps-m4b \--- project :deps:google-play-services _releaseCompile - ## Internal use,do not manually configure ## +--- com.android.support:multidex:1.0.1 +--- com.android.support:appcompat-v7:25.0.0 | +--- com.android.support:support-vector-drawable:25.0.0 | | \--- com.android.support:support-compat:25.0.0 | | \--- com.android.support:support-annotations:25.0.0 | \--- com.android.support:animated-vector-drawable:25.0.0 | \--- com.android.support:support-vector-drawable:25.0.0 (*) +--- project :deps:google-maps-m4b +--- project :deps:android-map-utils:library | \--- project :deps:google-maps-m4b \--- project :deps:google-play-services _releaseUnitTestAnnotationProcessor - ## Internal use,do not manually configure ## No dependencies _releaseUnitTestApk - ## Internal use,do not manually configure ## No dependencies _releaseUnitTestCompile - ## Internal use,do not manually configure ## No dependencies androidJacocoAgent - The Jacoco agent to use to get coverage data. \--- org.jacoco:org.jacoco.agent:0.7.5.201505241946 androidJacocoAnt - The Jacoco ant tasks to use to get execute Gradle tasks. \--- org.jacoco:org.jacoco.ant:0.7.5.201505241946 +--- org.jacoco:org.jacoco.core:0.7.5.201505241946 | \--- org.ow2.asm:asm-debug-all:5.0.1 +--- org.jacoco:org.jacoco.report:0.7.5.201505241946 | +--- org.jacoco:org.jacoco.core:0.7.5.201505241946 (*) | \--- org.ow2.asm:asm-debug-all:5.0.1 \--- org.jacoco:org.jacoco.agent:0.7.5.201505241946 androidTestAnnotationProcessor - Classpath for the annotation processor for 'androidTest'. No dependencies androidTestApk - Classpath packaged with the compiled 'androidTest' classes. No dependencies androidTestCompile - Classpath for compiling the androidTest sources. No dependencies androidTestProvided - Classpath for only compiling the androidTest sources. No dependencies androidTestWearApp - Link to a wear app to embed for object 'androidTest'. No dependencies annotationProcessor - Classpath for the annotation processor for 'main'. No dependencies apk - Classpath packaged with the compiled 'main' classes. No dependencies archives - Configuration for archive artifacts. No dependencies compile - Classpath for compiling the main sources. +--- com.android.support:multidex:1.0.1 +--- com.android.support:appcompat-v7:25.0.0 | +--- com.android.support:support-vector-drawable:25.0.0 | | \--- com.android.support:support-compat:25.0.0 | | \--- com.android.support:support-annotations:25.0.0 | \--- com.android.support:animated-vector-drawable:25.0.0 | \--- com.android.support:support-vector-drawable:25.0.0 (*) +--- project :deps:google-maps-m4b +--- project :deps:android-map-utils:library | \--- project :deps:google-maps-m4b \--- project :deps:google-play-services debugAnnotationProcessor - Classpath for the annotation processor for 'debug'. No dependencies debugApk - Classpath packaged with the compiled 'debug' classes. No dependencies debugCompile - Classpath for compiling the debug sources. No dependencies debugProvided - Classpath for only compiling the debug sources. No dependencies debugWearApp - Link to a wear app to embed for object 'debug'. No dependencies default - Configuration for default artifacts. No dependencies default-mapping - Configuration for default mapping artifacts. No dependencies default-Metadata - Metadata for the produced APKs. No dependencies instrumentTestAnnotationProcessor - Classpath for the annotation processor for 'instrumentTest'. No dependencies instrumentTestApk - Classpath packaged with the compiled 'instrumentTest' classes. No dependencies instrumentTestCompile - Classpath for compiling the instrumentTest sources. No dependencies instrumentTestProvided - Classpath for only compiling the instrumentTest sources. No dependencies instrumentTestWearApp - Link to a wear app to embed for object 'instrumentTest'. No dependencies provided - Classpath for only compiling the main sources. No dependencies releaseAnnotationProcessor - Classpath for the annotation processor for 'release'. No dependencies releaseApk - Classpath packaged with the compiled 'release' classes. No dependencies releaseCompile - Classpath for compiling the release sources. No dependencies releaseProvided - Classpath for only compiling the release sources. No dependencies releaseWearApp - Link to a wear app to embed for object 'release'. No dependencies testAnnotationProcessor - Classpath for the annotation processor for 'test'. No dependencies testApk - Classpath packaged with the compiled 'test' classes. No dependencies testCompile - Classpath for compiling the test sources. No dependencies testDebugAnnotationProcessor - Classpath for the annotation processor for 'testDebug'. No dependencies testDebugApk - Classpath packaged with the compiled 'testDebug' classes. No dependencies testDebugCompile - Classpath for compiling the testDebug sources. No dependencies testDebugProvided - Classpath for only compiling the testDebug sources. No dependencies testDebugWearApp - Link to a wear app to embed for object 'testDebug'. No dependencies testProvided - Classpath for only compiling the test sources. No dependencies testReleaseAnnotationProcessor - Classpath for the annotation processor for 'testRelease'. No dependencies testReleaseApk - Classpath packaged with the compiled 'testRelease' classes. No dependencies testReleaseCompile - Classpath for compiling the testRelease sources. No dependencies testReleaseProvided - Classpath for only compiling the testRelease sources. No dependencies testReleaseWearApp - Link to a wear app to embed for object 'testRelease'. No dependencies testWearApp - Link to a wear app to embed for object 'test'. No dependencies wearApp - Link to a wear app to embed for object 'main'. No dependencies BUILD SUCCESSFUL Total time: 13.053 secs This build could be faster,please consider using the Gradle Daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html
解决方法
感谢您编辑问题.由于有很多jar库,我们几乎不可能复制错误.
所以,这里有一些尝试.由于您在添加com.android.support:appcompat-v7:25.0.0 lib后出现错误,请执行以下操作:
compile (compile 'com.android.support:appcompat-v7:25.0.0') { exclude module: 'support-v4' }
查看它是否有效或错误是否发生变化
编辑:
您运行了以下命令:./ gradlew -q dependencies:dependencies –configuration compile
您可以在Android Studio终端中运行此命令,并在您的问题中发布debugApk和releaseApk依赖项.
./gradlew app:dependencies