diff --git a/.github/actions/prepare-node-deps/action.yaml b/.github/actions/prepare-node-deps/action.yaml index 31ee878383b..c50ce3bb546 100644 --- a/.github/actions/prepare-node-deps/action.yaml +++ b/.github/actions/prepare-node-deps/action.yaml @@ -52,3 +52,14 @@ runs: cp "$COMPASS_ICONS" "assets/fonts/" cp "$COMPASS_ICONS" "android/app/src/main/assets/fonts" echo "::endgroup::" + + - name: ci/clone-APNG4Android + shell: bash + env: + APNG4Android: "node_modules/APNG4Android" + run: | + echo "::group::clone-APNG4Android" + if [ ! -d "$APNG4Android" ]; then + git clone -b "fix/MM-62375-OOM-on-gif-with-build-updates" --single-branch --depth 1 https://github.com/mattermost/APNG4Android.git "$APNG4Android"; + fi + echo "::endgroup::" diff --git a/android/settings.gradle b/android/settings.gradle index a78db9f7c62..3227e2a4ca0 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -8,6 +8,10 @@ include ':reactnativenotifications' project(':reactnativenotifications').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-notifications/lib/android/app') include ':watermelondb-jsi' project(':watermelondb-jsi').projectDir = new File(rootProject.projectDir, '../node_modules/@nozbe/watermelondb/native/android-jsi') +include ':frameanimation' +project(':frameanimation').projectDir = new File('../node_modules/APNG4Android/frameanimation') +include ':gif' +project(':gif').projectDir = new File('../node_modules/APNG4Android/gif') includeBuild('../node_modules/@react-native/gradle-plugin') apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle") useExpoModules() diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 4efeef6ae77..68724ed521e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -17,7 +17,7 @@ PODS: - ExpoModulesCore - ExpoFileSystem (18.0.6): - ExpoModulesCore - - ExpoImage (2.0.3): + - ExpoImage (2.0.4): - ExpoModulesCore - SDWebImage (~> 5.19.1) - SDWebImageSVGCoder (~> 1.7.0) @@ -2466,7 +2466,7 @@ SPEC CHECKSUMS: ExpoCrypto: 483fc758365923f89ddaab4327c21cae9534841d ExpoDevice: 449822f2c45660c1ce83283dd51c67fe5404996c ExpoFileSystem: a38e1bb58d77f41717293a7b73ebd4014d8cb8dd - ExpoImage: 2c1f4adee95d033894c53346c721361736583728 + ExpoImage: 18ec1a3e5cd96ee6162d988be3085e18113e143f ExpoLinearGradient: 18148bd38f98fa0229c1f9df23393b32ab6d2d32 ExpoModulesCore: c9cb309323aee3c048099bb40ad0226e3fcf0c56 ExpoStoreReview: f38ed71ee04dfc02dde63a05f925f001cebba5d8 diff --git a/package-lock.json b/package-lock.json index 8f088e9ca26..f3af3592790 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "expo-application": "6.0.1", "expo-crypto": "14.0.1", "expo-device": "7.0.1", - "expo-image": "2.0.3", + "expo-image": "2.0.4", "expo-linear-gradient": "14.0.1", "expo-store-review": "8.0.0", "expo-video-thumbnails": "9.0.2", @@ -12143,10 +12143,9 @@ } }, "node_modules/expo-image": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-2.0.3.tgz", - "integrity": "sha512-+YnHTQv8jbXaut3FY7TDhNiSiGZ927C329mHvTZWV4Fyj32/Hjhhmk7dqq9I6LrA0nqBBiJjFj3u6VdHvCBnZg==", - "license": "MIT", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-2.0.4.tgz", + "integrity": "sha512-oIVSlV/BpBJbI9Anf8RjraGJXDWSJxNKxdXkYBJ31XrQaUstOM7OmsVKjOK40ZFZHIz3rx5SBJWK5w52Uz+/bg==", "peerDependencies": { "expo": "*", "react": "*", diff --git a/package.json b/package.json index ef31b095a52..df0b5b538ab 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "expo-application": "6.0.1", "expo-crypto": "14.0.1", "expo-device": "7.0.1", - "expo-image": "2.0.3", + "expo-image": "2.0.4", "expo-linear-gradient": "14.0.1", "expo-store-review": "8.0.0", "expo-video-thumbnails": "9.0.2", diff --git a/patches/expo-image+2.0.3.patch b/patches/expo-image+2.0.4.patch similarity index 73% rename from patches/expo-image+2.0.3.patch rename to patches/expo-image+2.0.4.patch index 9f0596963c8..d0e444c85ca 100644 --- a/patches/expo-image+2.0.3.patch +++ b/patches/expo-image+2.0.4.patch @@ -1,3 +1,21 @@ +diff --git a/node_modules/expo-image/android/build.gradle b/node_modules/expo-image/android/build.gradle +index a85fb5e..ac568c1 100644 +--- a/node_modules/expo-image/android/build.gradle ++++ b/node_modules/expo-image/android/build.gradle +@@ -44,7 +44,12 @@ dependencies { + kapt "com.github.bumptech.glide:compiler:${GLIDE_VERSION}" + api 'com.caverock:androidsvg-aar:1.4' + +- implementation "com.github.penfeizhou.android.animation:glide-plugin:3.0.2" ++ implementation project(':frameanimation') ++ implementation project(':gif') ++ implementation("com.github.penfeizhou.android.animation:glide-plugin:3.0.2") { ++ exclude group: 'com.github.penfeizhou.android.animation', module: 'frameanimation' ++ exclude group: 'com.github.penfeizhou.android.animation', module: 'gif' ++ } + implementation "com.github.bumptech.glide:avif-integration:${GLIDE_VERSION}" + + api 'com.github.bumptech.glide:okhttp3-integration:4.11.0' diff --git a/node_modules/expo-image/android/src/main/java/expo/modules/image/okhttp/ExpoImageOkHttpClientGlideModule.kt b/node_modules/expo-image/android/src/main/java/expo/modules/image/okhttp/ExpoImageOkHttpClientGlideModule.kt index 071907c..edf10c1 100644 --- a/node_modules/expo-image/android/src/main/java/expo/modules/image/okhttp/ExpoImageOkHttpClientGlideModule.kt diff --git a/scripts/postinstall.sh b/scripts/postinstall.sh index 6b1c32812e6..d40c10c7074 100755 --- a/scripts/postinstall.sh +++ b/scripts/postinstall.sh @@ -45,3 +45,8 @@ else mkdir -p "android/app/src/main/res/raw/" cp $SOUNDS/* "android/app/src/main/res/raw/" fi + +APNG4Android="node_modules/APNG4Android" +if [ ! -z "$APNG4Android" ]; then + git clone -b "fix/MM-62375-OOM-on-gif-with-build-updates" --single-branch --depth 1 https://github.com/mattermost/APNG4Android.git "$APNG4Android"; +fi \ No newline at end of file