123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- buildscript {
- repositories {
- google()
- mavenCentral()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:8.2.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.13.2'
- androidTestImplementation 'org.hamcrest:hamcrest-all:1.3'
- }
-
- android {
- compileSdk 34
- buildToolsVersion "34.0.0"
- ndkVersion "26.1.10909125"
- namespace "com.reecedunn.espeak"
-
- buildFeatures {
- buildConfig = true
- }
-
- defaultConfig {
- minSdk 21
- targetSdk 33
- versionCode 22
- versionName "1.52.0"
-
- externalNativeBuild {
- cmake {
- arguments "-DUSE_ASYNC:BOOL=OFF", "-DUSE_MBROLA:BOOL=OFF"
- targets "ttsespeak", "espeak-data"
- }
- }
- }
-
- externalNativeBuild {
- cmake {
- path "jni/CMakeLists.txt"
- version "3.22.1"
- }
- }
-
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- res.srcDirs = ['res']
- }
- androidTest.setRoot('eSpeakTests')
- androidTest {
- java.srcDirs = ['eSpeakTests/src']
- }
- }
-
- lint {
- abortOnError false
- }
- }
-
- 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) {
- preserveFileTimestamps = false
- reproducibleFileOrder = true
- archiveFileName = "espeakdata.zip"
- destinationDirectory = file("res/raw")
-
- from("build/generated/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")
- }
-
- tasks.whenTaskAdded { task ->
- if (task.name == 'assembleDebug' || task.name == 'assembleRelease') {
- task.dependsOn createDataVersion
- }
- }
-
- createDataVersion.mustRunAfter 'externalNativeBuildDebug'
- createDataVersion.mustRunAfter 'externalNativeBuildRelease'
-
- project.afterEvaluate {
- tasks.checkData.dependsOn(externalNativeBuildDebug)
- tasks.createDataArchive.dependsOn(externalNativeBuildDebug)
- tasks.named('mapDebugSourceSetPaths') {
- dependsOn ':createDataVersion', ':createDataArchive'
- }
- tasks.named('mergeDebugResources') {
- dependsOn ':createDataVersion', ':createDataArchive'
- }
- tasks.named('packageDebugResources') {
- dependsOn ':createDataVersion', ':createDataArchive'
- }
- tasks.named('mapReleaseSourceSetPaths') {
- dependsOn ':createDataVersion', ':createDataArchive'
- }
- tasks.named('mergeReleaseResources') {
- dependsOn ':createDataVersion', ':createDataArchive'
- }
- tasks.named('packageReleaseResources') {
- dependsOn ':createDataVersion', ':createDataArchive'
- }
- }
|