1 |
|
2 |
|
3 | import org.apache.tools.ant.taskdefs.condition.Os
|
4 | import org.gradle.util.GradleVersion
|
5 |
|
6 | void runBefore(String dependentTaskName, Task task) {
|
7 | Task dependentTask = tasks.findByPath(dependentTaskName);
|
8 | if (dependentTask != null) {
|
9 | dependentTask.dependsOn task
|
10 | }
|
11 | }
|
12 |
|
13 | def config = project.hasProperty("react") ? project.react : [];
|
14 |
|
15 | afterEvaluate {
|
16 | def projectRoot = file("../../")
|
17 | def inputExcludes = ["android/**", "ios/**"]
|
18 |
|
19 | android.applicationVariants.each { variant ->
|
20 | def folderName = variant.name
|
21 | def targetName = folderName.capitalize()
|
22 |
|
23 | def assetsDir = file("$buildDir/intermediates/merged_assets/${folderName}/out")
|
24 |
|
25 | GradleVersion gradleVersion = GradleVersion.current()
|
26 | if (gradleVersion < GradleVersion.version('5.0')) {
|
27 | assetsDir = file("$buildDir/intermediates/merged_assets/${folderName}/merge${targetName}Assets/out")
|
28 | }
|
29 |
|
30 |
|
31 | def bundleExpoAssetsTaskName = "bundle${targetName}ExpoUpdatesAssets"
|
32 |
|
33 | def currentBundleTask = tasks.create(
|
34 | name: bundleExpoAssetsTaskName,
|
35 | type: Exec) {
|
36 | description = "expo-updates: Bundle assets for ${targetName}."
|
37 |
|
38 |
|
39 | doFirst {
|
40 | assetsDir.mkdirs()
|
41 | }
|
42 |
|
43 |
|
44 | inputs.files fileTree(dir: projectRoot, excludes: inputExcludes)
|
45 | outputs.dir assetsDir
|
46 |
|
47 |
|
48 | workingDir projectRoot
|
49 |
|
50 | if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
51 | commandLine("cmd", "/c", ".\\node_modules\\expo-updates\\run-expo.bat", "bundle-assets", projectRoot, "--platform", "android", "--dest", assetsDir)
|
52 | } else {
|
53 | commandLine("./node_modules/expo-updates/run-expo.sh", "bundle-assets", projectRoot, "--platform", "android", "--dest", assetsDir)
|
54 | }
|
55 |
|
56 | enabled config."bundleIn${targetName}" || targetName.toLowerCase().contains("release")
|
57 | }
|
58 |
|
59 | currentBundleTask.dependsOn("merge${targetName}Resources")
|
60 | currentBundleTask.dependsOn("merge${targetName}Assets")
|
61 |
|
62 | runBefore("process${targetName}Resources", currentBundleTask)
|
63 | }
|
64 | }
|