Подтвердить что ты не робот

React-native: изображения, не отображаемые в устройстве Android; но отлично показывает в эмуляторе

Я работаю над образцом реакции родного проекта. И почти все функции, кроме <Image source=''/> хорошо работают с ним. Изображение хорошо видно в эмуляторе Android, поставляемом с Android Studio и Genymotion, но не работает ни на каких реальных устройствах (moto G3 turbo, nexus 5, galaxy s4 и т.д...). Я не знаю, что пошло не так с моим кодом. Вот мой код

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Image
} from 'react-native';

class ImageTester extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to React Native!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit index.android.js
        </Text>
        <Text style={styles.instructions}>
          Double tap R on your keyboard to reload,{'\n'}
          Shake or press menu button for dev menu
        </Text>
        <Image source={require('./img/first_image.png')}></Image>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

AppRegistry.registerComponent('ImageTester', () => ImageTester);

структура проекта:

enter image description here

React-native версия: response-native: 0.32.1

4b9b3361

Ответ 1

Проблема была с моей командой упаковки пакета. Как сказал @luwu в своем комментарии, я проверил это и удивился, что с моей разницы нет. Тогда только я заметил сообщение при запуске команды

"Папка назначения активов не установлена, пропускаем..."

Это сообщение было немного запутанным, так как пакет уже был создан в папке ресурсов. "Активы" в этих сообщениях фактически указывают мои изображения. И я решил проблемы с помощью следующей команды:

react-native bundle --platform android --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --dev false --reset-cache --assets-dest android/app/src/main/res/

Ответ 2

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

Добавьте следующую строку в файл app/build.gradle в разделе project.ext.react:

project.ext.react = [
    ... other properties
    bundleInDebug: true // <-- add this line
]

Из документов в файле Gradle начального проекта:

По умолчанию bundleDebugJsAndAssets пропускается, так как в режиме отладки/разработки мы предпочитаем загружать пакет непосредственно с сервера разработки.