React native 在Android设备上运行我的代码时,我得到一个错误:任务执行失败';:rn fetch blob:CompiledBugJavaWithJavaC';

React native 在Android设备上运行我的代码时,我得到一个错误:任务执行失败';:rn fetch blob:CompiledBugJavaWithJavaC';,react-native,react-native-android,React Native,React Native Android,我正在使用rn fetch blob包从url下载文件。但在android上运行代码时,它会抛出一个错误:任务执行失败:rn fetch blob:compiledBugJavaWithJavaC 终端内:此版本中使用了不推荐的Gradle功能,使其与Gradle 6.0不兼容 这是我的代码: import React, { Component } from "react"; import { View, Text, Button, Alert, ProgressBarAnd

我正在使用rn fetch blob包从url下载文件。但在android上运行代码时,它会抛出一个错误:任务执行失败:rn fetch blob:compiledBugJavaWithJavaC

终端内:此版本中使用了不推荐的Gradle功能,使其与Gradle 6.0不兼容

这是我的代码:

import React, { Component } from "react";
import {
  View,
  Text,
  Button,
  Alert,
  ProgressBarAndroid,
  ToastAndroid,
  PermissionsAndroid
} from "react-native";
import RNFetchBlob from "rn-fetch-blob";

export default class componentName extends Component {
  constructor(props) {
    super(props);
    this.state = {
      progress: 0,
      loading: false
    };
  }

  actualDownload = () => {
    this.setState({
      progress: 0,
      loading: true
    });
    let dirs = RNFetchBlob.fs.dirs;
    RNFetchBlob.config({
      // add this option that makes response data to be stored as a file,
      // this is much more performant.
      path: dirs.DownloadDir + "/path-to-file.png",
      fileCache: true
    })
      .fetch(
        "GET",
        "http://www.usa-essays.com/blog/wp-content/uploads/2017/09/sample-5-1024x768.jpg",
        {
          //some headers ..
        }
      )
      .progress((received, total) => {
        console.log("progress", received / total);
        this.setState({ progress: received / total });
      })
      .then(res => {
        this.setState({
          progress: 100,
          loading: false
        });
        ToastAndroid.showWithGravity(
          "Your file has been downloaded to downloads folder!",
          ToastAndroid.SHORT,
          ToastAndroid.BOTTOM
        );
      });
  };

  async downloadFile() {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
        {
          title: "Storage Permission",
          message: "App needs access to memory to download the file "
        }
      );
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        this.actualDownload();
      } else {
        Alert.alert(
          "Permission Denied!",
          "You need to give storage permission to download the file"
        );
      }
    } catch (err) {
      console.warn(err);
    }
  }
  render() {
    return (
      <View>
        <Text> Download Files in Android </Text>
        <Button onPress={() => this.downloadFile()} title="Download" />
        {this.state.loading ? (
          <ProgressBarAndroid
            styleAttr="Large"
            indeterminate={false}
            progress={this.state.progress}
          />
        ) : null}
      </View>
    );
  }
}
import React,{Component}来自“React”;
进口{
看法
文本,
按钮
警觉的,
累进类,
蟾蜍,
许可磁盘
}从“反应本族语”;
从“rn fetch blob”导入RNFETCH blob;
导出默认类componentName扩展组件{
建造师(道具){
超级(道具);
此.state={
进展:0,
加载:错误
};
}
实际下载=()=>{
这是我的国家({
进展:0,
加载:正确
});
设dirs=RNFetchBlob.fs.dirs;
RNFetchBlob.config({
//添加此选项,使响应数据存储为文件,
//这更有效。
路径:dirs.DownloadDir+“/path to file.png”,
文件缓存:true
})
.取回(
“得到”,
"http://www.usa-essays.com/blog/wp-content/uploads/2017/09/sample-5-1024x768.jpg",
{
//一些标题。。
}
)
.进度((已收到,总计)=>{
控制台日志(“进度”,已收到/总计);
this.setState({progress:received/total});
})
。然后(res=>{
这是我的国家({
进展:100,
加载:错误
});
用重力来展示(
“您的文件已下载到下载文件夹!”,
ToastAndroid.SHORT,
蟾蜍
);
});
};
异步下载文件(){
试一试{
授予的常数=等待许可和ROID.request(
PERMISSIONS和roid.PERMISSIONS.WRITE\u外部存储,
{
标题:“存储权限”,
消息:“应用程序需要访问内存才能下载文件”
}
);
如果(已授予===权限sandroid.RESULTS.已授予){
这是.actualDownload();
}否则{
警惕,警惕(
“拒绝许可!”,
“您需要授予存储权限才能下载该文件”
);
}
}捕捉(错误){
控制台。警告(错误);
}
}
render(){
返回(
在Android中下载文件
this.downloadFile()}title=“下载”/>
{this.state.loading(
):null}
);
}
}

React native 0.60为Android和iOS带来了一些突破性的变化

对于android部分,解决方案(解决方案)如下所述:

每次添加新模块或重置node_modules文件夹时,都必须执行步骤4


让我知道这是否解决了您的问题

React native 0.60给Android和iOS带来了一些突破性的变化

对于android部分,解决方案(解决方案)如下所述:

每次添加新模块或重置node_modules文件夹时,都必须执行步骤4


让我知道这是否解决了您的问题

使用React原生版本0.59.0和0.60.0突破并给出了链接到库的错误


训练:0.59.9很好

使用React原生版本0.59.0和0.60.0是突破性的,并给出了链接到库的错误


训练:0.59.9很好

对于
RN 0.60.0
,他们支持AndroidX, 您可以使用以下命令修复此问题

npm i jetifier
npx jetify
您可以参考以下文档了解对AndroidX的支持


参考:

对于
RN 0.60.0
,他们正在支持AndroidX, 您可以使用以下命令修复此问题

npm i jetifier
npx jetify
您可以参考以下文档了解对AndroidX的支持


参考:

您是否使用react native 0.60?是!!我使用的是rn 0.60您使用的是react native 0.60吗?是!!我正在使用rn 0.60>Task:app:processDebugResources失败此版本中使用了不推荐的Gradle功能,使其与Gradle 6.0不兼容。使用“--warning mode all”显示单个弃用警告。请参阅22个可操作任务:2个已执行,20个最新失败:生成失败,出现异常。运行您提到的步骤后,我出现此错误。>任务:app:processDebugResources失败此版本中使用了不推荐的Gradle功能,使其与Gradle 6.0不兼容。使用“--warning mode all”显示单个弃用警告。请参阅22个可操作任务:2个已执行,20个最新失败:生成失败,出现异常。在运行您提到的步骤后,我出现了此错误。