From 54d5ccc857b2af98b70756f59100a66866b5d075 Mon Sep 17 00:00:00 2001 From: r0h0gg6 Date: Thu, 26 Jun 2025 16:58:22 -0700 Subject: [PATCH 1/2] Update view model providers to provider due to deprecation --- .../navigation/ElectrodeNavigationFragmentDelegate.java | 6 +++--- .../impl/navigation/ElectrodeReactFragmentNavDelegate.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/lib/src/main/java/com/ern/api/impl/navigation/ElectrodeNavigationFragmentDelegate.java b/android/lib/src/main/java/com/ern/api/impl/navigation/ElectrodeNavigationFragmentDelegate.java index 513b1ee..40a7288 100644 --- a/android/lib/src/main/java/com/ern/api/impl/navigation/ElectrodeNavigationFragmentDelegate.java +++ b/android/lib/src/main/java/com/ern/api/impl/navigation/ElectrodeNavigationFragmentDelegate.java @@ -17,7 +17,7 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.ern.api.impl.core.ActivityDelegateConstants; import com.ern.api.impl.core.ElectrodeBaseFragmentDelegate; @@ -160,12 +160,12 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { // This is because calling add() or show() will not trigger a lifecycle method (onPause() or onStop()) on the previous fragment. // Not registering a view model in this case will prevent multiple request handlers getting registered at the same time. if (args != null && args.getBoolean(ActivityDelegateConstants.KEY_REGISTER_NAV_VIEW_MODEL)) { - mNavViewModel = ViewModelProviders.of(mFragment).get(ReactNavigationViewModel.class); + mNavViewModel = new ViewModelProvider(mFragment).get(ReactNavigationViewModel.class); mNavViewModel.getRouteLiveData().observe(mFragment.getViewLifecycleOwner(), routeObserver); mNavViewModel.registerNavRequestHandler(); } - mActionBarStatusViewModel = ViewModelProviders.of(mFragment.requireActivity()).get(ActionBarStatusViewModel.class); + mActionBarStatusViewModel = new ViewModelProvider(mFragment.requireActivity()).get(ActionBarStatusViewModel.class); } @CallSuper diff --git a/android/lib/src/main/java/com/ern/api/impl/navigation/ElectrodeReactFragmentNavDelegate.java b/android/lib/src/main/java/com/ern/api/impl/navigation/ElectrodeReactFragmentNavDelegate.java index cd2a790..d186ebd 100644 --- a/android/lib/src/main/java/com/ern/api/impl/navigation/ElectrodeReactFragmentNavDelegate.java +++ b/android/lib/src/main/java/com/ern/api/impl/navigation/ElectrodeReactFragmentNavDelegate.java @@ -32,7 +32,7 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProviders; +import androidx.lifecycle.ViewModelProvider; import com.ern.api.impl.core.ElectrodeReactFragmentActivityDelegate.StartMiniAppConfig; import com.ern.api.impl.core.ElectrodeReactFragmentDelegate; @@ -128,7 +128,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { @CallSuper public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mNavViewModel = ViewModelProviders.of(mFragment).get(ReactNavigationViewModel.class); + mNavViewModel = new ViewModelProvider(mFragment).get(ReactNavigationViewModel.class); mNavViewModel.getRouteLiveData().observe(mFragment.getViewLifecycleOwner(), routeObserver); } From 7936a6c6b39773ec71da1bf5b823feee9b8fc7fd Mon Sep 17 00:00:00 2001 From: r0h0gg6 Date: Wed, 2 Jul 2025 20:47:50 -0700 Subject: [PATCH 2/2] Update Android Gradle Plugin and CI (Java 17) --- .github/workflows/ci.yml | 7 +- .github/workflows/publish.yml | 2 +- android/build.gradle | 6 +- .../ern-navigation-support-lib/build.gradle | 19 +++-- .../maven-publish.gradle | 83 +++++++++---------- .../src/main/AndroidManifest.xml | 3 +- android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/lib/build.gradle | 13 +-- .../lib/src/androidTest/AndroidManifest.xml | 3 +- android/lib/src/main/AndroidManifest.xml | 2 +- android/moviesreloaded/build.gradle | 15 ++-- .../src/main/AndroidManifest.xml | 3 +- 13 files changed, 79 insertions(+), 81 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7cc2b1c..90c0d80 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,8 +10,9 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '16' - - run: echo "y" | /usr/local/lib/android/sdk/tools/bin/sdkmanager "ndk;21.0.6113669" + node-version: '18' + - uses: android-actions/setup-android@v3 + - run: sdkmanager "ndk;27.1.12297006" - run: npm i -g electrode-native - uses: actions/checkout@v3 with: @@ -31,7 +32,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '18' - uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: '12.4.0' diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index e193549..fdb44c9 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '16' + node-version: '18' registry-url: 'https://registry.npmjs.org' - run: yarn --frozen-lockfile - run: npm publish --access public diff --git a/android/build.gradle b/android/build.gradle index 2bcef7a..0b959a6 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,17 +1,17 @@ buildscript { repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.3' + classpath 'com.android.tools.build:gradle:8.7.2' } } allprojects { repositories { google() - jcenter() + mavenCentral() mavenLocal() } } diff --git a/android/ern-navigation-support-lib/build.gradle b/android/ern-navigation-support-lib/build.gradle index 3dceefc..e1687a4 100644 --- a/android/ern-navigation-support-lib/build.gradle +++ b/android/ern-navigation-support-lib/build.gradle @@ -1,12 +1,13 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 30 - buildToolsVersion "30.0.3" + namespace 'com.walmartlabs.ern.navigation.support.lib' + compileSdkVersion 35 + buildToolsVersion "35.0.0" defaultConfig { - minSdkVersion 19 - targetSdkVersion 30 + minSdkVersion 24 + targetSdkVersion 35 versionCode 1 versionName "1.0" @@ -21,15 +22,15 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } } dependencies { - implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'androidx.appcompat:appcompat:1.7.0' testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.2' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' + androidTestImplementation 'androidx.test.ext:junit:1.2.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' } apply from: 'maven-publish.gradle' diff --git a/android/ern-navigation-support-lib/maven-publish.gradle b/android/ern-navigation-support-lib/maven-publish.gradle index 75ce0e6..300504d 100644 --- a/android/ern-navigation-support-lib/maven-publish.gradle +++ b/android/ern-navigation-support-lib/maven-publish.gradle @@ -14,7 +14,7 @@ * limitations under the License. */ -apply plugin: 'maven' +apply plugin: 'maven-publish' apply plugin: 'signing' def isReleaseBuild() { @@ -39,66 +39,63 @@ def getRepositoryPassword() { return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" } -afterEvaluate { project -> - uploadArchives { - repositories { - mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - - pom.groupId = GROUP - pom.artifactId = POM_ARTIFACT_ID - pom.version = VERSION_NAME - - repository(url: getReleaseRepositoryUrl()) { - authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) - } - snapshotRepository(url: getSnapshotRepositoryUrl()) { - authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) - } +task androidSourcesJar(type: Jar) { + archiveClassifier = 'sources' + from android.sourceSets.main.java.srcDirs +} - pom.project { - name POM_NAME - packaging POM_PACKAGING - description POM_DESCRIPTION - url POM_URL +afterEvaluate { + publishing { + publications { + release(MavenPublication) { + from components.default + groupId = GROUP + artifactId = POM_ARTIFACT_ID + version = VERSION_NAME + + pom { + name = POM_NAME + packaging = POM_PACKAGING + description = POM_DESCRIPTION + url = POM_URL scm { - url POM_SCM_URL - connection POM_SCM_CONNECTION - developerConnection POM_SCM_DEV_CONNECTION + url = POM_SCM_URL + connection = POM_SCM_CONNECTION + developerConnection = POM_SCM_DEV_CONNECTION } licenses { license { - name POM_LICENCE_NAME - url POM_LICENCE_URL - distribution POM_LICENCE_DIST + name = POM_LICENCE_NAME + url = POM_LICENCE_URL + distribution = POM_LICENCE_DIST } } developers { developer { - id POM_DEVELOPER_ID - name POM_DEVELOPER_NAME + id = POM_DEVELOPER_ID + name = POM_DEVELOPER_NAME } } } } } + repositories { + maven { + def releasesRepoUrl = getReleaseRepositoryUrl() + def snapshotsRepoUrl = getSnapshotRepositoryUrl() + url = isReleaseBuild() ? releasesRepoUrl : snapshotsRepoUrl + credentials { + username = getRepositoryUsername() + password = getRepositoryPassword() + } + } + } } - signing { - required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } - sign configurations.archives - } - - - task androidSourcesJar(type: Jar) { - archiveClassifier.set("sources") - from android.sourceSets.main.java.sourceFiles - } - - artifacts { - archives androidSourcesJar + required { isReleaseBuild() && gradle.taskGraph.hasTask("publish") } + sign publishing.publications.release } } diff --git a/android/ern-navigation-support-lib/src/main/AndroidManifest.xml b/android/ern-navigation-support-lib/src/main/AndroidManifest.xml index 3ed89ca..8bdb7e1 100644 --- a/android/ern-navigation-support-lib/src/main/AndroidManifest.xml +++ b/android/ern-navigation-support-lib/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + diff --git a/android/gradle.properties b/android/gradle.properties index 0566c22..f3a30c1 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -9,7 +9,7 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx1536m +org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 4e1cc9d..1158199 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/android/lib/build.gradle b/android/lib/build.gradle index e925a6d..993208b 100644 --- a/android/lib/build.gradle +++ b/android/lib/build.gradle @@ -1,11 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 28 - buildToolsVersion "28.0.3" + namespace 'com.walmartlabs.ern.navigation' + compileSdkVersion 35 + buildToolsVersion "35.0.0" defaultConfig { - minSdkVersion 19 - targetSdkVersion 28 + minSdkVersion 24 + targetSdkVersion 35 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -28,8 +29,8 @@ android { unitTests.returnDefaultValues = true } compileOptions { - sourceCompatibility = '1.8' - targetCompatibility = '1.8' + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } } diff --git a/android/lib/src/androidTest/AndroidManifest.xml b/android/lib/src/androidTest/AndroidManifest.xml index 4de596d..1958b80 100644 --- a/android/lib/src/androidTest/AndroidManifest.xml +++ b/android/lib/src/androidTest/AndroidManifest.xml @@ -1,5 +1,4 @@ - + + diff --git a/android/moviesreloaded/build.gradle b/android/moviesreloaded/build.gradle index 4d3bda9..8d15f1f 100644 --- a/android/moviesreloaded/build.gradle +++ b/android/moviesreloaded/build.gradle @@ -2,12 +2,13 @@ apply plugin: 'com.android.application' apply from: 'ern.gradle' android { - compileSdkVersion 28 + namespace 'com.walmartlabs.moviesreloaded' + compileSdkVersion 35 defaultConfig { applicationId "com.walmartlabs.moviesreloaded" - minSdkVersion 23 - targetSdkVersion 28 + minSdkVersion 24 + targetSdkVersion 35 versionCode 1 versionName "1.0" @@ -22,11 +23,11 @@ android { } } compileOptions { - sourceCompatibility = '1.8' - targetCompatibility = '1.8' + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 } - buildToolsVersion = '28.0.3' - ndkVersion "21.0.6113669" + buildToolsVersion = '35.0.0' + ndkVersion "27.1.12297006" } dependencies { diff --git a/android/moviesreloaded/src/main/AndroidManifest.xml b/android/moviesreloaded/src/main/AndroidManifest.xml index 7a798a2..9edc9a9 100644 --- a/android/moviesreloaded/src/main/AndroidManifest.xml +++ b/android/moviesreloaded/src/main/AndroidManifest.xml @@ -1,7 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools">