我有一个似乎很常见的问题,但我还没有找到解决方案。我正在使用react-navigation、react-native-screens和react-native-image-picker。最后一个插件允许应用程序拍照并从图库加载照片。它在大多数情况下都有效,但有时在拍照并返回应用程序后会崩溃。我在他们的 GitHub 上搜索了解决方案,有很多关于此崩溃的报告,但没有一个修复。另一个库react-native-image-crop-picker也报告了这个崩溃,所以这似乎不是插件的问题,而是Android的问题。
这是我从 Firebase 崩溃日志中得到的信息:
- 无法启动活动 ComponentInfo{com.myApp/com.myApp.MainActivity}:androidx.fragment.app.Fragment$InstantiationException:无法实例化片段 com.swmansion.rnscreens.ScreenStackFragment
- 无法实例化片段 com.swmansion.rnscreens.ScreenStackFragment
- 屏幕碎片永远不应该被恢复。按照https://github.com/software-mansion/react-native-screens/issues/17#issuecomment-424704067中的说明 正确配置您的主要活动。
这似乎与 Android 在需要更多内存时杀死后台应用程序的方式有关。最后一个错误有一个指向 Github 问题的链接。他们建议修改MainActivity.java -> onCreate(),并更改super.onCreate(savedInstanceState); 到super.onCreate(null); 。然而,这并不能解决任何问题,它只是使应用程序重新启动而不是崩溃,但我仍然丢失了整个导航堆栈和我刚刚拍摄的照片。这个问题有适当的解决办法吗?
android react-native react-navigation react-native-image-picker
使用 React Image Picker 我面临这个错误:TypeError: undefined is not an object (evaluating '_reactNativeImagePicker.default.showImagePicker')
当我单击图像选择器功能时会发生这种情况
手机截图:

