fix(MM-62375): OOM on gif (#8573) (#8586)

* fix(MM-62375): OOM on gif
* add APNG4Android into github action script to download
* change to mattermost/APNG4Android

(cherry picked from commit 985fa692a6)

Co-authored-by: Rahim Rahman <rahim.rahman@mattermost.com>
This commit is contained in:
Mattermost Build 2025-02-12 18:15:50 +02:00 committed by GitHub
parent 747982afcb
commit 6d80244974
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 45 additions and 8 deletions

View file

@ -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::"

View file

@ -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()

View file

@ -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

9
package-lock.json generated
View file

@ -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": "*",

View file

@ -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",

View file

@ -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

View file

@ -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