Flutter安卓混淆的相关问题

当你执行 build apk 后,flutter会默认进行混淆,若你的应用中引用了第三方的sdk,在debug模式下没问题,但在release下可能就会出现各种各样的问题,找不到某个类,或者某个功能无法使用,甚至直接崩溃等,此时,就需要你去处理混淆的相关问题。

1.禁用混淆:

flutter build apk --no-shrink

在使用flutter命令进行打包时,后面可以加上支持的cup架构,如:

flutter build apk --no-shrink --target-platform android-arm,android-arm64

就只会打’armeabi-v7a’, ‘arm64-v8a’,若想支持x84_64,可以添加上android-x64。

如果想把各种架构分开打包,可以添加上--split-per-abi,最终打包结果会是这样:

  • [project]/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
  • [project]/build/app/outputs/apk/release/app-arm64-v8a-release.apk
  • [project]/build/app/outputs/apk/release/app-x86_64-release.apk

2.配置混淆规则:

1).在android主工程app下添加 proguard-rules.pro 文件,并配置混淆规则:

-keep class io.flutter.plugin.** { *; }
......

2).在app的build.gradle中引用proguard-rules.pro:

 signingConfigs {release {storeFile file('test.jks')storePassword '123456'keyAlias 'test'keyPassword '123456'}}buildTypes {release {signingConfig signingConfigs.releaseminifyEnabled trueshrinkResources truezipAlignEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}debug {signingConfig signingConfigs.release}}

以上两种方法,基本上可以解决打release后出现的各种问题。

但还有一种情况,可能以上两种方法都无法解决,即第三方sdk引用了drawable中的一个图片资源进行安全验证,例如阿里百川的安全图片yw_1222_baichuan.jpg。这种情况,即便你禁用混淆,在打完release包后,可能仍然会报安全验证失败(找不到安全图片资源)。

本人在最初的测试中,将release包解压后看到资源文件列表如下:

在这里插入图片描述

资源文件是被混淆了的(禁用混淆没用),但使用反编译工具查看,图片资源基本都正常:

在这里插入图片描述

这里我就黑人问号了???图片资源路径没有任何问题,但安装后为什么仍然报找不到资源?猜测,可能是打包过程中对资源进行了压缩或其它操作导致图片属性发生变化,以至于sdk无法识别!

最后的终极解决办法:通过以上两种方式打release包后,解压apk,找到混淆后的jpg格式文件(nQ.jpg,需要确认这个就是安全图片),删除之,创建drawable文件夹,将正常的yw_1222_baichuan.jpg复制进去,重新修改为apk格式。

在这里插入图片描述

若此时直接安装,会提示无签名文件,需要你手动再次签名一下,然后再安装,会发现,已可以成功运行,并验证通过!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/99136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【多线程案例】设计模式-单例模式

1.单例模式 什么是单例模式? 所谓单例,即单个实例。通过编码技巧约定某个类只能有唯一一个实例对象,并且提前在类里面创建好一个实例对象,把构造方法私有化,再对外提供获取这个实例对象的方法,&#xff0…

嵌入式养成计划-31-网络编程----TCP的并发服务器模型------IO模型--IO多路复用

