Step 13 - Android Studio Integration

Files located in the tutorial/step13-android-studio/files directory:
allatori.xmlTypical configuration file
build.gradleSample build file


Follow these steps to set up Allatori for your Android Studio project:
1. In the rootDir create a folder 'allatori' and copy allatori.jar in there.
2. Copy Allatori configuration allatori.xml to the projectDir (where project's build.gradle is)
3. Edit build.gradle:

android {
    ...
    // for applications
    applicationVariants.all { variant ->
        variant.javaCompileProvider.get().doLast {
            runAllatori(variant)
        }
    }
    // for libraries
    // libraryVariants.all { variant ->
    //    variant.javaCompileProvider.get().doLast {
    //        runAllatori(variant)
    //     }
    // }
}

def runAllatori(variant) {
    copy {
        from "$projectDir/allatori.xml"
        into "$buildDir/intermediates/classes/"
        expand(classesRoot: variant.javaCompileProvider.get().destinationDir,
                kotlinRoot: "${buildDir}/tmp/kotlin-classes/${variant.name}",
                androidJar: "${android.sdkDirectory}/platforms/${android.compileSdkVersion}/android.jar",
                classpathJars: variant.javaCompileProvider.get().classpath.getAsPath(),
                logFile: "allatori-log-${variant.name}.xml")
        rename('allatori.xml', "allatori-${variant.name}.xml")
    }

    new File("${variant.javaCompileProvider.get().destinationDir}-obfuscated").deleteDir()
    javaexec {
        main = 'com.allatori.Obfuscate'
        classpath = files("$rootDir/allatori/allatori.jar")
        args "$buildDir/intermediates/classes/allatori-${variant.name}.xml"
    }
    new File("${variant.javaCompileProvider.get().destinationDir}").deleteDir()
    new File("${variant.javaCompileProvider.get().destinationDir}-obfuscated").renameTo(new File("${variant.javaCompileProvider.get().destinationDir}"))

    // Kotlin support
    // new File("${buildDir}/tmp/kotlin-classes/${variant.name}").deleteDir()
    // new File("${buildDir}/tmp/kotlin-classes/${variant.name}-obfuscated").renameTo(new File("${buildDir}/tmp/kotlin-classes/${variant.name}"))
}

Step 12       Step 14       Contents