我正在将应用程序从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
当我在调试模式下运行时,应用程序构建没有问题,但是,当我尝试Build 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
时,构建失败并显示调试日志,无法使用index out of bound, length: 0, index: 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 :dependencies
,因为我似乎没有项目名称:
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
答案 0 :(得分:0)
感谢您编辑问题。由于有很多jar库,我们几乎不可能复制错误。
所以,这里有一些尝试。由于您在添加{% if serializers %}
{{ serializers }}
{% endif %}
{% if objects %}
{% for object in objects %}
<ul>
<li>{{ object.Title }}</li>
<li>{{ object.Category }}</li>
</ul>
{% endfor %}
{% else %}
<p>No objects.</p>
{% endif %}
lib之后说错误,请执行以下操作:
com.android.support:appcompat-v7:25.0.0
查看它是否有效或错误是否发生变化
编辑:
您运行了以下命令:compile (compile 'com.android.support:appcompat-v7:25.0.0') {
exclude module: 'support-v4'
}
您可以在Android Studio终端中运行此命令,并在您的问题中发布./gradlew -q dependencies :dependencies --configuration compile
和debugApk
个相关信息。
命令(如果应用程序不同,请将应用程序更改为您的模块名称):
releaseApk
答案 1 :(得分:0)
我想你添加的一些依赖项中包含appcompat-v4
导致错误,不太确定
可能的解决方案:
尝试删除zip4j_1.3.2.jar
,然后重新添加
compile 'com.android.support:appcompat-v7:24.2.0'
@ th3pat3l提出的建议:添加
compile (compile 'com.android.support:appcompat-v7:25.0.0') {
exclude module: 'support-v4'
}
Api版本提示&gt; 14:
compile ''xxx.xx.xx
答案 2 :(得分:0)
当我导入旧的Eclipse项目时,我也遇到过这种问题。它在项目中发生了一些旧的依赖项作为jar文件。
第一种方法就是删除
compile fileTree(dir: 'libs', include: '*.jar')
在gradle文件中
并在gradle文件中添加依赖项。
对我有用..
第二种方式
您现在可能已经解决了这个问题,但这样做并没有得到解决,请尝试将其添加到build.gradle:
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
答案 3 :(得分:0)
尝试清理项目,然后从Android Studio重建项目