React Native 安卓版,图片突然不见了

Posted

技术标签:

【中文标题】React Native 安卓版,图片突然不见了【英文标题】:React Native Android version, images are suddenly missing 【发布时间】:2019-11-20 17:30:42 【问题描述】:

我的 React Native 应用程序的调试版本和发布 android 版本都突然缺少一些图像。我试过使用

react-native bundle --platform android --dev false --entry-file index.js --捆绑输出 android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

来自这个post 在回购。不到一个月前,我创建了一个 apk,这不是问题。

ios 版本的应用运行良好,所有图像都显示出来了。

这是我安装调试版本时的消息:

/Users/someguy/projects/third/something-app/android/gaialibrary/src/main/AndroidManifest.xml:9:5-15:19 警告: application@android:allowBackup 在 AndroidManifest.xml:9 被标记以替换其他声明,但没有其他声明 声明存在

Task :react-native-fbsdk:compileDebugJavaWithJavac 注意:一些输入文件使用或覆盖了已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/Utility.java 使用未经检查或不安全的操作。注意:重新编译 -Xlint:详细信息未选中。

任务:react-native-google-analytics-bridge:compileDebugJavaWithJavac 注意: /Users/someguy/projects/third/something-app/node_modules/react-native-google-analytics-bridge/android/src/main/java/com/idehub/GoogleAnalyticsBridge/ConvertToWritable.java 使用未经检查或不安全的操作。注意:重新编译 -Xlint:详细信息未选中。

任务:react-native-i18n:compileDebugJavaWithJavac 注意:/Users/someguy/projects/third/something-app/node_modules/react-native-i18n/android/src/main/java/com/AlexanderZaytsev/RNI18n/RNI18nModule .java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。

任务:react-native-picker:compileDebugJavaWithJavac 注意:/Users/someguy/projects/third/something-app/node_modules/react-native-picker/android/src/main/java/com/beefe/picker/PickerViewModule .java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。

Task :react-native-svg:compileDebugJavaWithJavac 注意:一些输入文件使用或覆盖了已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。

任务 :app:compileDebugJavaWithJavac 注意:/Users/someguy/projects/third/something-app/android/app/src/main/java/com/somethingapp/tone/Tone.java 使用或覆盖已弃用的 API。注意:重新编译 -Xlint:deprecation 了解详情。注意:/Users/someguy/projects/third/something-app/android/app/src/main/java/com/somethingapp/fitting/OVFitting.java 使用未经检查或不安全的操作。注意:重新编译 -Xlint:详细信息未选中。

Task :app:externalNativeBuildDebug Build somethingfittingjni x86 [1/2] 构建 CXX 对象 CMakeFiles/somethingfittingjni.dir/src/main/cpp/somethingfittingjni.cpp.o [2/2] 链接 CXX 共享库 ../../../../build/intermediates/cmake/debug/obj/x86/libsomethingfittingjni.so 构建一些合适的东西jni armeabi-v7a [1/2] 构建 CXX 对象 CMakeFiles/somethingfittingjni.dir/src/main/cpp/somethingfittingjni.cpp.o [2/2] 链接 CXX 共享库 ../../../../build/intermediates/cmake/debug/obj/armeabi-v7a/libsomethingfittingjni.so

Task :app:transformNativeLibsWithStripDebugSymbolForDebug 无法剥离库 '/Users/someguy/projects/third/something-app/android/app/build/intermediates/transforms/mergeJniLibs/debug/0/lib/armeabi/libgifimage.so' 由于缺少 ABI 'ARMEABI' 的剥离工具。按原样包装。 无法剥离库 '/Users/someguy/projects/third/something-app/android/app/build/intermediates/transforms/mergeJniLibs/debug/0/lib/armeabi/libicu_common.so' 由于缺少 ABI 'ARMEABI' 的剥离工具。按原样包装。 无法剥离库 '/Users/someguy/projects/third/something-app/android/app/build/intermediates/transforms/mergeJniLibs/debug/0/lib/armeabi/libimagepipeline.so' 由于缺少 ABI 'ARMEABI' 的剥离工具。按原样打包。

Task :app:installDebug 01:35:21 V/ddms: execute: running am get-config 01:35:21 V/ddms: execute 'am get-config' on 'cee345834583458':EOF 命中。读取:-1 01:35:21 V/ddms:执行: 返回在 'SM-G950N - 9' 上安装 APK 'app-debug.apk' app:debug 01:35:21 D/app-debug.apk:上传 app-debug.apk 到 设备 'cee345834583458' 01:35:21 D/设备:将文件上传到设备 'cee345834583458' 01:35:21 D/ddms: 读取文件权限 /Users/someguy/projects/third/something-app/android/app/build/outputs/apk/debug/app-debug.apk 如:rw-r--r-- 01:35:23 V/ddms:执行:运行 pm install -r -t "/data/local/tmp/app-debug.apk" 01:35:35 V/ddms: 执行 'pm install -r -t "/data/local/tmp/app-debug.apk"' on 'cee345834583458':EOF 命中。读取:-1 01:35:35 V/ddms:执行:返回 01:35:35 V/ddms:执行: 运行 rm "/data/local/tmp/app-debug.apk" 01:35:35 V/ddms: 执行 'cee345834583458' 上的 'rm "/data/local/tmp/app-debug.apk"' :EOF 命中。 读取:-1 01:35:35 V/ddms:执行:返回安装在 1 个设备上。

