Jar is not generated after running build task in android gradle 3.6.1

為{幸葍}努か 提交于 2021-01-28 02:17:31

问题


My build jar task works fine in grade 3.5.3, but it doesn't work in grade 3.6.1. I checked my build files, however, the /build/intermediates/packaged-classes/ dir is weirdly missing.

The gradle scripts:

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
}

The error log:

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

I've looked around and apparently I've got the choice between these solutions, but they are so old solution for me.

No release bundle folder after upgrading Android Studio

.jar file not generating in android studio

Gradle not generate jar

So, where is the new path of the generated jar?


回答1:


I found it! When I upgrade gradle version to 4.0, I find the class.jar in build/intermediates/aar_main_jar/release/classes.jar path.

so, the full build task code is below:

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()
}


来源:https://stackoverflow.com/questions/60650584/jar-is-not-generated-after-running-build-task-in-android-gradle-3-6-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!