【问题标题】:Referencing an android library from a java module从 java 模块中引用 android 库
【发布时间】:2018-02-19 17:03:24
【问题描述】:

长话短说!

我想向 Java 模块添加一个 Android 库依赖项,它说

警告:忽略模块“backtory-android-sdk”对模块“javasample”的依赖。 Java 模块不能依赖于 Android 模块

backtory-android-sdk 没有与 Android 相关的“编译依赖项”(类似于改造),如果有办法向backtory-android-sdk 的“classes.jar”添加依赖项,我认为它会起作用。我该怎么做?

解释问题...

我正在开发一个主要执行网络请求 (backtory-android-sdk) 的 Android 库,并且不太依赖 Android 的东西,因此它可以被初始化并在 java 项目中使用。我还有一个 Java 模块(一个名为 javasample 的控制台项目),用于手动测试 Android 库(也被团队的其他成员用于一些自动化测试)。这是混乱:

  • 如果我将backtory-android-sdk 定义为Android 库,我无法从javasample 引用它,并抱怨警告:忽略模块'backtory-android-sdk' 对模块'javasample' 的依赖。 Java 模块不能依赖于 Android 模块
  • 如果我将其定义为 Java 模块,则前面的问题解决了,但我们的用户至少必须手动添加一些清单内容(我们的 SDK 目前是一个 Android 库模块)。由于我们几乎所有的 SDK 用户都是 Android 开发人员,因此这不是很理想。

由于我知道只能发布 Android 库的源代码,我认为最好坚持 Android 库模块并将其发布在两种类型的 AAR 和 JAR 中,然后问题减少到从 @ 引用 backtory-android-sdk 的源代码987654328@。

【问题讨论】:

    标签: android gradle dependencies


    【解决方案1】:

    这是因为 Android 模块包含无法在纯 Java 设置上运行的 android 组件。

    • 也许你的依赖需要倒置。否则,您的主要 Java 模块将需要更新为 Android 模块。

    • 或者,如果 android 模块不执行任何特定于 Android 的操作,将其设为常规 Java 模块

    • 最可能的情况是您需要第三个模块 - 一个将这两个部分联系在一起的 Android 应用程序

    【讨论】:

    • 直到最近,我有一个backtory-java-sdk 模块和backtory-android-module,一切都很好,但既然你可以发布一个 Jar 格式的 android 库,我想知道是否需要两个分离到两个模块?
    • 我不确定,但如果它不是Android相关的,为什么它需要是一个Android模块? (您提到它可以安全使用,因为不使用 android 特性)。另外,如果 android 模块在 java 模块之上做了更多的事情,看起来 android 应该导入 java(反转依赖)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多