【问题标题】:How to use same libraries on whole project?如何在整个项目中使用相同的库?
【发布时间】:2017-07-19 21:15:38
【问题描述】:

我在一个项目中使用了许多应用程序,例如:

所以我在这里有一些问题,应用程序必须实现迭代库吗?

假设我的“应用程序”gradle 中有 com.android.support:appcompat 并且在我的“opencv-java”gradle 中有相同的 apk 将与两个库一起编译并加倍大小?

  • 如果不是,那么编译过程中发生了什么?

  • 如果是,我该如何避免这种情况,有什么办法吗?

更新

如果我的应用程序“gradle”中有库(例如:“volley”、“support”等),并且我在我的 open-cv“gradle”中使用了它,那么我就可以从中删除这些库app "gradle",看来在 "gradle" 中使用compile project(':another-app') 的主应用程序可以使用another-app 库,代码和资产,一切。 p>

【问题讨论】:

    标签: android android-gradle-plugin android-library android-build


    【解决方案1】:

    apk 将与两个库一起编译并加倍大小?

    没有。

    那么编译过程发生了什么?

    嗯,两件事之一:

    1. 如果您始终使用compile "com.android.support:appcompat-v7",Gradle 将只使用该依赖项的一个副本。

    2. 您的构建可能会失败,并显示一条错误消息,抱怨重复的 Java 类,源于重复的库。如果您实际上并没有在一个地方使用com.android.support:appcompat-v7,而是通过其他方式添加appcompat-v7(例如,直接针对该库项目的副本进行编译),就会发生这种情况。

    不能发生的是双倍大小的情况,因为您不能在一个 APK 中拥有同一个 Java 类的两个副本。

    【讨论】:

    • 为什么我可以在同一个依赖项中拥有同一个库?如果另一个 gradle 使用相同的库但版本不同,为什么它可能会在启动时抛出错误?
    • @Ibrahim:很抱歉,这两个问题我都不懂。
    • @Ibrahim:“似乎在“gradle”中使用 compile project(':another-app') 的主应用程序可以使用另一个应用程序库,包括代码和资产,一切”——正确的。这些被称为传递依赖。
    猜你喜欢
    • 2014-07-27
    • 2021-09-25
    • 1970-01-01
    • 2016-04-03
    • 2011-01-14
    • 1970-01-01
    • 2023-03-15
    • 2015-04-24
    • 2016-07-02
    相关资源
    最近更新 更多