2
2
3
3
import java.nio.file.Paths ;
4
4
5
- def config = project. hasProperty (" react" ) ? project . react : [];
6
- def bundleAssetName = config. bundleAssetName ?: " index.android.bundle"
5
+ def config = project. extensions . findByName (" react" ) ?: []
6
+ def bundleAssetName = config. bundleAssetName. get() ?: " index.android.bundle"
7
7
8
8
// because elvis operator
9
9
def elvisFile (thing ) {
@@ -23,11 +23,20 @@ android.buildTypes.each { buildType ->
23
23
buildType. resValue ' string' , " CODE_PUSH_APK_BUILD_TIME" , String . format(" \" %d\" " , System . currentTimeMillis())
24
24
}
25
25
26
- gradle. projectsEvaluated {
26
+
27
+ gradle. projectsEvaluated {
28
+
29
+ def debuggableVariants = config. debuggableVariants. get() ?: [' debug' ]
30
+
27
31
android. applicationVariants. all { variant ->
32
+ // No code push for debuggable variants
33
+ if (debuggableVariants. contains(variant. name)) {
34
+ return ;
35
+ }
36
+
28
37
def nodeModulesPath;
29
38
if (config. root) {
30
- nodeModulesPath = Paths . get(config. root, " /node_modules" );
39
+ nodeModulesPath = Paths . get(config. root. asFile . get() . absolutePath , " /node_modules" );
31
40
} else if (project. hasProperty(' nodeModulesPath' )) {
32
41
nodeModulesPath = project. nodeModulesPath
33
42
} else {
@@ -42,40 +51,38 @@ gradle.projectsEvaluated {
42
51
def jsBundleFile;
43
52
44
53
// Additional node commandline arguments
45
- def nodeExecutableAndArgs = config. nodeExecutableAndArgs ?: [" node" ]
46
- def extraPackagerArgs = config. extraPackagerArgs ?: []
54
+ def nodeExecutableAndArgs = config. nodeExecutableAndArgs. get() ?: [" node" ]
55
+ def extraPackagerArgs = config. extraPackagerArgs. get() ?: []
47
56
48
57
// Make this task run right after the bundle task
49
58
def generateBundledResourcesHash;
50
59
51
- if (variant . hasProperty( " bundleJsAndAssets " )) {
52
- def reactBundleTask = variant . bundleJsAndAssets
53
- jsBundleDir = reactBundleTask. generatedAssetsFolders[ 0 ] . absolutePath
54
- resourcesDir = reactBundleTask. generatedResFolders[ 0 ] . absolutePath
60
+ def reactBundleTask = tasks . findByName( " createBundle ${ targetName } JsAndAssets " )
61
+ if ( reactBundleTask) {
62
+ jsBundleDir = reactBundleTask. property( ' jsBundleDir ' ) . asFile . get()
63
+ resourcesDir = reactBundleTask. property( ' resourcesDir ' ) . asFile . get()
55
64
jsBundleFile = file(" $jsBundleDir /$bundleAssetName " )
56
65
57
66
generateBundledResourcesHash = tasks. create(
58
67
name : " generateBundledResourcesHash${ targetName} " ,
59
68
type : Exec ) {
60
69
commandLine (* nodeExecutableAndArgs, " ${ nodeModulesPath} /react-native-code-push/scripts/generateBundledResourcesHash.js" , resourcesDir, jsBundleFile, jsBundleDir)
61
70
62
- enabled config. " bundleIn${ targetName} " ||
63
- config. " bundleIn${ variant.buildType.name.capitalize()} " ?:
64
- targetName. toLowerCase(). contains(" release" )
71
+ enabled ! debuggableVariants. contains(variant. name) ?: targetName. toLowerCase(). contains(" release" )
65
72
}
66
-
73
+
67
74
runBefore(" merge${ targetName} Resources" , generateBundledResourcesHash)
68
- runBefore(" merge${ targetName} Assets" , generateBundledResourcesHash)
75
+ runBefore(" merge${ targetName} Assets" , generateBundledResourcesHash)
69
76
} else {
70
77
def jsBundleDirConfigName = " jsBundleDir${ targetName} "
71
- jsBundleDir = elvisFile(config. " $jsBundleDirConfigName " ) ?:
78
+ jsBundleDir = elvisFile(config. " $jsBundleDirConfigName " ). get() ?:
72
79
file(" $buildDir /intermediates/assets/${ targetPath} " )
73
80
74
81
def resourcesDirConfigName = " resourcesDir${ targetName} "
75
- resourcesDir = elvisFile(config. " ${ resourcesDirConfigName} " ) ?:
82
+ resourcesDir = elvisFile(config. " ${ resourcesDirConfigName} " ). get() ?:
76
83
file(" $buildDir /intermediates/res/merged/${ targetPath} " )
77
84
78
- // In case version of 'Android Plugin for Gradle'' is lower than 1.3.0
85
+ // In case version of 'Android Plugin for Gradle'' is lower than 1.3.0
79
86
// '$buildDir' has slightly different structure - 'merged' folder
80
87
// does not exists so '${targetPath}' folder contains directly in 'res' folder.
81
88
if (! resourcesDir. exists() && file(" $buildDir /intermediates/res/${ targetPath} " ). exists()) {
@@ -107,7 +114,8 @@ gradle.projectsEvaluated {
107
114
generateBundledResourcesHash. dependsOn(" recordFilesBeforeBundleCommand${ targetName} " )
108
115
}
109
116
110
- generateBundledResourcesHash. dependsOn(" bundle${ targetName} JsAndAssets" )
117
+ generateBundledResourcesHash. dependsOn(" createBundle${ targetName} JsAndAssets" )
118
+
111
119
runBefore(" processArmeabi-v7a${ targetName} Resources" , generateBundledResourcesHash)
112
120
runBefore(" processX86${ targetName} Resources" , generateBundledResourcesHash)
113
121
runBefore(" processUniversal${ targetName} Resources" , generateBundledResourcesHash)
0 commit comments