[Android] Page Size issue - 16KB page size requirements
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
+1
it seems they dont care about this lib anymore :(( @vishal-bhil @chavanRk
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).
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.
"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?
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.
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.
Best regards! đ