You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.3 KiB
68 lines
2.3 KiB
// Gradle script for detached apps.
|
|
|
|
import org.apache.tools.ant.taskdefs.condition.Os
|
|
|
|
void runBefore(String dependentTaskName, Task task) {
|
|
Task dependentTask = tasks.findByPath(dependentTaskName);
|
|
if (dependentTask != null) {
|
|
dependentTask.dependsOn task
|
|
}
|
|
}
|
|
|
|
afterEvaluate {
|
|
def expoRoot = file("../../")
|
|
def inputExcludes = ["android/**", "ios/**"]
|
|
|
|
task exponentPrebuildStep(type: Exec) {
|
|
workingDir expoRoot
|
|
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
|
commandLine "cmd", "/c", ".\\node_modules\\expokit\\detach-scripts\\run-exp.bat"
|
|
} else {
|
|
commandLine "./node_modules/expokit/detach-scripts/run-exp.sh", "prepare-detached-build", "--platform", "android", expoRoot
|
|
}
|
|
}
|
|
runBefore("preBuild", exponentPrebuildStep)
|
|
|
|
// Based on https://github.com/facebook/react-native/blob/master/react.gradle
|
|
|
|
android.applicationVariants.each { variant ->
|
|
def folderName = variant.name
|
|
def targetName = folderName.capitalize()
|
|
|
|
def assetsDir = file("$buildDir/intermediates/merged_assets/${folderName}/merge${targetName}Assets/out")
|
|
|
|
// Bundle task name for variant
|
|
def bundleExpoAssetsTaskName = "bundle${targetName}ExpoAssets"
|
|
|
|
def currentBundleTask = tasks.create(
|
|
name: bundleExpoAssetsTaskName,
|
|
type: Exec) {
|
|
description = "Expo bundle assets for ${targetName}."
|
|
|
|
// Create dirs if they are not there (e.g. the "clean" task just ran)
|
|
doFirst {
|
|
assetsDir.mkdirs()
|
|
}
|
|
|
|
// Set up inputs and outputs so gradle can cache the result
|
|
inputs.files fileTree(dir: expoRoot, excludes: inputExcludes)
|
|
outputs.dir assetsDir
|
|
|
|
// Set up the call to exp
|
|
workingDir expoRoot
|
|
|
|
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
|
commandLine("cmd", "/c", ".\\node_modules\\expokit\\detach-scripts\\run-exp.bat", "bundle-assets", expoRoot, "--platform", "android", "--dest", assetsDir)
|
|
} else {
|
|
commandLine("./node_modules/expokit/detach-scripts/run-exp.sh", "bundle-assets", expoRoot, "--platform", "android", "--dest", assetsDir)
|
|
}
|
|
|
|
enabled targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("prod")
|
|
}
|
|
|
|
currentBundleTask.dependsOn("merge${targetName}Resources")
|
|
currentBundleTask.dependsOn("merge${targetName}Assets")
|
|
|
|
runBefore("process${targetName}Resources", currentBundleTask)
|
|
}
|
|
}
|