Android问题以及解决方案-组件化开发混淆文件不起作用

2024-08-21 02:32

本文主要是介绍Android问题以及解决方案-组件化开发混淆文件不起作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

组件化开发混淆文件不起作用?

明明在混淆文件里添加了各种第三方库的混淆配置,为什么在混淆开关打开时打正式包后会报错?这TM为什么呢?到底是为什么呢???

什么是组件化开发?

采用组件化开发的应用越来越多,稍微有点大的项目都会采用组件化。不禁问为什么呢?当然是有很多优点,不然不会那么多人那么多公司会采用这种方案。

到底有什么优点?召唤传送门!!!---》》》 “终于懂了” 系列:Android组件化,全面掌握!

那混淆是个什么?

作为开发者,写好的业务代码打包上线后,不会希望有人反编译之后看到本来要保密的但是是裸奔的代码吧。

混淆:把代码变成无规律无明显标识的超级难读的代码。

因为一些三方库,sdk或者业务需求,某些代码不需要混淆,这时候需要混淆文件来写一些不需要混淆的规则代码。

混淆有什么规则?再次召唤传送门!!!---》》》 Android代码混淆&组件化混淆方案

我遇到的问题是什么?

最近项目要第一次上线,在经过很长时间的开发之后,要开始准备发布上线了,这时候开始做准备工作,其中打release包是必要的节点之一。

有同事打正式包之后,安装打开后各种报错,无法正常运行。这就是问题,为什么debug包可以正常运行测试,release包不行呢?

我们组件化采用的是ARouter路由管理,文档上写明混淆规则,将混淆代码放入proguard-rules.pro文件中。

一切准备就绪。打包安装!当我激动的打开我们的app时,在闪屏页不动了~~ debug包为什么没事儿,

通过跟踪调试发现ARouter的navigation的回调事件中onLost调用了,路由找不到???

为什么?混淆也添加了啊,debug包没问题啊,为什么release就不行!

其实不仅仅ARouter出问题,项目中其他组件中的三方库的初始化等都有问题。这就需要好好反思一下了。

难道是混淆不起作用?可是明明将混淆规则添加到proguard-rules.pro文件中了啊。proguard-rules.pro?不对不对。没有组件化开发时候我们都会放到这个文件中,组件化开始时候不行了吗???

确实不行了。看看这个Android代码混淆&组件化混淆方案就知道为什么不行了。

问题记录~~


如果感觉文章可以学到东西,欢迎大佬关注小弟的公众号:Android 翻山之路

![Android 翻山之路公众号图片.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a1b3b680585547049d186c433aad38d8~tplv-k3u1fbpfcp-watermark.image)

这篇关于Android问题以及解决方案-组件化开发混淆文件不起作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1091863

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方