apply plugin: 'com.android.application' android { compileSdkVersion 28 buildToolsVersion "28.0.3" defaultConfig { applicationId "org.scratchjr.android" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } flavorDimensions 'scratchjrversion' productFlavors { free { dimension = 'scratchjrversion' applicationId "org.scratchjr.androidfree" minSdkVersion 19 targetSdkVersion 28 versionCode 21 versionName "1.2.0" } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.google.android.gms:play-services-location:17.0.0' implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'com.google.android.gms:play-services-analytics:17.0.0' } def appModuleRootFolder = '.' def srcDir = 'src' def googleServicesJson = 'google-services.json' def commonHome = '../../..' def html5Assets = 'src/main/assets/HTML5' task switchToFree(type: Copy) { def buildType = 'free' from "${commonHome}/editions/${buildType}/src" into html5Assets } task switchToFreeGA(type: Copy) { def buildType = 'free' from "${commonHome}/editions/${buildType}/android-resources" include "$googleServicesJson" into "$appModuleRootFolder" } task generateWebpackBundle(type: Exec) { workingDir '../../../bin' commandLine './bundle-compile.sh' } class GenerateScratchJrPNGsTask extends DefaultTask { File commonHome = project.file("../../..") File binDir = project.file("${commonHome}/bin") @OutputDirectory File generatedAssets = project.file("src/main/assets") File generatedHtml5Assets = project.file("${generatedAssets}/HTML5") File pngLibrary = project.file("${generatedHtml5Assets}/pnglibrary") File svgLibrary = project.file("${generatedHtml5Assets}/svglibrary") @TaskAction def go() { pngLibrary.mkdirs() ant.exec(executable: "${binDir}/convert-svg-to-png.py", failOnError: true) { arg(value: "-i ${svgLibrary}/") arg(value: "-o ${pngLibrary}/") } } } class CleanScratchJrResourcesTask extends DefaultTask { File generatedAssets = project.file('src/main/assets') @TaskAction def go() { generatedAssets.deleteDir() } } task generateScratchJrPNGs(type: GenerateScratchJrPNGsTask) task cleanScratchJrResources(type: CleanScratchJrResourcesTask) afterEvaluate { preBuild.dependsOn generateWebpackBundle processFreeDebugGoogleServices.dependsOn switchToFreeGA processFreeReleaseGoogleServices.dependsOn switchToFreeGA generateFreeReleaseResources.dependsOn switchToFree generateFreeDebugResources.dependsOn switchToFree generateFreeReleaseResources.dependsOn generateScratchJrPNGs generateFreeDebugResources.dependsOn generateScratchJrPNGs generateScratchJrPNGs.mustRunAfter switchToFree } clean.dependsOn('cleanScratchJrResources') apply plugin: 'com.google.gms.google-services'