Ionic 3执行ionic cordova build android后图片消失问题求助
我之前也踩过一模一样的坑——本地开发预览全正常,一打包Android就丢图片,给你几个实用的排查和解决方向:
先确认资源复制配置
如果是Angular版本的Ionic,打开angular.json,找到projects -> 你的项目名 -> architect -> build -> options -> assets,确保数组里包含"src/assets"——这是告诉构建工具把src/assets下的所有文件复制到最终的www/assets目录里。要是这里漏了,打包后自然找不到图片。严格检查路径大小写
本地开发环境(比如Windows/macOS)对文件路径大小写不敏感,但Android是基于Linux的,大小写严格区分!比如你写的assets/img/logo_a.png,要确保实际文件是logo_a.png而不是Logo_A.png,文件夹img也不能写成Img,差一个字母都找不到。彻底清理构建缓存
有时候旧的缓存会搞事情,试试这套组合拳:ionic cordova clean android rm -rf platforms/android www ionic cordova build android先清理Android平台缓存,删掉旧的构建产物,再重新构建,大概率能解决缓存导致的资源缺失问题。
检查自定义钩子脚本
如果你之前给Cordova加过自定义钩子(比如在hooks目录下的脚本),要确认这些脚本没有误删或者移动assets里的图片。有些钩子会做资源优化,可能不小心把你的图片过滤掉了。验证构建后的资源是否存在
构建完成后,去platforms/android/app/src/main/assets/www/assets/img目录下看看,你的图片是不是真的被复制过来了。如果这里没有,那肯定是构建时没把资源传过去,回到第一步检查angular.json的assets配置。改用Angular安全的资源绑定(可选)
要是路径没问题但还是不显示,可能是Angular的安全机制拦截了,可以用DomSanitizer来处理:import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'; constructor(private sanitizer: DomSanitizer) {} getLogoUrl(): SafeResourceUrl { return this.sanitizer.bypassSecurityTrustResourceUrl('assets/img/logo_a.png'); }模板里这样用:
<img [src]="getLogoUrl()" alt="logo" class="hybrid-image-center">
内容的提问来源于stack exchange,提问作者Ressaq