在 31 秒内构建成功

更新 build.gradle 到 3.2.1 后 我收到以下错误:

/Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLikeViewManager.java:24: 错误:找不到符号导入androidx.annotation.NonNull; ^ 符号:类 NonNull 位置:包 androidx.annotation /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLikeViewManager.java:25: 错误:找不到符号导入 androidx.annotation.Nullable; ^ 符号:类 Nullable 位置:包 androidx.annotation /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppEventsLoggerModule.java:23: 错误:找不到符号导入androidx.annotation.NonNull; ^ 符号:类 NonNull 位置:包 androidx.annotation /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppEventsLoggerModule.java:24: 错误:找不到符号导入 androidx.annotation.Nullable; ^ 符号:类 Nullable 位置:包 androidx.annotation /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginButtonManager.java:23: 错误:找不到符号导入androidx.annotation.NonNull; ^ 符号:类 NonNull 位置:包 androidx.annotation /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginButtonManager.java:24: 错误:找不到符号导入 androidx.annotation.Nullable; ^ 符号:类 Nullable 位置:包 androidx.annotation /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLikeViewManager.java:52: 错误:找不到符号 public void setObjectIdAndType(RCTLikeView likeView, @Nullable ReadableMap objectIdAndType) ^ 符号:类 Nullable 位置:类 FBLikeViewManager /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLikeViewManager.java:61: 错误:找不到符号 public void setLikeViewStyle(RCTLikeView likeView, @Nullable String likeViewStyle) ^ 符号:类 Nullable 位置:类 FBLikeViewManager /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLikeViewManager.java:66: 错误:找不到符号 公共无效 setAuxiliaryViewPosition(RCTLikeView likeView,@Nullable 字符串辅助视图位置) ^ 符号:类 Nullable 位置:类 FBLikeViewManager /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLikeViewManager.java:71: 错误:找不到符号 公共无效 setHorizo​​ntalAlignment(RCTLikeView likeView, @Nullable String Horizo​​ntalAlignment) ^ 符号:类 Nullable 位置:类 FBLikeViewManager /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppEventsLoggerModule.java:175: 错误:找不到符号 @Nullable ReadableMap 参数) ^ 符号:类 Nullable 位置:类 FBAppEventsLoggerModule /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppEventsLoggerModule.java:187: 错误:找不到符号 public void logPushNotificationOpen(@Nullable ReadableMap payload) ^ 符号:类 Nullable 位置:类 FBAppEventsLoggerModule /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBAppEventsLoggerModule.java:210: 错误:找不到符号 @Nullable ^ 符号:类 Nullable 位置:类 FBAppEventsLoggerModule /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginButtonManager.java:62: 错误:找不到符号 公共无效 setLoginBehavior(RCTLoginButton loginButton,@Nullable String loginBehavior) ^ 符号:类 Nullable 位置:类 FBLoginButtonManager /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginButtonManager.java:67: 错误:找不到符号 公共无效 setDefaultAudience(RCTLoginButton loginButton, @Nullable String defaultAudience) ^ 符号:类 Nullable 位置:类 FBLoginButtonManager /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginButtonManager.java:74: 错误:找不到符号 @Nullable ReadableArray 发布权限) ^ 符号:类 Nullable 位置:类 FBLoginButtonManager /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/FBLoginButtonManager.java:81: 错误:找不到符号 @Nullable ReadableArray readPermissions) ^ 符号:类 Nullable 位置:类 FBLoginButtonManager 注意:某些输入文件使用或覆盖 已弃用的 API。注意:使用 -Xlint:deprecation 重新编译以获取详细信息。 笔记: /Users/someguy/projects/third/something-app/node_modules/react-native-fbsdk/android/src/main/java/com/facebook/reactnative/androidsdk/Utility.java 使用未经检查或不安全的操作。注意:重新编译 -Xlint:详细信息未选中。 17 个错误

【问题讨论】:

解决方案之一是更新 Android Gradle 插件版本。至少 'com.android.tools.build:gradle:3.1.2' 我尝试更新,但它最终破坏了我的导入语句 可能你必须将你的项目迁移到 androidx。 【参考方案1】:

使用这个post 我能够解决这个问题。使用

删除生成的资源/drawable 文件夹
rm -rf android/app/src/main/res/drawable-*

然后使用

再次生成它
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/

我会补充一点,这会导致我的启动页面徽标出现一些问题。唯一的解决方法是将我的启动页面徽标手动添加到 /drawable-mdpi 文件夹。

【讨论】:

以上是关于React Native 安卓版,图片突然不见了的主要内容,如果未能解决你的问题,请参考以下文章

React Native - 直接打开安卓图库

React Native 63版图片上传问题

react-native 安卓项目gradle优化

react-native的常用组件及api

React Native ios 构建突然失败

本地图像现在显示 React Native