UNPKG

2.21 kBPlain TextView Raw
1// Gradle script for downloading assets that make up an OTA update and bundling them into the APK
2
3import org.apache.tools.ant.taskdefs.condition.Os
4import org.gradle.util.GradleVersion
5
6void runBefore(String dependentTaskName, Task task) {
7 Task dependentTask = tasks.findByPath(dependentTaskName);
8 if (dependentTask != null) {
9 dependentTask.dependsOn task
10 }
11}
12
13afterEvaluate {
14 def projectRoot = file("../../")
15 def inputExcludes = ["android/**", "ios/**"]
16
17 android.applicationVariants.each { variant ->
18 def folderName = variant.name
19 def targetName = folderName.capitalize()
20
21 def assetsDir = file("$buildDir/intermediates/merged_assets/${folderName}/out")
22
23 GradleVersion gradleVersion = GradleVersion.current()
24 if (gradleVersion < GradleVersion.version('5.0')) {
25 assetsDir = file("$buildDir/intermediates/merged_assets/${folderName}/merge${targetName}Assets/out")
26 }
27
28 // Bundle task name for variant
29 def bundleExpoAssetsTaskName = "bundle${targetName}ExpoUpdatesAssets"
30
31 def currentBundleTask = tasks.create(
32 name: bundleExpoAssetsTaskName,
33 type: Exec) {
34 description = "expo-updates: Bundle assets for ${targetName}."
35
36 // Create dirs if they are not there (e.g. the "clean" task just ran)
37 doFirst {
38 assetsDir.mkdirs()
39 }
40
41 // Set up inputs and outputs so gradle can cache the result
42 inputs.files fileTree(dir: projectRoot, excludes: inputExcludes)
43 outputs.dir assetsDir
44
45 // Set up the call to exp
46 workingDir projectRoot
47
48 if (Os.isFamily(Os.FAMILY_WINDOWS)) {
49 commandLine("cmd", "/c", ".\\node_modules\\expo-updates\\run-expo.bat", "bundle-assets", projectRoot, "--platform", "android", "--dest", assetsDir)
50 } else {
51 commandLine("./node_modules/expo-updates/run-expo.sh", "bundle-assets", projectRoot, "--platform", "android", "--dest", assetsDir)
52 }
53
54 enabled config."bundleIn${targetName}" || targetName.toLowerCase().contains("release")
55 }
56
57 currentBundleTask.dependsOn("merge${targetName}Resources")
58 currentBundleTask.dependsOn("merge${targetName}Assets")
59
60 runBefore("process${targetName}Resources", currentBundleTask)
61 }
62}