При запуске моего кода на устройстве Android я получаю сообщение об ошибке: «Не удалось выполнить задачу»: rn-fetch-blob: compileDebugJavaWithJavac ' - PullRequest
0 голосов
/ 11 июля 2019

Я использую пакет rn-fetch-blob для загрузки файлов с URL.Но при запуске кода на Android он выдает ошибку: Выполнение не выполнено для задачи ': rn-fetch-blob: compileDebugJavaWithJavac'.

В терминале: в этой сборке использовались устаревшие функции 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>
    );
  }
}

Ответы [ 3 ]

0 голосов
/ 11 июля 2019

Использование React Native версии 0.59.0 и 0.60.0 было пробитием и сообщало об ошибках, связанных с библиотеками.

Тренировка: React Native 0.59.9 Просто отлично работала.

0 голосов
/ 11 июля 2019

Для RN 0.60.0 они поддерживают AndroidX, Вы можете использовать следующую команду для решения этой проблемы.

npm i jetifier
npx jetify

Вы можете обратиться к следующему документу для AndroidX Support.

Ссылка: https://facebook.github.io/react-native/blog/2019/07/03/version-60

0 голосов
/ 11 июля 2019

React native 0.60 вносит серьезные изменения как в Android, так и в iOS.

Для части Android решение (обходной путь) объясняется здесь: https://facebook.github.io/react-native/blog/2019/07/03/version-60#androidx-support

1) npm install --save-dev jetifier
2) npx jetify
3) npx react-native run-android
4) npx jetify

Вам придется выполнять шаг 4 каждый раз, когда вы добавляете новый модуль или сбрасываете папку node_modules.

Дайте мне знать, если это решило вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...