自动将library打包成jar

一:在build.gradle里面加入如下代码

afterEvaluate {
    task createJar {
        dependsOn build
        doLast {
            def localProperties = new File(rootDir, "local.properties")
            Properties properties = new Properties()
            localProperties.withInputStream { instr ->
                properties.load(instr)
            }
            def sdkDir = properties.getProperty('sdk.dir')

            def aarDir = "$project.buildDir/outputs/aar/"
            def classesJarName = "classes.jar"

            def outputJar = aarDir + "interface.jar"
            def classesJar = aarDir + classesJarName

            file(outputJar).delete()
            file(classesJar).delete()

            ZipFile zipFile = new ZipFile(aarDir + "$project.name-release.aar")
            Enumeration<?> entries = zipFile.entries()
            while (entries.hasMoreElements()) {
                ZipEntry entry = (ZipEntry) entries.nextElement()
                def filename = entry.getName()
                if (filename == classesJarName) {
                    def buf = new byte[8192]
                    def file = new File(classesJar)
                    file.createNewFile()
                    def is = zipFile.getInputStream(entry)
                    def os = new FileOutputStream(file)
                    def count
                    while ((count = is.read(buf)) > -1) {
                        os.write(buf, 0, count)
                    }

                    os.flush()
                    os.close()
                    is.close()
                }
            }
            zipFile.close()


            exec {
                executable sdkDir + "/build-tools/" + project.android.buildToolsVersion + "/dx.bat"
                args "--dex", "--output=" + outputJar, classesJar
            }
        }
    }
}

二 : 打开Terminal 调用 createJar的task :

具体代码: gradlew createJar

三 :jar包在 当前app – build – outputs –aar –interface.jar

猜你喜欢

转载自blog.csdn.net/binbin594738977/article/details/81110059