Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Update codepush.gradle - #2471

Merged
Djordje (DordeDimitrijev) merged 6 commits into
microsoft:masterfrom
bmaluff:patch-1
Jun 27, 2024
Merged

Update codepush.gradle#2471
Djordje (DordeDimitrijev) merged 6 commits into
microsoft:masterfrom
bmaluff:patch-1

Conversation

@bmaluff

Copy link
Copy Markdown
Contributor

config was receiving an ArrayList as a false case, but ArrayLists don't support get() method, so it should receive a Map instance.

config was receiving an ArrayList as a false case, but ArrayLists don't support get() method, so it should receive a Map instance.
@sureshbakshi

suresh kumar (sureshbakshi) commented Mar 29, 2023

Copy link
Copy Markdown

Hi Bader (@bmaluff),

Throwing the below error. PFA
Cannot invoke method get() on a null object
Screenshot 2023-03-29 at 11 27 35 PM

@JB-CHAUVIN

Copy link
Copy Markdown

Same error as suresh kumar (@sureshbakshi)

> Configure project :app
Reading env from: .env
FAILURE: Build failed with an exception.
* Where:
Script '/Users/cegedim/Documents/Cegedim/Code/Mobile/keynote2/packages/mobile-pro/node_modules/react-native-code-push/android/codepush.gradle' line: 6
* What went wrong:
A problem occurred evaluating script.
> Cannot invoke method get() on null object
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.4.2/userguide/command_line_interface.html#sec:command_line_warnings

Add more verifications for config variable
@bmaluff

Copy link
Copy Markdown
ContributorAuthor

Thanks for the reviews!! Updated the code to fix it according to your findings!!!

@bmaluff

Copy link
Copy Markdown
ContributorAuthor

Hi Bader (@bmaluff),

Throwing the below error. PFA Cannot invoke method get() on a null object Screenshot 2023-03-29 at 11 27 35 PM

suresh kumar (@sureshbakshi) Can you test again, plz?

@pavlobu

Copy link
Copy Markdown

Hello, right now I patched changes from this pr and it helped to fix the problem. I hope it will be in release soon

@Gamote

Copy link
Copy Markdown

I can confirm that this fixed our issue as well.

We use the following versions:
react-native: 0.64.4
react-native-code-push: 8.0.1

If you use patch-package this is the patch:

