parent
1d1fc49b51
commit
d1c859a2ae
8 changed files with 39 additions and 112 deletions
@ -1,97 +0,0 @@ |
|||||||
import org.apache.tools.ant.taskdefs.condition.Os |
|
||||||
|
|
||||||
def config = project.hasProperty("react") ? project.react : []; |
|
||||||
|
|
||||||
def bundleAssetName = config.bundleAssetName ?: "index.android.bundle" |
|
||||||
def entryFile = config.entryFile ?: "index.android.js" |
|
||||||
|
|
||||||
// because elvis operator |
|
||||||
def elvisFile(thing) { |
|
||||||
return thing ? file(thing) : null; |
|
||||||
} |
|
||||||
|
|
||||||
def reactRoot = elvisFile(config.root) ?: file("../../") |
|
||||||
def inputExcludes = config.inputExcludes ?: ["android/**", "ios/**"] |
|
||||||
|
|
||||||
void runBefore(String dependentTaskName, Task task) { |
|
||||||
Task dependentTask = tasks.findByPath(dependentTaskName); |
|
||||||
if (dependentTask != null) { |
|
||||||
dependentTask.dependsOn task |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
gradle.projectsEvaluated { |
|
||||||
// Grab all build types and product flavors |
|
||||||
def buildTypes = android.buildTypes.collect { type -> type.name } |
|
||||||
def productFlavors = android.productFlavors.collect { flavor -> flavor.name } |
|
||||||
|
|
||||||
// When no product flavors defined, use empty |
|
||||||
if (!productFlavors) productFlavors.add('') |
|
||||||
|
|
||||||
productFlavors.each { productFlavorName -> |
|
||||||
buildTypes.each { buildTypeName -> |
|
||||||
// Create variant and target names |
|
||||||
def targetName = "${productFlavorName.capitalize()}${buildTypeName.capitalize()}" |
|
||||||
def targetPath = productFlavorName ? |
|
||||||
"${productFlavorName}/${buildTypeName}" : |
|
||||||
"${buildTypeName}" |
|
||||||
|
|
||||||
// React js bundle directories |
|
||||||
def jsBundleDirConfigName = "jsBundleDir${targetName}" |
|
||||||
def jsBundleDir = elvisFile(config."$jsBundleDirConfigName") ?: |
|
||||||
file("$buildDir/intermediates/assets/${targetPath}") |
|
||||||
|
|
||||||
def resourcesDirConfigName = "jsBundleDir${targetName}" |
|
||||||
def resourcesDir = elvisFile(config."${resourcesDirConfigName}") ?: |
|
||||||
file("$buildDir/intermediates/res/merged/${targetPath}") |
|
||||||
def jsBundleFile = file("$jsBundleDir/$bundleAssetName") |
|
||||||
|
|
||||||
// Bundle task name for variant |
|
||||||
def bundleJsAndAssetsTaskName = "bundle${targetName}JsAndAssets" |
|
||||||
|
|
||||||
def currentBundleTask = tasks.create( |
|
||||||
name: bundleJsAndAssetsTaskName, |
|
||||||
type: Exec) { |
|
||||||
group = "react" |
|
||||||
description = "bundle JS and assets for ${targetName}." |
|
||||||
|
|
||||||
// Create dirs if they are not there (e.g. the "clean" task just ran) |
|
||||||
doFirst { |
|
||||||
jsBundleDir.mkdirs() |
|
||||||
resourcesDir.mkdirs() |
|
||||||
} |
|
||||||
|
|
||||||
// Set up inputs and outputs so gradle can cache the result |
|
||||||
inputs.files fileTree(dir: reactRoot, excludes: inputExcludes) |
|
||||||
outputs.dir jsBundleDir |
|
||||||
outputs.dir resourcesDir |
|
||||||
|
|
||||||
// Set up the call to the react-native cli |
|
||||||
workingDir reactRoot |
|
||||||
|
|
||||||
// Set up dev mode |
|
||||||
def devEnabled = !targetName.toLowerCase().contains("release") |
|
||||||
if (Os.isFamily(Os.FAMILY_WINDOWS)) { |
|
||||||
commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}", |
|
||||||
"--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir |
|
||||||
} else { |
|
||||||
commandLine "react-native", "bundle", "--platform", "android", "--dev", "${devEnabled}", |
|
||||||
"--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir |
|
||||||
} |
|
||||||
|
|
||||||
enabled config."bundleIn${targetName}" || |
|
||||||
config."bundleIn${buildTypeName.capitalize()}" ?: |
|
||||||
targetName.toLowerCase().contains("release") |
|
||||||
} |
|
||||||
|
|
||||||
// Hook bundle${productFlavor}${buildType}JsAndAssets into the android build process |
|
||||||
currentBundleTask.dependsOn("merge${targetName}Resources") |
|
||||||
currentBundleTask.dependsOn("merge${targetName}Assets") |
|
||||||
|
|
||||||
runBefore("processArmeabi-v7a${targetName}Resources", currentBundleTask) |
|
||||||
runBefore("processX86${targetName}Resources", currentBundleTask) |
|
||||||
runBefore("processUniversal${targetName}Resources", currentBundleTask) |
|
||||||
runBefore("process${targetName}Resources", currentBundleTask) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
@ -1,6 +1,5 @@ |
|||||||
#Wed Aug 24 16:23:50 IDT 2016 |
|
||||||
distributionBase=GRADLE_USER_HOME |
distributionBase=GRADLE_USER_HOME |
||||||
distributionPath=wrapper/dists |
distributionPath=wrapper/dists |
||||||
zipStoreBase=GRADLE_USER_HOME |
zipStoreBase=GRADLE_USER_HOME |
||||||
zipStorePath=wrapper/dists |
zipStorePath=wrapper/dists |
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2-all.zip |
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip |
||||||
|
@ -0,0 +1,8 @@ |
|||||||
|
keystore( |
||||||
|
name = 'debug', |
||||||
|
store = 'debug.keystore', |
||||||
|
properties = 'debug.keystore.properties', |
||||||
|
visibility = [ |
||||||
|
'PUBLIC', |
||||||
|
], |
||||||
|
) |
@ -0,0 +1,4 @@ |
|||||||
|
key.store=debug.keystore |
||||||
|
key.alias=androiddebugkey |
||||||
|
key.store.password=android |
||||||
|
key.alias.password=android |
Loading…
Reference in new issue