【问题标题】:How to include a modified third-party library in Android? [duplicate]如何在 Android 中包含修改后的第三方库? [复制]
【发布时间】:2016-05-10 07:18:55
【问题描述】:

在我的 Android 项目中,我使用的是 barcodescanner

我需要自定义定位二维码时显示的框架矩形的大小,我注意到实现此目的的唯一方法是修改库中的类。

现在我想知道,包含我对库所做的更改的最佳方式是什么?

如果我可以像以前在一些 java 项目中那样在源代码中简单地包含带有原始包的类,那就太好了,但是在 Android 中我得到一个错误:

com.android.dex.DexException: Multiple dex files define Lme/dm7/barcodescanner/core/ViewFinderView;

因为它会找到 2 个具有相同签名的类(1 个在库中,1 个在我的源代码中)。

有没有办法避免这种冲突?还是有更好的方法将 3rd 方库包含在更改中?

【问题讨论】:

  • 快速回答,无需像我应该做的所有繁琐的工作来解释这一切:fork repo,进行更改并将它们推送到你的 fork,然后将 gradle 指向你的 fork。
  • 我想我需要在我的项目中包含构建的分叉库(=aar 文件),除非我将工件发布到某个存储库。对吗?
  • 有没有办法简单地扩展类并覆盖它们的行为?
  • 不幸的是没有...我需要在我的项目中修改和导入 4 个类只是为了更改私有静态最终常量的值...我试图了解是否有更清洁的并且比这样做更容易维护。

标签: java android classpath dex


【解决方案1】:

Git 将库项目克隆到您的计算机,进行所需的所有更改,然后将其作为库模块添加到您的项目中:

New module -> import gradle project

将其标记为您的应用模块的模块依赖项:

Open module settings -> dependencies -> add module dependency

从 build.gradle 中移除旧的依赖以避免

多个dex文件定义...

错误。

【讨论】:

    猜你喜欢
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多