一:在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