Assets not showing


#1

Hi,

I am using Expo SDK 31.
I have successfully eject my app by changing the DEVELOPMENT_URL to my app url in DetachBuildConstants.java.
After that, I build an apk file using Android Studio, it can successfully show up my application for both images and text.

But after I change my app can run command expo publish and rebuild an apk file, all of the images not showing. What I change is just the text.

Any idea for this issue?
Thank you.


#2

Hey @kaijing,

How are you handling your assets? Are you pre-fetching them with AppLoading or bundling them?

Cheers,

Adam


#3

Hi @adamjnav

Yes, I have pre-fetching the assets using AppLoading.
Actually it is just a sample tab code that created by expo init.
And even I change the assets in the assets/images folder, also display “no assets change” when I run command expo publish.
The code is like this


import React from 'react';
import { Platform, StatusBar, StyleSheet, View } from 'react-native';
import { AppLoading, Asset, Font, Icon } from 'expo';
import AppNavigator from './navigation/AppNavigator';

export default class App extends React.Component {
  state = {
    isLoadingComplete: false,
  };

  render() {
    if (!this.state.isLoadingComplete && !this.props.skipLoadingScreen) {
      return (
        <AppLoading
          startAsync={this._loadResourcesAsync}
          onError={this._handleLoadingError}
          onFinish={this._handleFinishLoading}
        />
      );
    } else {
      return (
        <View style={styles.container}>
          {Platform.OS === 'ios' && <StatusBar barStyle="default" />}
          <AppNavigator />
        </View>
      );
    }
  }

  _loadResourcesAsync = async () => {
    return Promise.all([
      Asset.loadAsync([
        require('./assets/images/robot-dev.png'),
        require('./assets/images/robot-prod.png'),
      ]),
      Font.loadAsync({
        // This is the font that we are using for our tab bar
        ...Icon.Ionicons.font,
        // We include SpaceMono because we use it in HomeScreen.js. Feel free
        // to remove this if you are not using it in your app
        'space-mono': require('./assets/fonts/SpaceMono-Regular.ttf'),
      }),
    ]);
  };

  _handleLoadingError = error => {
    // In this case, you might want to report the error to your error
    // reporting service, for example Sentry
    console.warn(error);
  };

  _handleFinishLoading = () => {
    this.setState({ isLoadingComplete: true });
  };
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
  },
});

Thank you.