安卓解决包冲突问题。

在安卓开发中,当我们项目中依赖的远程包里面有一模一样的包存在时就会导致包冲突,我们常用的解决方式就是删除任意包里面的包的方式解决冲突。
android studio也告诉了我们如何添加编译依赖项,我们只要按照规范来操作就可以了。
排除不需要的依赖项的写法:

dependencies {
        implementation('some-library') {
            exclude group: 'com.example.imgtools', module: 'native'
        }
    }

所以解决包依赖冲突的关键问题是需要找到两个相互冲突的包的绝对路径,也就是说它们各自依赖的远程仓库,然后通过exclude关键字来剔除掉那个我们可以修改的冲突包,保留我们无法剔除的那个项目包**(比如Sdk里面的依赖包我们无法修改)**。
下面我们就来举一个例子:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: Duplicate class android.support.design.widget.CoordinatorLayout found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$1 found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$Behavior found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$DefaultBehavior found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$DispatchChangeEvent found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$HierarchyChangeListener found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$LayoutParams found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$OnPreDrawListener found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$SavedState found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$SavedState$1 found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  Duplicate class android.support.design.widget.CoordinatorLayout$ViewElevationComparator found in modules coordinatorlayout-28.0.0-runtime.jar (com.android.support:coordinatorlayout:28.0.0) and design-25.3.1-runtime.jar (com.android.support:design:25.3.1)
  
  Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 2s

这里项目其实已经是编译通过了,但是运行时报了包冲突的问题,As告诉我们在我们的项目中存在多个class android.support.design.widget.CoordinatorLayout ,我们需要做的就是找到这两个相互冲突的包,然后把剔除掉其中一个就可以解决问题了。
简单思路:我们先全局搜一下CoordinatorLayout,然后定位这个类的位置,然后再决定如何去处理这个冲突问题。
在这里插入图片描述
点击搜索,或者你可以按快捷键Ctrl+shift+F (windows),全局搜索CoordinatorLayout,然后我们找到了两个相同类在不同的远程依赖包里面。
在这里插入图片描述
在这里插入图片描述
现在问题终于找到了,就是这两个类,虽然不在同一个包下面,但是包名相同,导致他们其实是类冲突了。那么我们就需要找到这两个远程依赖对应的位置,然后剔除掉其中一个就可以了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android Studio中,APK打失败可能是由于多种因素引起的。以下是一些常见的问题解决方法: 1. Gradle配置问题:请确保你的Gradle配置文件没有错误,并且正确地引用了所需的依赖项。可以尝试重新同步Gradle文件来修复配置问题。在菜单栏中选择"File",然后选择"Invalidate Caches / Restart",最后选择"Invalidate and Restart"。 2. 编译错误:在Android Studio中,如果你的代码中存在语法错误或其他编译错误,APK打将会失败。请检查你的代码,修复所有的编译错误,并重新编译项目。 3. 内存问题:如果你的项目非常庞大,可能会导致APK打失败。这种情况下,你可以尝试增加分配给Gradle的内存。在项目根目录下的`gradle.properties`文件中,添加以下行:`org.gradle.jvmargs=-Xmx4096m`,然后重新编译项目。 4. 依赖冲突:如果你的项目中存在依赖冲突,也可能导致APK打失败。你可以使用Gradle的依赖排除功能,排除引起冲突的依赖项。例如,如果`libraryA`和`libraryB`产生冲突,你可以在`build.gradle`文件的`dependencies`块中添加以下代码来排除冲突项: ``` implementation ('libraryA') { exclude group: 'com.example.libraryB', module: 'libraryB' } ``` 5. 缓存问题:有时候,Android Studio的缓存可能会导致APK打失败。你可以尝试清理缓存来解决问题。在菜单栏中选择"File",然后选择"Invalidate Caches / Restart",最后选择"Invalidates and Restart"。 这些解决方法中的一种或多种可能会解决你在Android Studio中遇到的APK打失败问题。在尝试这些解决方法之前,建议备份你的项目以防万一。如果问题仍然存在,你可以查看Android Studio的日志文件以获取更多详细信息,并尝试在Stack Overflow等开发者社区中寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值