在Android上找不到React Native中的捆绑图像

时间:2019-04-05 14:08:23

标签: android react-native bundle react-native-android assets

我正在为ios和android构建一个React Native应用程序。资产(图像,声音等)全部存储在本地,并在应用程序启动期间由经理预加载以供以后使用。

在ios上,调试和发布模式下的一切工作正常,在调试模式下的android上一切正常,但是即使将它们捆绑在一起,图像也无法在android的发布模式下显示。

第一笔资产是从SqlCommand cmdDS = new SqlCommand("SELECT MIN(DateStartSE) AS DATESE FROM tabStoreExec JOIN tabList ON tabStoreExec.idSE=tabList.idL WHERE tabList.selection=1", sqliteCon); SqlCommand cmdDE = new SqlCommand("SELECT MAX(DateEndSE) AS DATEED FROM tabStoreExec JOIN tabList ON tabStoreExec.idSE=tabList.idL WHERE tabList.selection=1", sqliteCon); var DATESE = cmdDS.ExecuteScalar(); var DATEED = cmdDE.ExecuteScalar(); SqlCommand cmd1 = new SqlCommand("INSERT INTO tabStoricoDetail(NomeItem,ResItemDet,DateStartDet,DateEndDet) OUTPUT inserted.Id VALUES ('Prova','RProva',@DATESE,@DATEED)", sqliteCon); cmd1.Parameters.AddWithValue("@DATESE", DATESE); cmd1.Parameters.AddWithValue("@DATEED", DATEED); 的资产管理器中预加载的

src/assets/index.js

然后按如下所示渲染图像

import { Image } from 'react-native'

const assets = {
    images: {
        'icon.png': require('./images/icon.png')
    }
}

const preloadedAssets = {}

const getImage = (name, extension = 'png') => {
    return getAsset('images', `${name}.${extension}`)
}

const getAsset = (type, name) => {
    return preloadedAssets[type][name]
}

const preloadImages = () => {
    preloadedAssets.images = {}

    return Promise.all(
        Object.keys(assets.images).map(name => {
            const source = Image.resolveAssetSource(assets.images[name])

            return Image
                .prefetch(source.uri)
                .then(() => {
                    preloadedAssets.images[name] = {
                        source: assets.images[name],
                        ...source
                    }
                })
        })
    )
}

const preload = () => {
    return preloadImages()
}

export default {
    preload,
    getImage
}

我捆绑了以下命令

import AssetManager from '../assets'
const asset = AssetManager.getImage('icon.png')
<Image source={asset.source} style={{ width: ..., height: ... }} />

我还尝试将所有资产复制到react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ 文件夹,并将android/app/src/main/assets/替换为require('./images/icon.png'),但仍然不显示图像。

项目结构

project

1 个答案:

答案 0 :(得分:0)

我最终在0.59.4(以前是0.57.1​​)版本上从头开始构建了一个本机项目。

现在一切正常,无需生成以下命令即可生成apk:

cd android && ENVFILE=../.env.production ./gradlew assembleProdRelease && cd ..
cd android && ENVFILE=../.env.development ./gradlew assembleDevRelease && cd ..

我还删除了Image.prefetch,因为它不适用于android版本。