mirror of
https://github.com/zhigang1992/react-native-code-push.git
synced 2026-05-19 19:39:54 +08:00
65 lines
3.1 KiB
Groovy
65 lines
3.1 KiB
Groovy
// Adapted from https://raw.githubusercontent.com/facebook/react-native/master/local-cli/generator-android/templates/src/app/react.gradle
|
|
|
|
def config = project.hasProperty("react") ? project.react : [];
|
|
def bundleAssetName = config.bundleAssetName ?: "index.android.bundle"
|
|
|
|
def elvisFile(thing) {
|
|
return thing ? file(thing) : null;
|
|
}
|
|
|
|
void runBefore(String dependentTaskName, Task task) {
|
|
Task dependentTask = tasks.findByPath(dependentTaskName);
|
|
if (dependentTask != null) {
|
|
dependentTask.dependsOn task
|
|
}
|
|
}
|
|
|
|
gradle.projectsEvaluated {
|
|
def buildTypes = android.buildTypes.collect { type -> type.name }
|
|
def productFlavors = android.productFlavors.collect { flavor -> flavor.name }
|
|
if (!productFlavors) productFlavors.add('')
|
|
|
|
productFlavors.each { productFlavorName ->
|
|
buildTypes.each { buildTypeName ->
|
|
def targetName = "${productFlavorName.capitalize()}${buildTypeName.capitalize()}"
|
|
def targetPath = productFlavorName ?
|
|
"${productFlavorName}/${buildTypeName}" :
|
|
"${buildTypeName}"
|
|
|
|
def jsBundleDirConfigName = "jsBundleDir${targetName}"
|
|
def assetsDir = "$buildDir/intermediates/assets/${targetPath}"
|
|
def jsBundleDir = elvisFile(config."$jsBundleDirConfigName") ?:
|
|
file(assetsDir)
|
|
|
|
def resourcesDirConfigName = "jsBundleDir${targetName}"
|
|
def resourcesDir = elvisFile(config."${resourcesDirConfigName}") ?:
|
|
file("$buildDir/intermediates/res/merged/${targetPath}")
|
|
def jsBundleFile = file("$jsBundleDir/$bundleAssetName")
|
|
|
|
// Make this task run right before the bundle task
|
|
def recordFilesBeforeBundleCommand = tasks.create(
|
|
name: "recordFilesBeforeBundleCommand${targetName}",
|
|
type: Exec) {
|
|
commandLine "node", "../../node_modules/react-native-code-push/scripts/recordFilesBeforeBundleCommand.js", resourcesDir
|
|
}
|
|
|
|
recordFilesBeforeBundleCommand.dependsOn("merge${targetName}Resources")
|
|
recordFilesBeforeBundleCommand.dependsOn("merge${targetName}Assets")
|
|
runBefore("bundle${targetName}JsAndAssets", recordFilesBeforeBundleCommand)
|
|
|
|
// Make this task run right after the bundle task
|
|
def generateBundledResourcesHash = tasks.create(
|
|
name: "generateBundledResourcesHash${targetName}",
|
|
type: Exec) {
|
|
commandLine "node", "../../node_modules/react-native-code-push/scripts/generateBundledResourcesHash.js", resourcesDir, "$jsBundleDir/$bundleAssetName", assetsDir
|
|
}
|
|
|
|
generateBundledResourcesHash.dependsOn("bundle${targetName}JsAndAssets")
|
|
runBefore("processArmeabi-v7a${targetName}Resources", generateBundledResourcesHash)
|
|
runBefore("processX86${targetName}Resources", generateBundledResourcesHash)
|
|
runBefore("processUniversal${targetName}Resources", generateBundledResourcesHash)
|
|
runBefore("process${targetName}Resources", generateBundledResourcesHash)
|
|
}
|
|
}
|
|
}
|