这是我的代码:
import React from 'react';
import { View, Text,Button } from 'react-native';
import ImagePicker from 'react-native-image-picker';
const options = {
title: 'Select Avatar',
customButtons: [{ name: 'fb', title: 'Choose Photo from Facebook' }],
storageOptions: {
skipBackup: true,
path: 'images',
},
};
function Picker(){
const openPicker =()=>{
ImagePicker.showImagePicker(options, (response) => {
console.log('Response = ', response);
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) { …Run Code Online (Sandbox Code Playgroud) 我正在向服务器发出 POST 请求以上传图像并在 react-native 中使用 axios 发送表单数据。我收到“网络错误”。我也尝试 fetch 但没有任何效果。使用 react native image picker libeary 选择 image.in postman api 工作正常
formData.append('title', Title);
formData.append('class_id', selectClass._id)
formData.append('subject_id', checkSelected)
formData.append('teacher_id', userId)
formData.append('description', lecture);
formData.append('type', 'image');
var arr=[];
arr.push(imageSource)
arr.map((file,index)=>{
formData.append('file',{
uri:file.path,
type:file.type,
name:file.name
})
})
axios({
method: 'post',
url: URL + 'admin/assignment/create',
data: data,
headers: {
"content-type": "multipart/form-data",
'x-auth-token': token,
},
})
.then(function (response) {
//handle success
console.log('axios assigment post',response);
})
.catch(function (response) {
//handle error
console.log('axios assigment post',response);
});
Run Code Online (Sandbox Code Playgroud) multipartform-data react-native axios react-native-android react-native-image-picker
我有一个要更新 UI 的项目,但是每当我使用 npx react-native run android 运行应用程序时,都会出现错误
Task :react-native-image-picker:compileDebugJavaWithJavac FAILED
这是下面的完整错误:
`此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容。使用“--warning-mode all”显示各个弃用警告。请参阅https://docs.gradle.org/6.7/userguide/command_line_interface.html#sec:command_line_warnings 302 个可操作任务:2 个已执行,300 个最新警告:映射新 ns http://schemas.android.com/ repository/android/common/02到旧的 ns http://schemas.android.com/repository/android/common/01 警告:将新的 ns http://schemas.android.com/repository/android/generic/02映射到旧 ns http://schemas.android.com/repository/android/generic/01 警告:将新 ns http://schemas.android.com/sdk/android/repo/addon2/02映射到旧 ns http:// schemas.android.com/sdk/android/repo/addon2/01 警告:将新 ns http://schemas.android.com/sdk/android/repo/addon2/03映射到旧 ns http://schemas.android。 com/sdk/android/repo/addon2/01 警告:将新 ns http://schemas.android.com/sdk/android/repo/repository2/02映射到旧 ns http://schemas.android.com/sdk/ android/repo/repository2/01 警告:将新的 ns http://schemas.android.com/sdk/android/repo/repository2/03映射到旧的 ns http://schemas.android.com/sdk/android/repo/ repository2/01 警告:将新的 ns http://schemas.android.com/sdk/android/repo/sys-img2/03映射到旧的 ns http://schemas.android.com/sdk/android/repo/sys- img2/01 警告:将新 ns http://schemas.android.com/sdk/android/repo/sys-img2/02映射到旧 ns http://schemas.android.com/sdk/android/repo/sys-图片2/01 警告:意外元素(uri:“”,本地:“基本扩展名”)。预期元素为 <{}codename>、<{}layoutlib>、<{}api-level> C:\Users\CURTIS\Downloads\efik\node_modules\react-native-image-picker\android\src\main\java …
上传图像时,它显示错误:多部分:在节点 js 服务器控制台上找不到边界
这是我的本机代码
const createFormData = async (photo, body) => {
const data = new FormData();
console.log("photoooooooooooo",photo.fileName);
data.append("photo", {
name: photo.fileName,
type: photo.type,
uri:
Platform.OS === "android" ? photo.uri : photo.uri.replace("file://", "")
});
Object.keys(body).forEach(key => {
data.append(key, body[key]);
});
console.log("datatyeeeeeeeeeeeeee",data);
return data;
};
const chooseFile = async() => {
var options = {
title: 'Select Image',
customButtons: [
{ name: 'customOptionKey', title: 'Choose Photo from Custom Option' },
],
storageOptions: {
skipBackup: true,
path: 'images',
},
};
ImagePicker.showImagePicker(options, response …Run Code Online (Sandbox Code Playgroud) node.js express reactjs react-native react-native-image-picker
我尝试了很多尝试来启动 react-native-image-picker 并使用我的 RN 应用程序。我正在使用 Expo 和 VS Code,并且没有使用 Xcode 或 Android Studio 运行该应用程序。在应用程序中获取相机胶卷的方法似乎有很多,我不确定哪条路是最好的。似乎没有人为我工作,所以我想选择最佳路径并专注于使那条路径有效。
我正在关注文档:https : //github.com/react-native-community/react-native-image-picker
我尝试过的事情:
我的代码:
import React, {useState, useEffect} from 'react';
import {StyleSheet, View, TextInput, TouchableOpacity, Text, CameraRoll } from 'react-native'
import ImagePicker from 'react-native-image-picker';
// import * as ImagePicker from 'expo-image-picker';
import Constants from 'expo-constants';
const PicturesScreen = ({navigation}) => {
const [pictures, setPictures] = useState([]);
getPermissionAsync = async () => {
if (Constants.platform.ios) {
const { status …Run Code Online (Sandbox Code Playgroud) react-native react-native-camera expo react-native-image-picker
当尝试在 Windows 计算机上运行我的项目时,它无法正常工作,它可以在我的 macOS 上运行,但在 Windows 上运行时会抛出以下错误:
Task :react-native-image-picker:compileDebugJavaWithJavac FAILED
Run Code Online (Sandbox Code Playgroud)
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
^
symbol: variable TIRAMISU
location: class VERSION_CODES
Run Code Online (Sandbox Code Playgroud)
运行它npx react-native run-android
build.gradle有以下内容:
buildscript {
ext {
buildToolsVersion = "30.0.3"
minSdkVersion = 30
compileSdkVersion = 30
targetSdkVersion = 30
ndkVersion = "20.1.5948944"
}
Run Code Online (Sandbox Code Playgroud)
一直在尝试更改我安装的所有内容的数量,29以及minSdk 、buildTools、编译30和目标,但没有任何效果。3133
目前,拥有节点 14 和 JDK 11
当我使用 33 时,错误更改为以下之一:
Task :react-native-webview:compileDebugJavaWithJavac FAILED
Run Code Online (Sandbox Code Playgroud)
已经尝试过多次./gradlew clean
有人知道发生了什么事吗?我缺少什么?
java gradle android-studio react-native react-native-image-picker
我在一加 6 上打开相机时遇到了 react-native-image-picker 和 react-native-image-crop-picker 的问题。使用打开相机时,打开相机的后台应用程序(我的应用程序)崩溃。它进入白屏并重新启动应用程序。此外,react-native log-android 中没有日志。我确实设法使用 android studio 和 logcat 发现一旦相机打开应用程序就会立即崩溃并留下一个死的进程。问题是我找不到任何实际的崩溃日志。尽管事先我收到了很多“访问被拒绝找到属性“vendor.debug.egl.swapinterval””,但经过一些研究,这些信息似乎并不相关。
目前这个问题只发生在我的一加 6T 上。这些问题不会发生在模拟器或 IOS 上。即使不是在我试过的 xiamoi 设备上。
我已经尝试了从在图像裁剪选择器中压缩图像(代码一)到尝试压缩图像并在 react-native-image-picker(代码二)中使用 noData 标志的所有方法。另外,100%有权限,甚至可以在应用权限=>{我的应用}中的android系统权限中看到它此外,我尝试清理我的一加6t相机的缓存,卸载-重新安装我的应用,并将开发者选项重置为默认。
我基本上已经解决了 github 中两个库的所有问题,但没有任何效果。
ImagePicker.openCamera({
width: 800,
height: 600,
compressImageMaxWidth: 640,
compressImageMaxHeight: 480,
compressImageQuality: 0.8
}).then(image => {
console.log(image);
}).catch(e => console.log(e));
Run Code Online (Sandbox Code Playgroud)
ImagePicker.launchCamera({noData: true, maxWidth: 800, maxHeight: 600, quality: 0.8}, (response) => {
console.log('Response = ', response);
if (response.didCancel) {
console.log('User cancelled image picker');
} else if (response.error) {
console.log('ImagePicker Error: ', response.error);
} else if …Run Code Online (Sandbox Code Playgroud) 我已经使用了react-native-image-picker,现在我从照片库中选择图像。要将图像发送到 API,我必须首先将其转换为 Base64,然后转换为字节数组。我的文件路径位于response.uri 中。我该怎么做?
当我执行 console.log(response) 时,我得到了这个结果
'Response = ', {
fileSize: 6581432,
longitude: -17.548928333333333,
uri: 'file:///Users/shubhamb/Library/Developer/CoreSimulator/Devices/B58314DF-F0A9-48D2-B68A-984A02271B72/data/Containers/Data/Application/63143214-8A03-4AC8-A79C-42EC9B82E841/tmp/2AACBC57-0C07-4C98-985E-154668E6A384.jpg',
fileName: 'IMG_0003.JPG',
latitude: 65.682895,
origURL: 'assets-library://asset/asset.JPG?id=9F983DBA-EC35-42B8-8773-B597CF782EDD&ext=JPG',
type: 'image/jpeg',
height: 2002,
width: 3000,
timestamp: '2012-08-08T18:52:11Z',
isVertical: false,
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将图像从图像选择器发送到服务器,但图像选择器仅返回 base64。
如何使用 expo 将 React-Native 中的 base64 转换为字节?