本文章分析解决在android打包编译时,配置了shrinkResources为true移除无用资源时打包报错的解决方案

1 Android 打包失败

Android 项目打包或者在 flutter项目中打包 apk 打包失败,异常日志如下


* What went wrong:
A problem occurred evaluating root project 'android'.
> A problem occurred configuring project ':app'.                        > Removing unused resources requires unused code shrinking to be turned on. See http://d.android.com/r/tools/shrink-resources.html for more information.* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
2 解决方案

在android 项目目录下的 build.gradle 文件中配置

        release {signingConfig signingConfigs.app_key是否对代码进行混淆minifyEnabled false// A problem occurred configuring project ':app'. minifyEnabled 与 shrinkResources 搭配使用shrinkResources false//指定混淆的规则文件proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}

或者

        release {signingConfig signingConfigs.app_key是否对代码进行混淆minifyEnabled true// A problem occurred configuring project ':app'. minifyEnabled 与 shrinkResources 搭配使用shrinkResources true//指定混淆的规则文件proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}

就是说 如果我们需要移除项目无用资源,就必须同时打开混淆配置。

4 Android打包设置shrinkResources true引发的问题分析

当配置 shrinkResources 的值为 true 时,gradle 在打包编译的时候会将未引用的例如图片等资源文件移除。
那么常见的一个问题就是例如聊天或者论坛中使用到的表情等解析,因为这一类的表情图片是根据聊天信息中的标识匹配显示的,而且是动态获取资源id,在打包时示引用,会被当作无用资源移除,造成的结果就是无法解析显示表情图片

5 解决方案

保留使用到的图片,使用是并没有在程序中引用,在打包时也开启了 shrinkResources 的值为 true 移除无用资源,可做如下配置

在raw下配置keep.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@mipmap/ic_like_icon,@mipmap/ic_share_icon"></resources>

例如上述配置中,保留 mipmap 目录下的未引用的图片 ic_share_icon.png 、ic_like_icon.png


完毕

Android打包编译shrinkResources true报错解决方案相关推荐

  1. c++ for Android ----- ndk 编译链接 pthread 报错

    按正常的对c++的库文件引用,Android.mk文件应该这么写: - LOCAL_LDLIBS += -lpthread LOCAL_LDLIBS += -llog - 但是好端端的却报错误: ** ...

  2. Xamarin.Android 使用 Encoding.GetEncoding(GB2312) 报错解决方案

    问题描述:使用byte转换成汉字编码格式,debug模式下可以正常运行,但是release模式下就会出现死机问题. 排除过程:最开始不知道是编码格式转换错误,于是把相关代码块注释掉,然后进行relea ...

  3. android is not translated in 报错解决方案

    在Android SDK Tool r19之后, Export的时候遇到xxx is not translated in xxx的问题. 例如: [html] view plaincopyprint? ...

  4. android override报错,android @override 报错解决方案

    android @override 报错解决方案 现象: ... java: 1801: method does not override a method from its superclass @ ...

  5. android unity页面关闭报错,Unity3d报错解决方案

    报错情形一: 更新了Android SDK到API level 20以后打包出错了: Error building Player: Win32Exception: ApplicationName='C ...

  6. vue-cli打包构建时常见的报错解决方案

    vue-cli打包构建时常见的报错解决方案 参考文章: (1)vue-cli打包构建时常见的报错解决方案 (2)https://www.cnblogs.com/bester-ace/articles/ ...

  7. vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理)

    vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理) 参考文章: (1)vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理) (2)https://www. ...

  8. Eclipse新建Android项目报错解决方案详细汇总

    本文记录刚接触Android开发搭建环境后新建工程各种可能的报错,并亲身经历漫长的解决过程(╥╯^╰╥),寻找各种偏方,避免大家采坑,希望能帮助到大家. 报错信息 出错一:The import and ...

  9. ubuntu 16.04 编译android 7.1,jack报错

    ubuntu 16.04 编译android 7.1,jack报错 Writing client settings in /home/nikos/.jack-settings Installing j ...

最新文章

  1. 听说你的项目中仅这些资源就卡成了翔?看看他们怎么做!
  2. 图像的全局特征--用于目标检测
  3. java泛型视频教程_Java泛型快速教程
  4. 粗看ES6之JSON
  5. 台式计算机年限怎么看,电脑使用年限_电脑使用年限查询
  6. 深度强化学习之演员—评论家(Actor—Critic)
  7. Excel宏编程代码,根据混合的名次合并计算进退值
  8. 训练神经网络电脑自动重启
  9. 用A-priori算法实现frequent item set查找
  10. 小米路由器开启DDNS并支持二级路由
  11. oracle48108,​记一次oracle连接数暴涨hang分析经验
  12. 大数据高级开发工程师——Spark学习笔记(7)
  13. 腾讯云服务器nginx安装配置
  14. 斜度线在CAD中你是怎么画的?
  15. LaTeX环境安装及入门之入门使用
  16. html2canvas边框无法渲染,html2canvas无法正常渲染特定的数据URI
  17. RAM,SRAM,SDRAM工作原理(很长)
  18. sql语句优化技巧 sql 语句技巧
  19. sql数据库教程百度云_【全套】零基础Ps板绘教程百度云|板绘入门课程百度云
  20. 计算变量中置位的bit数

热门文章

  1. ICCV 2019 Oral 端到端任意形状场景文字识别
  2. 仅用10个月!中国高中生拿下Kaggle Master,怎么做到的?
  3. Python知识点之Python面向对象
  4. 建模师分类:选择游戏还是工业?哪个发展前景更好?
  5. 机器学习 | 决策树的理论与实践
  6. 调优哪家强——tensorflow命令行参数
  7. Java 发起http GET POST请求实例
  8. linux权限介绍,Linux的权限介绍
  9. 基于FPGA的车牌识别系统
  10. Windows 11的19个新功能