Android打包编译shrinkResources true报错解决方案
本文章分析解决在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报错解决方案相关推荐
- c++ for Android ----- ndk 编译链接 pthread 报错
按正常的对c++的库文件引用,Android.mk文件应该这么写: - LOCAL_LDLIBS += -lpthread LOCAL_LDLIBS += -llog - 但是好端端的却报错误: ** ...
- Xamarin.Android 使用 Encoding.GetEncoding(GB2312) 报错解决方案
问题描述:使用byte转换成汉字编码格式,debug模式下可以正常运行,但是release模式下就会出现死机问题. 排除过程:最开始不知道是编码格式转换错误,于是把相关代码块注释掉,然后进行relea ...
- android is not translated in 报错解决方案
在Android SDK Tool r19之后, Export的时候遇到xxx is not translated in xxx的问题. 例如: [html] view plaincopyprint? ...
- android override报错,android @override 报错解决方案
android @override 报错解决方案 现象: ... java: 1801: method does not override a method from its superclass @ ...
- android unity页面关闭报错,Unity3d报错解决方案
报错情形一: 更新了Android SDK到API level 20以后打包出错了: Error building Player: Win32Exception: ApplicationName='C ...
- vue-cli打包构建时常见的报错解决方案
vue-cli打包构建时常见的报错解决方案 参考文章: (1)vue-cli打包构建时常见的报错解决方案 (2)https://www.cnblogs.com/bester-ace/articles/ ...
- vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理)
vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理) 参考文章: (1)vue 打包后访问接口报错404 解决方案 (前提是在vue里使用了代理) (2)https://www. ...
- Eclipse新建Android项目报错解决方案详细汇总
本文记录刚接触Android开发搭建环境后新建工程各种可能的报错,并亲身经历漫长的解决过程(╥╯^╰╥),寻找各种偏方,避免大家采坑,希望能帮助到大家. 报错信息 出错一:The import and ...
- ubuntu 16.04 编译android 7.1,jack报错
ubuntu 16.04 编译android 7.1,jack报错 Writing client settings in /home/nikos/.jack-settings Installing j ...
最新文章
- 听说你的项目中仅这些资源就卡成了翔?看看他们怎么做!
- 图像的全局特征--用于目标检测
- java泛型视频教程_Java泛型快速教程
- 粗看ES6之JSON
- 台式计算机年限怎么看,电脑使用年限_电脑使用年限查询
- 深度强化学习之演员—评论家(Actor—Critic)
- Excel宏编程代码,根据混合的名次合并计算进退值
- 训练神经网络电脑自动重启
- 用A-priori算法实现frequent item set查找
- 小米路由器开启DDNS并支持二级路由
- oracle48108,​记一次oracle连接数暴涨hang分析经验
- 大数据高级开发工程师——Spark学习笔记(7)
- 腾讯云服务器nginx安装配置
- 斜度线在CAD中你是怎么画的?
- LaTeX环境安装及入门之入门使用
- html2canvas边框无法渲染,html2canvas无法正常渲染特定的数据URI
- RAM,SRAM,SDRAM工作原理(很长)
- sql语句优化技巧 sql 语句技巧
- sql数据库教程百度云_【全套】零基础Ps板绘教程百度云|板绘入门课程百度云
- 计算变量中置位的bit数