android - 在 android gradle 3.6.1 中运行构建任务后未生成 Jar

标签 android gradle build

我的构建 jar 任务在 3.5.3 年级中运行良好,但在 3.6.1 年级中不起作用。我检查了我的构建文件,但是,/build/intermediates/packaged-classes/ 目录奇怪地丢失了。

gradle 脚本:

task buildJar(dependsOn: ['build'], type: Jar) {
    doFirst {
        manifest {
            attributes 'Jar-VersionName': jarVersionName
            attributes 'Jar-VersionCode': jarVersionCode
        }
    }
    from zipTree(file('build/intermediates/packaged-classes/release/classes.jar'))
    appendix = ""
    baseName = "pp"
    version = jarVersionName + "_" + jarVersionCode
    classifier = "release"
    extension = "jar"
    destinationDir = file('build/libs/')
}

//dx --dex --output=target.jar origin.jar
task buildDex(dependsOn: ['buildJar'], type: Exec) {
    workingDir buildDir.absolutePath + "/libs"
    executable "dx"
    args "--dex"
    args "--output=" + buildJar.archiveName
    args buildJar.archiveName
}

错误日志:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':p2p:buildJar'.
> Cannot expand ZIP '/Users/william/AndroidStudioProjects/Work/lib_plugin/project/build/intermediates/packaged-classes/release/classes.jar' as it does not exist.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s

我环顾四周,显然我可以在这些解决方案之间做出选择,但它们对我来说太旧了。

No release bundle folder after upgrading Android Studio

.jar file not generating in android studio

Gradle not generate jar

那么,生成的jar的新路径在哪里呢?

最佳答案

我找到了!当我将 gradle 版本升级到 4.0 时,我在 build/intermediates/aar_main_jar/release/classes.jar 路径中找到了 class.jar

所以,完整的构建任务代码如下:

def jarPath = buildDir.absolutePath + "/libs"
def jarBaseName = "plugin"

task buildJar(dependsOn: ['build'], type: Jar) {
    doFirst {
        manifest {
            attributes 'Jar-VersionCode': jarVersionCode
        }
    }
    from zipTree(file('build/intermediates/aar_main_jar/release/classes.jar'))
    // [archiveBaseName]-[archiveAppendix]-[archiveVersion]-[archiveClassifier].[archiveExtension]
    archiveBaseName = jarBaseName
    archiveAppendix = null
    archiveVersion = "$jarVersionName-$jarVersionCode"
    archiveClassifier = "release"
    archiveExtension = "jar"
    destinationDirectory = file(jarPath)
}

// dx --dex --output=target.jar origin.jar
task buildDex(dependsOn: ['buildJar'], type: Exec) {
    workingDir jarPath
    executable "dx"
    args "--dex"
    args "--output=" + buildJar.archiveFileName.get()
    args buildJar.archiveFileName.get()
}

关于android - 在 android gradle 3.6.1 中运行构建任务后未生成 Jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60650584/

相关文章:

gradle - GradleException。找不到Flutter SDK

python - Fabric:以特定用户身份执行所有操作

android - 旋转手机时不显示横向布局

java - 无法上传到 Android Studio 中的 Parse Server

java - Google Play 许可证检查 doCheck() 方法导致 nullPointerException 并强制关闭

gradle - 无法创建检查器:classpath {null}

c# - C# 程序输出目录中的公共(public)文件

java - 如何让Jenkins查找作业中指定的shell脚本

Android WebView 固定元素不响应点击

android - 如何根据编辑文本中的文本显示 ListView ,并使用可点击的图像按钮搜索 ListView 数据?