react-native-code-push+8.0.1.patch
diff --git a/node_modules/react-native-code-push/android/codepush.gradle b/node_modules/react-native-code-push/android/codepush.gradle
index a0f9d27..09a0951 100644
--- a/node_modules/react-native-code-push/android/codepush.gradle+++ b/node_modules/react-native-code-push/android/codepush.gradle@@ -1,9 +1,15 @@
// Adapted from https://raw.githubusercontent.com/facebook/react-native/d16ff3bd8b92fa84a9007bf5ebedd8153e4c089d/react.gradle
+/**+ * A patch was applied to this file to fix an issue with the CodePush plugin+ * Issue: https://github.com/microsoft/react-native-code-push/issues/2470#issuecomment-1519511406+ * Patch: https://github.com/microsoft/react-native-code-push/pull/2471+ */+
import java.nio.file.Paths;
-def config = project.extensions.findByName("react") ?: []-def bundleAssetName = config.bundleAssetName.get() ?: "index.android.bundle"+def config = project.extensions.findByName("react") ?: [:]+def bundleAssetName = config.bundleAssetName ? config.bundleAssetName.get() : "index.android.bundle"
// because elvis operator
def elvisFile(thing) {
@@ -24,7 +30,7 @@ android.buildTypes.each { buildType ->
}
gradle.projectsEvaluated {
- def debuggableVariants = config.debuggableVariants.get() ?: ['debug']+ def debuggableVariants = config.debuggableVariants ? config.debuggableVariants.get() : ['debug']
android.applicationVariants.all { variant ->
// No code push for debuggable variants
@@ -49,8 +55,8 @@ gradle.projectsEvaluated {
def jsBundleFile;
// Additional node commandline arguments
- def nodeExecutableAndArgs = config.nodeExecutableAndArgs.get() ?: ["node"]- def extraPackagerArgs = config.extraPackagerArgs.get() ?: []+ def nodeExecutableAndArgs = config.nodeExecutableAndArgs ? config.nodeExecutableAndArgs.get(): ["node"]+ def extraPackagerArgs = config.extraPackagerArgs ? config.extraPackagerArgs.get() : []
// Make this task run right after the bundle task
def generateBundledResourcesHash;
@@ -73,11 +79,11 @@ gradle.projectsEvaluated {
runBefore("merge${targetName}Assets", generateBundledResourcesHash)
} else {
def jsBundleDirConfigName = "jsBundleDir${targetName}"
- jsBundleDir = elvisFile(config."$jsBundleDirConfigName").get() ?:+ jsBundleDir = elvisFile(config."$jsBundleDirConfigName") ? elvisFile(config."$jsBundleDirConfigName").get():
file("$buildDir/intermediates/assets/${targetPath}")
def resourcesDirConfigName = "resourcesDir${targetName}"
- resourcesDir = elvisFile(config."${resourcesDirConfigName}").get() ?:+ resourcesDir = elvisFile(config."${resourcesDirConfigName}") ? elvisFile(config."${resourcesDirConfigName}").get():
file("$buildDir/intermediates/res/merged/${targetPath}")
// In case version of 'Android Plugin for Gradle'' is lower than 1.3.0

@MateusAndrade

Copy link
Copy Markdown

I can confirm that this fixed our issue as well.

We use the following versions: react-native: 0.64.4 react-native-code-push: 8.0.1

If you use patch-package this is the patch:

react-native-code-push+8.0.1.patch

diff --git a/node_modules/react-native-code-push/android/codepush.gradle b/node_modules/react-native-code-push/android/codepush.gradle
index a0f9d27..09a0951 100644
--- a/node_modules/react-native-code-push/android/codepush.gradle+++ b/node_modules/react-native-code-push/android/codepush.gradle@@ -1,9 +1,15 @@
// Adapted from https://raw.githubusercontent.com/facebook/react-native/d16ff3bd8b92fa84a9007bf5ebedd8153e4c089d/react.gradle
+/**+ * A patch was applied to this file to fix an issue with the CodePush plugin+ * Issue: https://github.com/microsoft/react-native-code-push/issues/2470#issuecomment-1519511406+ * Patch: https://github.com/microsoft/react-native-code-push/pull/2471+ */+
import java.nio.file.Paths;
-def config = project.extensions.findByName("react") ?: []-def bundleAssetName = config.bundleAssetName.get() ?: "index.android.bundle"+def config = project.extensions.findByName("react") ?: [:]+def bundleAssetName = config.bundleAssetName ? config.bundleAssetName.get() : "index.android.bundle"
// because elvis operator
def elvisFile(thing) {
@@ -24,7 +30,7 @@ android.buildTypes.each { buildType ->
}
gradle.projectsEvaluated {
- def debuggableVariants = config.debuggableVariants.get() ?: ['debug']+ def debuggableVariants = config.debuggableVariants ? config.debuggableVariants.get() : ['debug']
android.applicationVariants.all { variant ->
// No code push for debuggable variants
@@ -49,8 +55,8 @@ gradle.projectsEvaluated {
def jsBundleFile;
// Additional node commandline arguments
- def nodeExecutableAndArgs = config.nodeExecutableAndArgs.get() ?: ["node"]- def extraPackagerArgs = config.extraPackagerArgs.get() ?: []+ def nodeExecutableAndArgs = config.nodeExecutableAndArgs ? config.nodeExecutableAndArgs.get(): ["node"]+ def extraPackagerArgs = config.extraPackagerArgs ? config.extraPackagerArgs.get() : []
// Make this task run right after the bundle task
def generateBundledResourcesHash;
@@ -73,11 +79,11 @@ gradle.projectsEvaluated {
runBefore("merge${targetName}Assets", generateBundledResourcesHash)
} else {
def jsBundleDirConfigName = "jsBundleDir${targetName}"
- jsBundleDir = elvisFile(config."$jsBundleDirConfigName").get() ?:+ jsBundleDir = elvisFile(config."$jsBundleDirConfigName") ? elvisFile(config."$jsBundleDirConfigName").get():
file("$buildDir/intermediates/assets/${targetPath}")
def resourcesDirConfigName = "resourcesDir${targetName}"
- resourcesDir = elvisFile(config."${resourcesDirConfigName}").get() ?:+ resourcesDir = elvisFile(config."${resourcesDirConfigName}") ? elvisFile(config."${resourcesDirConfigName}").get():
file("$buildDir/intermediates/res/merged/${targetPath}")
// In case version of 'Android Plugin for Gradle'' is lower than 1.3.0

Using this patch fixed the build error for rn 0.72 🚀

@bmaluff

Copy link
Copy Markdown
ContributorAuthor

Dmitriy Kirakosyan (@DmitriyKirakosyan) Can you review this PR so the fix can be available for everyone, plz??

@vishpatil1999

Copy link
Copy Markdown

Mateus Andrade (@MateusAndrade) Please provide steps how to use this patch package

@Gamote

Gamote commented Jul 3, 2023

Copy link
Copy Markdown

Mateus Andrade (@MateusAndrade) Please provide steps how to use this patch package

Checkout patch-package for steps on how to install it.

Then create a file out of the code block, call it react-native-code-push+8.0.1.patch and put it into the patches folder.

@velimir-jankovic

Copy link
Copy Markdown
Contributor

Bader (@bmaluff) Can you please post steps on how to reproduce the issue?

@mnikolaus

Mario Nikolaus (mnikolaus) commented Nov 9, 2023

Copy link
Copy Markdown

Anyone knows why the react extension is not found in extensions and why does config file fallback to empty array?

project.extensions.findByName("react")

I get that this PR fixes wrongly accessed type, but why does it even comes to that?

EDIT: Reverting to v7 fixed the issue

@DordeDimitrijev
Djordje (DordeDimitrijev) merged commit 5addacb into microsoft:masterJun 27, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

14 participants

@bmaluff@sureshbakshi@JB-CHAUVIN@pavlobu@Gamote@MateusAndrade@vishpatil1999@velimir-jankovic@mnikolaus@DmitriyKirakosyan@lucen-ms@DordeDimitrijev@AnatolyPristensky@MikhailSuendukov