我正在为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')
,但仍然不显示图像。
项目结构
答案 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版本。