107 lines
2.8 KiB
Groovy
107 lines
2.8 KiB
Groovy
/*
|
|
* Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
|
|
*/
|
|
|
|
repositories {
|
|
google()
|
|
// TODO Remove once R8 is updated to a 1.6.x version.
|
|
maven {
|
|
url "http://storage.googleapis.com/r8-releases/raw/master"
|
|
metadataSources {
|
|
artifact()
|
|
}
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
r8
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly 'com.google.android:android:4.1.1.4'
|
|
compileOnly 'com.android.support:support-annotations:26.1.0'
|
|
|
|
testImplementation 'com.google.android:android:4.1.1.4'
|
|
testImplementation 'org.robolectric:robolectric:4.0-alpha-3'
|
|
testImplementation 'org.smali:baksmali:2.2.7'
|
|
|
|
// TODO Replace with a 1.6.x version once released to maven.google.com.
|
|
r8 'com.android.tools:r8:a7ce65837bec81c62261bf0adac73d9c09d32af2'
|
|
}
|
|
|
|
class RunR8Task extends JavaExec {
|
|
|
|
@OutputDirectory
|
|
File outputDex
|
|
|
|
@InputFile
|
|
File inputConfig
|
|
|
|
@InputFile
|
|
final File inputConfigCommon = new File('r8-test-common.pro')
|
|
|
|
@InputFiles
|
|
final File jarFile = project.jar.archivePath
|
|
|
|
@Override
|
|
Task configure(Closure closure) {
|
|
super.configure(closure)
|
|
classpath = project.configurations.r8
|
|
main = 'com.android.tools.r8.R8'
|
|
|
|
def arguments = [
|
|
'--release',
|
|
'--no-desugaring',
|
|
'--output', outputDex.absolutePath,
|
|
'--pg-conf', inputConfig.absolutePath
|
|
]
|
|
arguments.addAll(project.configurations.runtimeClasspath.files.collect { it.absolutePath })
|
|
arguments.addAll(jarFile.absolutePath)
|
|
|
|
args = arguments
|
|
return this
|
|
}
|
|
|
|
@Override
|
|
void exec() {
|
|
if (outputDex.exists()) {
|
|
outputDex.deleteDir()
|
|
}
|
|
outputDex.mkdirs()
|
|
|
|
super.exec()
|
|
}
|
|
}
|
|
|
|
def optimizedDex = new File(buildDir, "dex-optim/")
|
|
def unOptimizedDex = new File(buildDir, "dex-unoptim/")
|
|
|
|
task runR8(type: RunR8Task, dependsOn: 'jar'){
|
|
outputDex = optimizedDex
|
|
inputConfig = file('r8-test-rules.pro')
|
|
}
|
|
|
|
task runR8NoOptim(type: RunR8Task, dependsOn: 'jar'){
|
|
outputDex = unOptimizedDex
|
|
inputConfig = file('r8-test-rules-no-optim.pro')
|
|
}
|
|
|
|
test {
|
|
// Ensure the R8-processed dex is built and supply its path as a property to the test.
|
|
dependsOn(runR8)
|
|
dependsOn(runR8NoOptim)
|
|
def dex1 = new File(optimizedDex, "classes.dex")
|
|
def dex2 = new File(unOptimizedDex, "classes.dex")
|
|
|
|
inputs.files(dex1, dex2)
|
|
|
|
systemProperty 'dexPath', dex1.absolutePath
|
|
systemProperty 'noOptimDexPath', dex2.absolutePath
|
|
}
|
|
|
|
tasks.withType(dokka.getClass()) {
|
|
externalDocumentationLink {
|
|
url = new URL("https://developer.android.com/reference/")
|
|
packageListUrl = projectDir.toPath().resolve("package.list").toUri().toURL()
|
|
}
|
|
} |