【问题标题】:Build library jar with Gradle使用 Gradle 构建库 jar
【发布时间】:2015-04-28 14:22:51
【问题描述】:

我正在 Android Studio 上开发一个库(一个 SDK,比如说模块 A)。为了测试它,我还得到了一个 demoApp

我还有另一个包含 SDK 依赖项的库(一个插件,比如说模块 B)

所以在我的项目中,有 3 个模块:SDK (A)、demoApp 和插件 (B)

现在我需要在 jar 文件中分发我的 SDK 和/或我的插件,以便人们可以在他们的项目中使用它

问题是:如何使用 Gradle 任务生成 SDK 的 jar 和插件的 jar(当然包括所有必需的依赖项,如 libs 文件夹中的 jar)(我不需要任何资源或资产) ?

我对 Gradle 很陌生,我越过 this answer,但我不知道它是否符合我的需求(需要与 Android 兼容)

编辑:澄清我添加了字母

  • 我需要一个 A 的 jar 文件
  • B 需要 A 运行(依赖项)
  • 我需要一个 B 的 jar 文件

【问题讨论】:

  • 恕我直言,您现在应该将 AAR 文件用于分布式库(自动进入 build/outputs/aar/)。
  • 至于你的回答:它可能与以下内容重复:stackoverflow.com/a/19484146/603270
  • 我应该,但我必须是 Eclipse 或任何 IDE 兼容的。大多数人使用 jar :s 我刚刚阅读了您的链接,评论中有人提到它没有打包所有依赖项stackoverflow.com/questions/19307341/…

标签: android gradle sdk android-gradle-plugin


【解决方案1】:

你需要创建一个新的 gradle 任务,类似于我的

task clearJar(type: Delete) {
    delete '../location/' + LIBRARY_NAME + '_' + LIBRARY_VERSION + '.jar'
}

task makeJar(type: Copy) {
    dependsOn clearJar, build
    from 'build/intermediates/bundles/release/'
    into '../../location/'
    include 'classes.jar'
    rename 'classes.jar', LIBRARY_NAME + '_' + LIBRARY_VERSION + '.jar'
}

LIBRARY_NAME 和 LIBRARY_VERSION 是我在 gradle 构建文件顶部设置的字符串。

你可以添加这个任务,然后像这样选择它

【讨论】:

  • 看起来很性感!谢谢,我会试试的。这可以与“链接”一起使用吗?我的意思是这可能适用于 SDK,但是需要 SDK 的插件呢?
  • @PlumillonForge 如果要链接它,请删除对 build 的依赖并从 assemble doLast 调用它
  • 通过链接我实际上是指使用 SDK + 插件源(请参阅我的案例)为插件模块做一个 jar。您的解决方案会为此工作吗?或者我应该为 SDK 制作 Jar,将结果 jar 移动到插件库(获得 /libs 依赖项)然后 makeJar 插件 ===> 目标是为插件创建一个文件(我编辑了我的帖子以澄清)跨度>
  • 是的,它会起作用的。你可以用 gradle 做魔法。首先使用 make jar 构建库。在函数中,您可以指定放置它的位置。然后在运行另一个构建的 makeJar 中添加一个链接。
  • Oki,我明天会处理您的解决方案,如果它是我正在寻找的,则将其标记为已接受 :)
猜你喜欢
  • 2017-03-09
  • 2021-03-18
  • 2012-07-13
  • 2019-03-06
  • 2023-01-31
  • 2013-06-17
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多