六十七、 TCP的并发服务器模型 67.1 循环服务器模型 一次只能处理一个客户端,当上一个客户端退出后,才能处理下一个客户端缺点:无法同时处理多个客户端 代码模型 sfd socket(); bind(); listen(); while(1){newfd accept();while(1){re…

vue-3

一、文章内容概括 1.生命周期 生命周期介绍生命周期的四个阶段生命周期钩子声明周期案例 2.工程化开发入门 工程化开发和脚手架项目运行流程组件化组件注册 二、Vue生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好&#xff09…

取消激光雷达/不升级Orin,小鹏P5改款背后的行业「痛点」

9月25日,小鹏汽车正式发布了旗下改款车型—2024款小鹏P5(15.69-17.49万元)。车型精简、降本增效(减配)成为新亮点。 在配置变化方面,智驾成为牺牲品。其中,高配Pro车型继续保留英伟达Xavier&…

如何领取京东优惠券用微信支付还是用支付宝支付购买商品?

京东用微信支付还是用支付宝支付? 京东商城购物不支持支付宝支付,现京东商城支持的支付方式包括:京东支付、银行卡、信用卡、微信支付、云闪付等; 京东如何领取优惠券用微信支付购物? 1、打开京东APP,挑选…

存档&改造【04】二维码操作入口设置细节自动刷新设置后的交互式网格

因为数据库中没有数据无法查看设置效果,于是自己创建了个测试数据表,用来给demo测试 -- 二维码操作入口设置 create table JM_QR_CODE(QR_CODE_ID NUMBER generated as identity primary key,SYSTEM_ID NUMBER(20) not null,IS_ENAB…

安装torchtext遇到的坑及解决办法

刚开始秉着需要什么就pip install什么的原则直接pip install torchtext,结果: 把我这个环境打乱了,自作主张的删掉之前的很多包重新安装了其他版本的包而不是自适应的安装当前torch所对应的torchtext。因为这个环境比较重要也用在其他的工程…

【FreeRTOS】【STM32】01从零开始的freertos之旅 浏览源码下的文件夹

基于野火以及正点原子 在打开正点原子的资料pdf时,我遇到了pdf无法复制粘贴的问题,这里有个pdf解锁文字复制功能的网址,mark一下。超级pdf 参考资料《STM32F429FreeRTOS开发手册_V1.2》 官方资料 FreeRTOS 的源码和相应的官方书籍均可从官…

机器人中的数值优化(二十一)—— 伴随灵敏度分析、线性方程组求解器的分类和特点、优化软件

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,…

模型训练环境相关(CUDA、PyTorch)

模型训练环境相关(CUDA、PyTorch) 1. 查看当前 GPU 所能支持的最高版本的 CUDA2. 如何判断是否安装了 CUDA3. 安装 PyTorch3.1 创建虚拟环境3.2 激活并进入虚拟环境3.3 安装 PyTorch 1. 查看当前 GPU 所能支持的最高版本的 CUDA 打开 NVIDIA 控制面板&a…

QT基础入门——文件操作(六)

前言: 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力。 目录 一、QFile文件读写操作 1.QFile file( path 文件路径) 2…

Flink状态管理与检查点机制

1.状态分类 相对于其他流计算框架,Flink 一个比较重要的特性就是其支持有状态计算。即你可以将中间的计算结果进行保存,并提供给后续的计算使用: 具体而言,Flink 又将状态 (State) 分为 Keyed State 与 Operator State: 1.1 算子状态 算子状态 (Operator State):顾名思义…

Vue Router的进阶

进阶 导航守卫 官方文档上面描述的会比较深奥,而守卫类型也比较多,其中包含了全局前置守卫、全局解析守卫、全局后置钩子、路由独享守卫、组件内守卫。每一种守卫的作用和用法都不相同。这会使得大家去学习的时候觉得比较困难,这边主要介绍…

北邮22级信通院数电:Verilog-FPGA(5)第四第五周实验 密码保险箱的设计

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.密码箱的功能和安全性 显示:…

VxeTable 表格组件推荐

VxeTable 表格组件推荐 https://vxetable.cn 在前端开发中,表格组件是不可或缺的一部分,它们用于展示和管理数据,为用户提供了重要的数据交互功能。VxeTable 是一个优秀的 Vue 表格组件,它提供了丰富的功能和灵活的配置选项&…

更新Xcode 版本后运行项目出现错误 Unable to boot the Simulator 解决方法

错误截图 出现 Unable to boot the Simulator 错误原因很多,以下方法不一定都适用,我是通过以下方法解决的 打开命令终端输入以下命令,可能需要你输入开机密码 sudo rm -rf ~/Library/Developer/CoreSimulator/Caches

戏剧影视设计制作虚拟仿真培训课件提升学生的参与感

说起影视制作,知名的影视制片人寥寥无几,大多数人还在依靠摄影机拍摄实景或搭建实体场景来不断精进场景布局和导演效果,成本高、投入人员多且周期长,随着VR虚拟现实技术的不断发展,利用VR模拟仿真技术进行影视制作实操…

SpringBoot的流浪宠物系统

采用技术:springbootvue 项目可以完美运行

DALL·E 3 ChatGPT-4的梦幻联动

核心内容:DALLE 3 & ChatGPT-4的梦幻联动 hello,我是小索奇,最近DALL结合ChatGPT4的话题逐渐上升了起来,今天就带大家探索一下~ DALLE的主要功能是根据文本描述来生成图片。你可以告诉它一个穿着皮草的西瓜,它就能…

百度小程序制作源码 百度引流做关键词排名之技巧

百度作为国内最大的搜索引擎,对于关键词排名和流量获取的策略格外重要,下面给大家分享一个百度小程序制作源码和做百度引流、关键词排名的一些技巧。 移动设备的普及和微信小程序的火热,百度也推出了自己的小程序。百度小程序与微信小程序类…