Skip to content

Commit c89c1d8

Browse files
committed
Support RN 0.71.0 (Closes microsoft#2418)
React native now uses react-native-gradle-plugin, which works a bit differently.
1 parent 98cbc9c commit c89c1d8

File tree

2 files changed

+29
-20
lines changed

2 files changed

+29
-20
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ We try our best to maintain backwards compatibility of our plugin with previous
7575
| v0.59 | v5.6+ *(RN refactored js bundle loader code)* |
7676
| v0.60-v0.61 | v6.0+ *(RN migrated to Autolinking)* |
7777
| v0.62-v0.64 | v6.2+ *(RN removed LiveReload)* |
78-
| v0.65-v0.69 | v7.2+ *(RN updated iPhone-target-version)* |
78+
| v0.65-v0.69 | v7.0+ *(RN updated iPhone-target-version)* |
79+
| v0.71 | v7.2+ *(RN moved to react-native-gradle-plugin)* |
7980

8081
*NOTE: `react-native-code-push` versions lower than **[v5.7.0](https://github.com/microsoft/react-native-code-push/releases/tag/v5.7.0)** will stop working in the near future. You can find more information in our [documentation](https://github.com/microsoft/code-push/blob/master/migration-notice.md).*
8182

android/codepush.gradle

+27-19
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
import java.nio.file.Paths;
44

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"
77

88
// because elvis operator
99
def elvisFile(thing) {
@@ -23,11 +23,20 @@ android.buildTypes.each { buildType ->
2323
buildType.resValue 'string', "CODE_PUSH_APK_BUILD_TIME", String.format("\"%d\"", System.currentTimeMillis())
2424
}
2525

26-
gradle.projectsEvaluated {
26+
27+
gradle.projectsEvaluated {
28+
29+
def debuggableVariants = config.debuggableVariants.get() ?: ['debug']
30+
2731
android.applicationVariants.all { variant ->
32+
// No code push for debuggable variants
33+
if (debuggableVariants.contains(variant.name)) {
34+
return;
35+
}
36+
2837
def nodeModulesPath;
2938
if (config.root) {
30-
nodeModulesPath = Paths.get(config.root, "/node_modules");
39+
nodeModulesPath = Paths.get(config.root.asFile.get().absolutePath, "/node_modules");
3140
} else if (project.hasProperty('nodeModulesPath')) {
3241
nodeModulesPath = project.nodeModulesPath
3342
} else {
@@ -42,40 +51,38 @@ gradle.projectsEvaluated {
4251
def jsBundleFile;
4352

4453
// 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() ?: []
4756

4857
// Make this task run right after the bundle task
4958
def generateBundledResourcesHash;
5059

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()
5564
jsBundleFile = file("$jsBundleDir/$bundleAssetName")
5665

5766
generateBundledResourcesHash = tasks.create(
5867
name: "generateBundledResourcesHash${targetName}",
5968
type: Exec) {
6069
commandLine (*nodeExecutableAndArgs, "${nodeModulesPath}/react-native-code-push/scripts/generateBundledResourcesHash.js", resourcesDir, jsBundleFile, jsBundleDir)
6170

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")
6572
}
66-
73+
6774
runBefore("merge${targetName}Resources", generateBundledResourcesHash)
68-
runBefore("merge${targetName}Assets", generateBundledResourcesHash)
75+
runBefore("merge${targetName}Assets", generateBundledResourcesHash)
6976
} else {
7077
def jsBundleDirConfigName = "jsBundleDir${targetName}"
71-
jsBundleDir = elvisFile(config."$jsBundleDirConfigName") ?:
78+
jsBundleDir = elvisFile(config."$jsBundleDirConfigName").get() ?:
7279
file("$buildDir/intermediates/assets/${targetPath}")
7380

7481
def resourcesDirConfigName = "resourcesDir${targetName}"
75-
resourcesDir = elvisFile(config."${resourcesDirConfigName}") ?:
82+
resourcesDir = elvisFile(config."${resourcesDirConfigName}").get() ?:
7683
file("$buildDir/intermediates/res/merged/${targetPath}")
7784

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
7986
// '$buildDir' has slightly different structure - 'merged' folder
8087
// does not exists so '${targetPath}' folder contains directly in 'res' folder.
8188
if (!resourcesDir.exists() && file("$buildDir/intermediates/res/${targetPath}").exists()) {
@@ -107,7 +114,8 @@ gradle.projectsEvaluated {
107114
generateBundledResourcesHash.dependsOn("recordFilesBeforeBundleCommand${targetName}")
108115
}
109116

110-
generateBundledResourcesHash.dependsOn("bundle${targetName}JsAndAssets")
117+
generateBundledResourcesHash.dependsOn("createBundle${targetName}JsAndAssets")
118+
111119
runBefore("processArmeabi-v7a${targetName}Resources", generateBundledResourcesHash)
112120
runBefore("processX86${targetName}Resources", generateBundledResourcesHash)
113121
runBefore("processUniversal${targetName}Resources", generateBundledResourcesHash)

0 commit comments

Comments
 (0)