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