buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.1.2' } } plugins { id 'org.gradle.crypto.checksum' version '1.4.0' } import org.gradle.crypto.checksum.Checksum apply plugin: 'com.android.application' repositories { google() mavenCentral() } dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'org.hamcrest:hamcrest-all:1.3' } tasks.register('checkData') { doFirst { assert file("../espeak-ng-data/en_dict").exists() assert file("../espeak-ng-data/intonations").exists() assert file("../espeak-ng-data/phondata").exists() assert file("../espeak-ng-data/phondata-manifest").exists() assert file("../espeak-ng-data/phonindex").exists() assert file("../espeak-ng-data/phontab").exists() } } tasks.register('createDataArchive', Zip) { dependsOn tasks.checkData preserveFileTimestamps = false reproducibleFileOrder = true archiveFileName = "espeakdata.zip" destinationDirectory = file("res/raw") from("../espeak-ng-data/") { into "espeak-ng-data" } } tasks.register('createDataHash', Checksum) { dependsOn tasks.createDataArchive checksumAlgorithm.set(Checksum.Algorithm.SHA256) inputFiles.setFrom(file("./res/raw/espeakdata.zip")) outputDirectory.set(layout.buildDirectory.dir('intermediates/datahash')) } tasks.register('createDataVersion', Copy) { dependsOn tasks.createDataHash from layout.buildDirectory.file('intermediates/datahash/espeakdata.zip.sha256') rename { return 'espeakdata_version' } into file("./res/raw") } preBuild.dependsOn createDataVersion android { compileSdkVersion 26 defaultConfig { minSdkVersion 14 targetSdkVersion 26 versionCode 22 versionName "1.52-dev" } externalNativeBuild { ndkBuild { path "jni/Android.mk" } } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] } androidTest.setRoot('eSpeakTests') androidTest { java.srcDirs = ['eSpeakTests/src'] } } lintOptions { abortOnError false } }