使用Android Gradle插件0.7.0以下内容build.gradle
:
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.7.0' } } apply plugin: 'android' repositories { maven { url "https://android-rome-feed-reader.googlecode.com/svn/maven2/releases" } maven { url "http://dl.bintray.com/populov/maven" } mavenCentral() } android { compileSdkVersion 19 buildToolsVersion '18.1.1' defaultConfig { minSdkVersion 9 targetSdkVersion 19 } buildTypes { release { runProguard true proguardFile getDefaultProguardFile('proguard-android-optimize.txt') } } productFlavors { defaultFlavor { proguardFile 'proguard-rules.txt' } } sourceSets { instrumentTest.setRoot('src/instrumentTest') } } configurations { apt } ext.androidAnnotationsVersion = '2.7.1'; dependencies { compile 'com.android.support:support-v4:18.0.0' compile 'com.viewpagerindicator:library:2.4.1@aar' compile 'com.google.code.android-rome-feed-reader:android-rome-feed-reader:1.0.0-r2' compile 'org.jdom:jdom:1.1.1-android-fork' apt "com.googlecode.androidannotations:androidannotations:${androidAnnotationsVersion}" compile "com.googlecode.androidannotations:androidannotations-api:${androidAnnotationsVersion}" compile 'com.google.code.gson:gson:2.2.4' compile 'com.j256.ormlite:ormlite-android:4.47' compile 'com.j256.ormlite:ormlite-core:4.47' compile 'org.springframework.android:spring-android-core:1.0.1.RELEASE' compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE' compile 'com.prolificinteractive:actionbarsherlock:4.3.1@aar' compile 'com.google.code.geocoder-java:geocoder-java:0.15' compile files('libs/CWAC-Pager.jar') } android.applicationVariants.all { variant -> aptOutput = file("${project.buildDir}/source/apt_generated/${variant.dirName}") println "****************************" println "variant: ${variant.name}" println "manifest: ${variant.processResources.manifestFile}" println "aptOutput: ${aptOutput}" println "****************************" variant.javaCompile.doFirst { println "*** compile doFirst ${variant.name}" aptOutput.mkdirs() variant.javaCompile.options.compilerArgs += [ '-processorpath', configurations.apt.getAsPath(), '-AandroidManifestFile=' + variant.processResources.manifestFile, '-s', aptOutput ] } }
给出错误Duplicate files copied in APK META-INF/LICENSE.txt
:
WARNING: Dependency commons-logging:commons-logging:1.0.4 is ignored for defaultFlavorDebug as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages WARNING: Dependency commons-logging:commons-logging:1.0.4 is ignored for defaultFlavorRelease as it may be conflicting with the internal version provided by Android. In case of problem, please repackage it with jarjar to change the class packages Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties. Deprecated dynamic property: "aptOutput" on "com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@5705013c", value: "/Users/david/Developer...". **************************** variant: defaultFlavorDebug manifest: /Users/david/Developer/.../build/manifests/defaultFlavor/debug/AndroidManifest.xml aptOutput: /Users/david/Developer/.../build/source/apt_generated/defaultFlavor/debug **************************** Deprecated dynamic property "aptOutput" created in multiple locations. **************************** variant: defaultFlavorRelease manifest: /Users/david/Developer/.../build/manifests/defaultFlavor/release/AndroidManifest.xml aptOutput: /Users/david/Developer/.../build/source/apt_generated/defaultFlavor/release **************************** :TravelGuard:compileDefaultFlavorDebugNdk UP-TO-DATE :TravelGuard:preBuild UP-TO-DATE :TravelGuard:preDefaultFlavorDebugBuild UP-TO-DATE :TravelGuard:preDefaultFlavorReleaseBuild UP-TO-DATE :TravelGuard:prepareComProlificinteractiveActionbarsherlock431Library UP-TO-DATE :TravelGuard:prepareComViewpagerindicatorLibrary241Library UP-TO-DATE :TravelGuard:prepareDefaultFlavorDebugDependencies :TravelGuard:compileDefaultFlavorDebugAidl UP-TO-DATE :TravelGuard:compileDefaultFlavorDebugRenderscript UP-TO-DATE :TravelGuard:generateDefaultFlavorDebugBuildConfig UP-TO-DATE :TravelGuard:mergeDefaultFlavorDebugAssets UP-TO-DATE :TravelGuard:mergeDefaultFlavorDebugResources UP-TO-DATE :TravelGuard:processDefaultFlavorDebugManifest UP-TO-DATE :TravelGuard:processDefaultFlavorDebugResources UP-TO-DATE :TravelGuard:generateDefaultFlavorDebugSources UP-TO-DATE :TravelGuard:compileDefaultFlavorDebugJava *** compile doFirst defaultFlavorDebug /Users/david/Developer/.../src/main/java/com/travelguard/service/TravelGuardService.java:53: cannot find symbol symbol : class TravelGuardPrefs_ location: class com.travelguard.service.TravelGuardService TravelGuardPrefs_ travelGuardPrefs; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/CategoriesActivity.java:14: cannot find symbol symbol : class AssistanceFragment_ location: package com.travelguard.ui.fragments import com.travelguard.ui.fragments.AssistanceFragment_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/CategoriesActivity.java:16: cannot find symbol symbol : class CategoryFragment_ location: package com.travelguard.ui.fragments import com.travelguard.ui.fragments.CategoryFragment_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/CategoriesActivity.java:17: cannot find symbol symbol : class ContactFragment_ location: package com.travelguard.ui.fragments import com.travelguard.ui.fragments.ContactFragment_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/CountriesActivity.java:25: cannot find symbol symbol : class TravelGuardPrefs_ location: package com.travelguard.service import com.travelguard.service.TravelGuardPrefs_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/CountriesActivity.java:44: cannot find symbol symbol : class TravelGuardPrefs_ location: class com.travelguard.ui.CountriesActivity TravelGuardPrefs_ travelGuardPrefs; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/InstructionsActivity.java:18: cannot find symbol symbol : class AssistanceFragment_ location: package com.travelguard.ui.fragments import com.travelguard.ui.fragments.AssistanceFragment_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/InstructionsActivity.java:19: cannot find symbol symbol : class ContactFragment_ location: package com.travelguard.ui.fragments import com.travelguard.ui.fragments.ContactFragment_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/InstructionsActivity.java:21: cannot find symbol symbol : class InstructionsFragment_ location: package com.travelguard.ui.fragments import com.travelguard.ui.fragments.InstructionsFragment_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/MainActivity.java:36: cannot find symbol symbol : class TravelGuardPrefs_ location: package com.travelguard.service import com.travelguard.service.TravelGuardPrefs_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/MainActivity.java:40: cannot find symbol symbol : class AssistanceFragment_ location: package com.travelguard.ui.fragments import com.travelguard.ui.fragments.AssistanceFragment_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/MainActivity.java:41: cannot find symbol symbol : class ContactFragment_ location: package com.travelguard.ui.fragments import com.travelguard.ui.fragments.ContactFragment_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/MainActivity.java:55: cannot find symbol symbol : class TravelGuardPrefs_ location: class com.travelguard.ui.MainActivity TravelGuardPrefs_ travelGuardPrefs; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/TermsActivity.java:17: cannot find symbol symbol : class TravelGuardPrefs_ location: package com.travelguard.service import com.travelguard.service.TravelGuardPrefs_; ^ /Users/david/Developer/.../src/main/java/com/travelguard/ui/TermsActivity.java:23: cannot find symbol symbol : class TravelGuardPrefs_ location: class com.travelguard.ui.TermsActivity TravelGuardPrefs_ travelGuardPrefs; ^ Note: Starting AndroidAnnotations annotation processing Note: AndroidManifest.xml file found: /Users/david/Developer/.../build/manifests/defaultFlavor/debug/AndroidManifest.xml Note: Number of files generated by AndroidAnnotations: 22 Note: Generating source file: com.travelguard.service.SmartTravellerService_ Note: Generating source file: com.travelguard.service.SmartTravellerWebservice_ Note: Generating source file: com.travelguard.service.TravelGuardPrefs_ Note: Generating source file: com.travelguard.service.TravelGuardService_ Note: Generating source file: com.travelguard.service.TravelGuardWebservice_ Note: Generating source file: com.travelguard.ui.AdviceActivity_ Note: Generating source file: com.travelguard.ui.CategoriesActivity_ Note: Generating source file: com.travelguard.ui.ContactDetailActivity_ Note: Generating source file: com.travelguard.ui.ContactListActivity_ Note: Generating source file: com.travelguard.ui.ContactTravelGuardActivity_ Note: Generating source file: com.travelguard.ui.CountriesActivity_ Note: Generating source file: com.travelguard.ui.InformationActivity_ Note: Generating source file: com.travelguard.ui.InstructionsActivity_ Note: Generating source file: com.travelguard.ui.MainActivity_ Note: Generating source file: com.travelguard.ui.TermsActivity_ Note: Generating source file: com.travelguard.ui.TravelGuardActivity_ Note: Generating source file: com.travelguard.ui.fragments.AdviceDetailFragment_ Note: Generating source file: com.travelguard.ui.fragments.AdviceFragment_ Note: Generating source file: com.travelguard.ui.fragments.AssistanceFragment_ Note: Generating source file: com.travelguard.ui.fragments.CategoryFragment_ Note: Generating source file: com.travelguard.ui.fragments.ContactFragment_ Note: Generating source file: com.travelguard.ui.fragments.InstructionsFragment_ Note: Time measurements: [Whole Processing = 913 ms], [Generate Sources = 358 ms], [Extract Manifest = 163 ms], [Process Annotations = 158 ms], [Extract Annotations = 120 ms], [Validate Annotations = 82 ms], [Find R Classes = 28 ms], Note: Time measurements: [Whole Processing = 0 ms], Note: Time measurements: [Whole Processing = 0 ms], warning: The following options were not recognized by any processor: '[androidManifestFile]' Note: /Users/david/Developer/.../src/main/java/com/travelguard/ui/ContactDetailActivity.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: /Users/david/Developer/.../src/main/java/com/travelguard/service/SmartTravellerService.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. :TravelGuard:preDexDefaultFlavorDebug UP-TO-DATE :TravelGuard:dexDefaultFlavorDebug :TravelGuard:processDefaultFlavorDebugJavaRes UP-TO-DATE :TravelGuard:validateDebugSigning :TravelGuard:packageDefaultFlavorDebug Error: duplicate files during packaging of APK /Users/david/Developer/.../build/apk/TravelGuard-defaultFlavor-debug-unaligned.apk Path in archive: META-INF/LICENSE.txt Origin 1: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar Origin 2: /Users/david/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.2/397f4731a9f9b6eb1907e224911c77ea3aa27a8b/commons-codec-1.2.jar :TravelGuard:packageDefaultFlavorDebug FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':TravelGuard:packageDefaultFlavorDebug'. > Duplicate files copied in APK META-INF/LICENSE.txt File 1: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar File 2: /Users/david/.gradle/caches/modules-2/files-2.1/commons-httpclient/commons-httpclient/3.1/964cd74171f427720480efdec40a7c7f6e58426a/commons-httpclient-3.1.jar * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 21.957 secs
在我更新Android Studio之前,今天早上工作正常.有任何想法吗?
编辑:我能够通过运行命令暂时修复它
zip -d spring-android-core-1.0.1.RELEASE.jar META-INF/notice.txt
直到所有重复的错误都消失了.
在我的情况下,我必须包括几个额外的排除.它似乎不喜欢正则表达式,这将使这个很好的单行.
android {
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'
}
}
packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' }
你应该添加:
android { packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude '...' } }
到你的build.gradle
文件.
根据此错误中的评论14:https://issuetracker.google.com/issues/36982149#comment14这是Android Gradle插件的v0.7.0中的一个错误,并且很快将在0.7.1中修复.
以下是关于0.7.1的添加的bug的注释:
0.7.1已经解决了这个问题.
要排除文件的DSL是:
android { packagingOptions { exclude 'META-INF/LICENSE.txt' } }
您可以根据需要添加任意数量的exclude语句.该值是归档路径.还没有通配符或glob支持.
文件名"LICENSE.txt"和"NOTICE.txt"区分大小写.请尝试使用"license.txt"和"notice.txt".
看看Sakiboy的评论!
从Gradle 0.9.1开始,支持以下内容:
android.packagingOptions {
pickFirst 'META-INF/LICENSE.txt'
}
Gradle发行说明中的更多信息.
我在Android Studio 0.8.6中导出库httclient-4.3.5时遇到的问题包括:
packagingOptions{ exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' }
库zip包含下一个jar:
commons-codec-1.6.jar commons-logging-1.1.3.jar fluent-hc-4.3.5.jar httpclient-4.3.5.jar httpclient-cache-4.3.5.jar httpcore-4.3.2.jar httpmime-4.3.5.jar
这个bug仍然存在于0.8 +/1.10中
与杰克逊
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-csv:2.2.2'
在编译之前,我必须包括以上建议
exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'
这不止一个错误
下 apply plugin: 'android-library'
添加这个::
android { packagingOptions { exclude 'META-INF/ASL2.0' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' } }
如果重复文件很容易,请查看目录JAR
下的内部META-INF
并查看导致错误的原因.它可能是多重的.在我的情况下Couchbase Lite插件.当您添加更多插件时,您将需要更多例外