react-native-fast-image icon indicating copy to clipboard operation
react-native-fast-image copied to clipboard

[Android] Page Size issue - 16KB page size requirements

Open vishal-bhil opened this issue 4 months ago ‱ 6 comments

Can anyone let me know if the Fast Image package supports 16KB Page Size? Because i'm getting error like this in Play Console

Libraries that do not support 16 KB: base/lib/arm64-v8a/libgifimage.so base/lib/arm64-v8a/libstatic-webp.so base/lib/x86_64/libandroidlame.so base/lib/x86_64/libconceal.so base/lib/x86_64/libgifimage.so base/lib/x86_64/liostatic-webp.so

vishal-bhil avatar Sep 12 '25 14:09 vishal-bhil

+1

chavanRk avatar Sep 15 '25 09:09 chavanRk

it seems they dont care about this lib anymore :(( @vishal-bhil @chavanRk

hoangtrunnam avatar Sep 16 '25 09:09 hoangtrunnam

Libraries that do not support 16 KB: base/lib/arm64-v8a/libgifimage.so base/lib/arm64-v8a/libstatic-webp.so base/lib/x86_64/libandroidlame.so base/lib/x86_64/libconceal.so base/lib/x86_64/libgifimage.so base/lib/x86_64/liostatic-webp.so

libgifimage.so ← Fresco / React Native Image libstatic-webp.so ← Fresco (support WebP) libandroidlame.so ← audio encoding (ex: react-native-audio, lame lib) libconceal.so ← Facebook Conceal (crypto / storage) 📌 Explication Ces .so viennent de dĂ©pendances natives tierces :

libgifimage.so & libstatic-webp.so → font partie de Fresco, qui est embarquĂ© par React Native (notamment via react-native-fast-image ou mĂȘme core RN).

Si tu mets Ă  jour Fresco vers une version rĂ©cente (≄ 3.6.0), ces libs sont dĂ©jĂ  rebuild avec 16K page support.

libandroidlame.so → vient d’une lib qui utilise LAME MP3 encoder (android-lame).

Si tu as une dĂ©pendance type react-native-audio ou similaire → il faut voir s’il y a un fork maintenu avec support 16K.

libconceal.so → c’est Facebook Conceal, utilisĂ© par certaines libs de cache / crypto.

La lib est vieillissante → lĂ  aussi, il faut la mettre Ă  jour ou la remplacer (certaines versions rĂ©centes de Fresco n’en dĂ©pendent plus).

bkmed avatar Sep 17 '25 14:09 bkmed

Image

lib/x86/libpl_droidsonroids_gif.so 0x1000 lib/arm64-v8a/libpl_droidsonroids_gif.so 0x1000 lib/x86_64/libpl_droidsonroids_gif.so 0x1000

My app is built with React Native, and I don't use android-gif-drawable. Here is my package.json.

deps.txt

"dependencies": { "@d11/react-native-fast-image": "^8.12.0", "@fawazahmed/react-native-read-more": "^3.0.3", "@heap/react-native-heap": "^0.22.8", "@invertase/react-native-apple-authentication": "^2.4.1", "@notifee/react-native": "8.0.0", "@react-native-async-storage/async-storage": "^2.0.0", "@react-native-community/datetimepicker": "^8.0.0", "@react-native-community/masked-view": "^0.1.11", "@react-native-community/netinfo": "^11.3.3", "@react-native-firebase/analytics": "^21.11.0", "@react-native-firebase/app": "^21.11.0", "@react-native-firebase/app-check": "^21.11.0", "@react-native-firebase/auth": "^21.11.0", "@react-native-firebase/crashlytics": "^21.11.0", "@react-native-firebase/messaging": "^21.11.0", "@react-native-firebase/perf": "^21.11.0", "@react-native-firebase/remote-config": "^21.11.0", "@react-native-google-signin/google-signin": "^13.2.0", "@react-navigation/bottom-tabs": "^6.6.1", "@react-navigation/native": "^6.1.18", "@react-navigation/stack": "^6.4.1", "@reduxjs/toolkit": "^1.9.3", "@shopify/flash-list": "^1.7.3", "@types/react-native-vector-icons": "^6.4.18", "axios": "^0.24.0", "base-64": "^1.0.0", "buffer": "^6.0.3", "deprecated-react-native-prop-types": "^5.0.0", "eventemitter3": "^5.0.1", "events": "^3.3.0", "fast-xml-parser": "^4.5.0", "formik": "^2.4.6", "husky": "^8.0.3", "jwt-decode": "^3.1.2", "lint-staged": "^14.0.1", "lodash": "^4.17.21", "luxon": "^3.3.0", "moment": "^2.29.4", "moment-timezone": "^0.5.43", "native-base": "^3.4.28", "openai": "^4.19.0", "path": "^0.12.7", "qs": "^6.11.1", "querystring": "^0.2.1", "react": "18.3.1", "react-dom": "^18.3.1", "react-native": "^0.77.1", "react-native-animatable": "^1.4.0", "react-native-blob-util": "^0.21.2", "react-native-branch": "^6.5.0", "react-native-calendar-events": "^2.2.0", "react-native-circular-progress": "^1.3.8", "react-native-circular-progress-indicator": "^4.4.2", "react-native-color-matrix-image-filters": "^7.0.2", "react-native-config": "^1.5.0", "react-native-confirmation-code-field": "^8.0.1", "react-native-crisp-chat-sdk": "^0.16.1", "react-native-datepicker": "^1.7.2", "react-native-device-info": "^14.0.4", "react-native-document-picker": "^8.2.0", "react-native-drop-shadow": "^1.0.3", "react-native-dropdown-picker": "^5.4.6", "react-native-fbsdk-next": "^13.4.1", "react-native-file-viewer": "^2.1.5", "react-native-fs": "^2.20.0", "react-native-gesture-handler": "^2.24.0", "react-native-gifted-chat": "^2.7.3", "react-native-image-picker": "^8.2.0", "react-native-inset-shadow": "^1.0.3", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-keyboard-controller": "^1.16.5", "react-native-linear-gradient": "^2.8.3", "react-native-localize": "^3.0.0", "react-native-markdown-display": "^7.0.2", "react-native-mask-input": "^1.2.3", "react-native-media-console": "^2.2.4", "react-native-mmkv": "^3.2.0", "react-native-onesignal": "^5.2.9", "react-native-open-notification": "^0.1.4", "react-native-orientation-locker": "^1.7.0", "react-native-pdf": "^6.7.7", "react-native-permissions": "^5.3.0", "react-native-phone-number-input": "^2.1.0", "react-native-purchases": "^8.7.0", "react-native-push-notification": "^8.1.1", "react-native-reanimated": "^3.16.7", "react-native-reanimated-carousel": "^4.0.2", "react-native-render-html": "^6.1.0", "react-native-safe-area-context": "^5.2.0", "react-native-screens": "^4.9.1", "react-native-select-dropdown": "^2.0.4", "react-native-shadow": "^1.2.2", "react-native-shimmer-placeholder": "^2.0.9", "react-native-snap-carousel": "^3.9.1", "react-native-spinkit": "^1.5.1", "react-native-star-rating-widget": "^1.7.1", "react-native-svg": "^15.11.2", "react-native-ui-lib": "7.38.1", "react-native-url-polyfill": "^2.0.0", "react-native-vector-icons": "^10.2.0", "react-native-video": "^6.10.2", "react-native-webview": "^13.13.2", "react-redux": "^7.2.9", "react-toggle-button": "^2.2.0", "redux-persist": "^6.0.0", "semver": "^7.7.2", "sp-react-native-in-app-updates": "^1.5.0", "victory-native": "^36.9.2", "yup": "^0.32.11" }, "reactNativePermissionsIOS": [ "AppTrackingTransparency", "BluetoothPeripheral", "Calendars", "Camera", "Microphone", "Notifications", "PhotoLibrary" ], "devDependencies": { "@babel/core": "^7.26.7", "@babel/preset-env": "^7.26.7", "@babel/runtime": "^7.26.7", "@react-native-community/cli": "^15.1.3", "@react-native/babel-preset": "^0.77.1", "@react-native/metro-config": "^0.77.1", "@react-native/typescript-config": "^0.77.1", "@rnx-kit/align-deps": "^3.0.3", "@types/base-64": "^1.0.0", "@types/jest": "^27.5.2", "@types/qs": "^6.9.7", "@types/react": "^18.0.35", "@types/react-dom": "^18.2.15", "@types/react-native-datepicker": "^1.7.1", "@types/react-native-push-notification": "^8.1.1", "@types/react-native-snap-carousel": "^3.8.5", "@types/react-native-video": "^5.0.20", "@types/react-redux": "^7.1.25", "@types/react-test-renderer": "^18.0.0", "@types/redux-persist": "^4.3.1", "@types/yup": "^0.32.0", "@typescript-eslint/eslint-plugin": "^5.61.0", "@typescript-eslint/parser": "^5.61.0", "babel-eslint": "^10.1.0", "babel-jest": "^26.6.3", "babel-loader": "^8.3.0", "babel-plugin-module-resolver": "^4.1.0", "babel-plugin-transform-remove-console": "^6.9.4", "detox": "^20.34.5", "eslint": "^8.44.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^10.1.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-native": "^5.0.0", "icon-set-creator": "^1.1.5", "jest": "^29.2.1", "jetifier": "^2.0.0", "patch-package": "^6.5.1", "postinstall-postinstall": "^2.1.0", "prettier": "^3.5.3", "react-native-clean-project": "^4.0.3", "react-test-renderer": "18.3.1", "typescript": "^5.7.3" }, "resolutions": { "react-native-gesture-handler": "^2.24.0", "react-native-reanimated": "^3.16.7", "react-native": "^0.77.1", "@types/react": "18.x" },

How to fix this issue?

superpower725 avatar Sep 29 '25 03:09 superpower725

I migrated the project today for 16K issue. use @react-native-oh-tpl/react-native-fast-image.

I also updated the Fresco dependency to 3.6.0 in build/app/build.gradle. These changes should fix the issues we were seeing with FastImage.

iusama46 avatar Oct 09 '25 14:10 iusama46

Check this out if you have not tried it yet. It's a lightweight image component that works with or without Expo.

It was created with inspiration from react-native-fast-image that also uses Glide and SDWebImage. But due to its lack of ongoing maintenance i wanted something new to continue providing robust and performant rendering with caching functionality. More information in the description.

react-native-blasted-image

Best regards! 🚀

xerdnu avatar Nov 20 '25 22:11 xerdnu