解决AndroidStudio修改代码运行没变化没生效的问题-Xposed插件重载手机问题「解决AndroidStudio修改代码运行没变化没生效的问题-Xposed插件重载」
是因为AndroidStudio对Android11之后部署优化的问题,在Run处的位置EditConfigruations, 勾选 即可。
下面的旧内容是自己瞎整的。。。。。
更新了AndroidStudio4.2.1之后出现了一个问题:改了代码之后点击运行,发现运行起来的app是我没改之前的代码。
例如我开始写了一个打印,运行app之后是正常打印,然后我又加了一句打印,运行app,发现新加的打印并没有打印。
此文章记录一下解决问题的思路以及结果。
2.1 搜索
遇到问题找度娘,搜了一圈相关的,发现没有相关的问题或者文章,有相关的都是就版本的问题。
2.2 InstantRun
考虑是不是的问题,但是已经在AndroidStudio3.5废弃了,改成了,但是我点的运行是, 所以这个应该没关系。
但是我又发现了一个,但是关掉也是没效果的
2.3 Apk是否包含新代码
然后我看看反编译Runapp出来的apk,看看里面有没有包含我改动的代码,默认apk在目录:,发现改的代码已经在安装包里面了!!! 第一个包我加了一个,改动代码是添加了。 这里就可以判断跟打包没关系了,因为新改动的代码已经是被打包的了
2.4 手动安装
正常点击AS的运行,是as帮忙做好的了 打包apk-安装-运行 这几个步骤,上一步发现了打包是没问题的,那我手动安装试试呢?
于是我手动利用了adb命令进行安装(安装debug包需要加-t参数):
然后手动点击运行,发现居然正常了,新加的打印出来了!!!!
2.5 AS的Run
根据上面的一系列猜测,就是在as里面运行的时候,打包了,但是没有安装到手机上,然后继续运行了旧的app。
然后我把目光放到Run的过程,对比正常和不正常的情况打印的Run日志是否有异常。
下面的图是异常的,没有第二条Log打印:
下面的这图是正常的,打印了两条的:
对比发现,没啥区别。。。。。。
2.6 换个手机
由上面的总结,得知目前是安装的问题,我一直用的小米,于是我用另一台手机(魅族16Plus)来测试,最终测试结果: 这个魅族手机正常。。。。
到了目前,貌似是我手机的问题。
最终发现,是我写的是Xposed插件问题,然后我装的是面具magisk
+LSPosed,由于Xposed的hook的影响才出现了这个问题。。。。。
解决办法,我测试出来了两种:
- 版本号(VersionCode) +1
- 版本名(VersionName)有变化(推荐)
方式1:版本号+1
就是让app的版本号增加,就会让Xposed重新加载插件。那怎么做呢? 总不能运行前每次都去build.gradle手动+1然后AsyncGradle吧? 办法来了,利用脚本实现自动加+1。
添加版本号记录文件
在app这个module下创建文件 ,用来记录当前的版本号,内容为:
添加getVersionCode
在app这个module的里面添加方法,从上面的文件获取版本号,并且+1保存,然后返回。
设置版本号
最后在里面定义一个变量来保存上个方法+1得到的版本号,然后设置到里面的。 这样子每次点击运行的时候,打包apk的版本号都会进行+1。 这样子就可以实时实现插件重载。
方式2: 版本名修改
上面修改版本号的方式会导致版本号一直往上+,导致退版本的时候需要卸载app。 所以我们可以修改版本名的方式,版本名不影响更新。
还是按照上面的方式,保存生成一个数字,但是这个数字加在名字上,在 这里定义VersionName的后缀即可。
方式3:版本名修改的另一种方法
随机生成一个数字作为版本名的后缀
阿勒泰版权声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕,E-mail:xinmeigg88@163.com