【问题标题】:Android studio - How to use an executable jar file from gradleAndroid Studio - 如何使用来自 gradle 的可执行 jar 文件
【发布时间】:2014-11-17 03:20:10
【问题描述】:

所以我有一个 custom_rules.xml 文件,我试图在 gradle 中重建。到目前为止,我可以毫无问题地弄清楚其他所有内容,但我试图完成的最后一部分是在我使用 gradle 构建过程生成的未签名 apk 上运行一个用于widevine drm 的特殊 apk 签名工具。我整天都在网上和 gradle 文档中查找,但我还没有找到如何从 gradle 运行可执行 jar 文件。我知道我必须创建一个任务,但仅此而已。任何帮助将非常感激。

PS。我已经阅读了很多 gradle 文档,所以请不要阅读文档回复

编辑:

这是我目前的任务的样子,它可以编译,但我不确定它实际上在做什么

task (runApkSigTool , dependsOn: 'android', type: JavaExec) {

classpath files('apksigtool.jar')
main 'com.widevine.tools.android.apksigtool.ApkSigTool'
args[0] = apkLocation
args[1] = 'private_key.der'
args[2] = 'my.crt'

}

我不确定我是否必须像我的 build.gradle 文件的 android 部分中的方法一样使用它。

【问题讨论】:

标签: android jar gradle


【解决方案1】:

您可能可以使用JavaExec 任务。像这样的:

task signApk(type: JavaExec) {
    classpath files('path/to/executable.jar')
    main 'com.foo.MainClass'
    args ['-foo', 'bar']
}

【讨论】:

  • 感谢您提供答案。由于我的项目是一个 android 应用程序,我将在我的主要声明中使用什么?
  • Main 将是可执行 jar 中的主类。通常,Java 会通过查看 jar 清单中的 Main-Class 标头来为您解决此问题,例如 java -jar。您只需打开 jar 包并查看清单即可找到此信息。
  • 很酷,谢谢 :) 如果我不能完成这项工作,也许我会尝试在任务中使用命令行功能。
  • 这将是另一种选择,只需创建一个名为 java -jar 的 Exec 任务。使用 JavaExec 任务的好处是,默认情况下,它将使用 Gradle 使用的相同 JRE,如果 JRE 恰好不存在于路径上,您无需执行任何代码即可找到它。
  • 我认为我没有正确使用 args[]。它给了我一个错误,说它不能将对象“”转换为 int
猜你喜欢
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2018-07-13
  • 2013-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多