uni-app static条件编译時APP异常

uni-app static条件编译時APP异常

示例代码:

static
|---app
|-------xxx.png
|---web
|-------xxx.png
|---mp-weixin
|-------abc.png
|def.png  

代码中使用 /static/xxx.png 访问

打包编译后:

  • web—正常
  • mp-weixin—正常
  • app----异常不显示

解包apk后,发现app打包后的目录为:

static
|---app
|-------xxx.png  

并没有把app分包中的文件复制出来/static中


## 操作步骤:

static |—app |-------xxx.png |—web |-------xxx.png |—mp-weixin |-------abc.png |def.png


代码中使用 `/static/xxx.png` 访问  

打包编译后:
- web---正常
- mp-weixin---正常
- app----异常不显示  

解包apk后,发现app打包后的目录为:

static |—app |-------xxx.png


并没有把app分包中的文件复制出来/static中

预期结果:

把 `/static/app` 复制到 `/static`

实际结果:

把 `/static/app` 复制到 `/static/app`

bug描述:

static
|---app
|-------xxx.png
|---web
|-------xxx.png
|---mp-weixin
|-------abc.png
|def.png  

代码中使用 /static/xxx.png 访问

打包编译后:

  • web—正常
  • mp-weixin—正常
  • app----异常不显示

解包apk后,发现app打包后的目录为:

static
|---app
|-------xxx.png  

并没有把app分包中的文件复制出来/static中


| 信息项         | 详情                   |
|----------------|------------------------|
| 产品分类       | uniapp/App             |
| PC开发环境     | Windows                |
| PC开发环境版本 | 11                     |
| HBuilderX类型  | 正式                   |
| HBuilderX版本  | 4.76                   |
| 手机系统       | Android                |
| 手机系统版本   | Android 16             |
| 手机厂商       | 小米                   |
| 手机机型       | RM                     |
| 页面类型       | vue                    |
| vue版本        | vue2                   |
| 打包方式       | 云端                   |
| 项目创建方式   | HBuilderX              |

更多关于uni-app static条件编译時APP异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

你的示例和分包也没关系吧,你想表达的意思是 def.png 没有被带上,还是 static/app/xxx.png 访问不到

更多关于uni-app static条件编译時APP异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html


抱歉,是条件编译问题 app中: /static/xxx.png 无法被访问

h5中: /static/xxx.png 访问正常

回复 MarkGo: im里面私聊吧,看一下你的编译产物结构

抱歉各位大哥,打扰了, 我的问题

这是uni-app静态资源条件编译在App平台的一个已知问题。当使用/static/xxx.png引用资源时,App平台未能正确将/static/app/目录下的文件复制到根static目录。

问题分析:

  • 在web和小程序平台,条件编译目录结构能正确解析
  • 但在App平台,/static/app/xxx.png被原样保留在static/app/目录下,而不是复制到static/根目录

临时解决方案:

  1. 将app专用的静态资源直接放在static/根目录,不使用条件编译
  2. 在代码中使用条件编译动态引用资源路径:
// #ifdef APP
const imgPath = '/static/app/xxx.png'
// #endif
// #ifndef APP  
const imgPath = '/static/xxx.png'
// #endif
回到顶部