xrd*_*xrd 210 android gradle android-support-library android-gradle-plugin
如果我从命令行运行gradle assembleDebug,我突然收到此错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
at com.android.dx.command.dexer.Main.run(Main.java:232)
at com.android.dx.command.dexer.Main.main(Main.java:174)
at com.android.dx.command.Main.main(Main.java:91)
Run Code Online (Sandbox Code Playgroud)
如果我grep for v4,我会在build文件夹中看到两个文件.
Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches
Run Code Online (Sandbox Code Playgroud)
我的gradle文件仅包含此支持库:
compile 'com.android.support:support-v13:19.0.0'
Run Code Online (Sandbox Code Playgroud)
关于如何以某种方式包含r7库,我很难过.我跑了gradle clean,当我重新运行assembleDebug时它总是出现在那里.
如果我在构建目录中grep r7,我在文件中看到它:
Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches
Run Code Online (Sandbox Code Playgroud)
如果我不包含v13,那么其他东西不会编译.
但v13是否包含v4支持库?
这是Play服务AAR包和v13库之间的不兼容吗?
我从gradleplease.appspot.com抓起了gradle文件.
删除播放服务并不能解决问题; 同样的错误.
我在build.gradle中的依赖项:
dependencies {
// Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'
// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}
Run Code Online (Sandbox Code Playgroud)
Com*_*are 304
运行gradle -q dependencies(或gradle -q :projectName:dependencies)以生成依赖关系报告.您应该看到r7来自哪里,例如:
compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
| +--- com.actionbarsherlock:actionbarsherlock:4.4.0
| | \--- com.google.android:support-v4:r7
| +--- com.commonsware.cwac:camera:0.5.4
| \--- com.android.support:support-v4:18.0.+ -> 18.0.0
\--- com.android.support:support-v4:18.0.+ -> 18.0.0
Run Code Online (Sandbox Code Playgroud)
然后,使用该exclude指令来阻止该依赖项.就我而言,它来自我的CWAC-Camera库,因此我使用:
dependencies {
compile('com.commonsware.cwac:camera-v9:0.5.4') {
exclude module: 'support-v4'
}
compile 'com.android.support:support-v4:18.0.+'
}
Run Code Online (Sandbox Code Playgroud)
(其中第二个compile语句表示您实际需要的版本)
这应该清楚了,因为你会看到你是否再次运行依赖报告:
compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
| +--- com.actionbarsherlock:actionbarsherlock:4.4.0
| \--- com.commonsware.cwac:camera:0.5.4
\--- com.android.support:support-v4:18.0.+ -> 18.0.0
Run Code Online (Sandbox Code Playgroud)
mik*_*hik 122
我通过在android块中的build.gradle文件中添加以下代码解决了类似的错误.
android {
dexOptions {
preDexLibraries = false
}
}
Run Code Online (Sandbox Code Playgroud)
MBH*_*MBH 35
因为一张图片胜过千言万语
为了让像我这样的初学者完成这项任务变得更容易,更快捷.这是截图显示@ edsappfactory.com发布的答案对我有用:
首先打开Androidstudio右侧的摇篮视图,在您的应用程序的项目去Tasks,然后Android再用鼠标右键单击androidDependencies,然后选择Run:
其次你会看到这样的东西:
我发布这个的主要原因是,要知道在哪里执行gradle任务或上面发布的命令并不容易.所以这也是执行它们的地方.
那么,执行gradle命令:
第一:
第二:
很容易.
而已.
谢谢.
Ed *_*ers 33
另外要注意,您可以通过转到Android Studio Gradle视图并选择目标"androidDependencies"来查看您的Android依赖项.
还有一个提示:我遇到了这个问题,直到我从项目和相关模块/库项目中的libs文件夹中删除了v4支持lib.
use*_*927 10
升级到ButterKnife 8.5.1时,我开始收到此错误.这里没有其他答案对我有用.
我曾经gradle -q :app:dependencies看到树,然后查看jar文件,直到我发现冲突.冲突是,butterknife的依赖com.android.support:support-compat:25.1.0包含了一个可访问类的版本,并且com.android.support:support-v4:23.1.1还包含该类.
我通过改变我对此的依赖来解决它:
compile 'com.jakewharton:butterknife:8.5.1'
Run Code Online (Sandbox Code Playgroud)
对此:
compile('com.jakewharton:butterknife:8.5.1') {
exclude module: 'support-compat'
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,它似乎并未影响ButterKnife的操作.
编辑:有一个更好的解决方案,这是升级我的Android支持库以匹配ButterKnife的:
compile('com.android.support:appcompat-v7:25.2.0')
compile('com.android.support:design:25.2.0')
compile 'com.jakewharton:butterknife:8.5.1'
Run Code Online (Sandbox Code Playgroud)
如果有人发现CommonsWare的答案无法应用于android库项目,这里是要解决的片段
compile (project(':yourAndroidLibrary')) {exclude module:'support-v13'}
你会发现问题
找不到支持的Gradle DSL方法:'exclude()'
如果您使用编译项目(':yourAndroidLibrary') {exclude module:'support-v13'}
不同之处是"项目"之前的手镯"("和")".
小智 8
我有同样的问题,似乎我的应用程序有太多的方法因为库:http: //developer.android.com/tools/building/multidex.html
解决了它:
android {
defaultConfig {
...
multiDexEnabled = true
}
}
Run Code Online (Sandbox Code Playgroud)
更多信息错误:任务':app:dexDebug'的执行失败.> comcommand以非零退出值2结束
exclude module: 'support-v4'
Run Code Online (Sandbox Code Playgroud)
对项目依赖项不起作用,我能让它工作的唯一方法是通过以下语法:
configurations {
dependencies {
compile(project(':Android-SDK')) {
compile.exclude module: 'support-v4'
}
}
}
Run Code Online (Sandbox Code Playgroud)
其中:Android-SDK是您的项目名称.
我在遗留项目上遇到了同样的错误.我的错是支持库被包含两次:一次进入google-play-services lib,另一次进入独立.
这就是我修复它的方法:
BAD build.gradle:
dependencies {
compile files('libs/android-support-v4.jar')
compile files('libs/core-2.2.jar')
compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
compile 'com.google.android.gms:play-services:3.2.65'
}
Run Code Online (Sandbox Code Playgroud)
GOOD build.gradle:
dependencies {
// compile files('libs/android-support-v4.jar') // not needed
compile files('libs/core-2.2.jar')
compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
compile 'com.google.android.gms:play-services:3.2.65'
}
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人:-)
| 归档时间: |
|
| 查看次数: |
163822 次 |
| 最近记录: |