解决AndroidStudio4.2.1修改代码运行没变化没生效的问题-Xposed插件重载
Posted SkyHandCsdn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决AndroidStudio4.2.1修改代码运行没变化没生效的问题-Xposed插件重载相关的知识,希望对你有一定的参考价值。
一、 简介
更新了androidStudio4.2.1之后出现了一个问题:改了代码之后点击运行,发现运行起来的app是我没改之前的代码。
例如我开始写了一个打印Log.e("@@","测试打印")
,运行app之后是正常打印,然后我又加了一句打印,运行app,发现新加的打印并没有打印。
此文章记录一下解决问题的思路以及结果。
二、尝试发现问题
2.1 搜索
遇到问题找度娘,搜了一圈AndroidStudio改代码运行没变化
相关的,发现没有相关的问题或者文章,有相关的都是就版本的InstantRun
问题。
2.2 InstantRun
考虑是不是Instant Run
的问题,但是Instant Run
已经在AndroidStudio3.5废弃了,改成了ApplyChange
,但是我点的运行是Run 'App'
, 所以这个应该没关系。
但是我又发现了一个hot-swap
,但是关掉也是没效果的
2.3 Apk是否包含新代码
然后我看看反编译Runapp出来的apk,看看里面有没有包含我改动的代码,默认apk在目录:app/outpus/apk/debug/app-deubg.apk
,发现改的代码已经在安装包里面了!!! 第一个包我加了一个测试打印
,改动代码是添加了测试打印xxxxxxx
。 这里就可以判断跟打包没关系了,因为新改动的代码已经是被打包的了
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的影响才出现了这个问题。。。。。
四、解决Xposed插件实时更新
解决办法就是让app的版本号增加,就会让Xposed重新加载插件。
那怎么做呢? 总不能运行前每次都去build.gradle手动+1然后AsyncGradle吧? 办法来了,利用脚本实现自动加+1。
4.1 添加版本号记录文件
在app这个module下创建文件 version.properties
,用来记录当前的版本号,内容为:
versionCode=0
4.2 添加getVersionCode
在app这个module的build.gradle
里面添加getVersionCode
方法,从上面的文件获取版本号,并且+1保存,然后返回。
def getVersionCode()
def propsFile = file('version.properties')
def properties = new Properties()
properties.load(new FileInputStream(propsFile))
def vCode = properties['versionCode'].toInteger()
properties['versionCode'] = (++vCode).toString()
properties.store(propsFile.newWriter(), null)
return vCode
4.3 设置版本号
最后在android
里面定义一个变量来保存上个方法+1得到的版本号,然后设置到defaultConfig
里面的verseionCode
。 这样子每次点击运行的时候,打包apk的版本号都会进行+1。 这样子就可以实时实现插件重载。
以上是关于解决AndroidStudio4.2.1修改代码运行没变化没生效的问题-Xposed插件重载的主要内容,如果未能解决你的问题,请参考以下文章
解决AndroidStudio修改代码运行没变化没生效的问题-Xposed插件重载
Android Studio 4.2.1 启动时出现 NullPointer 异常
Android Studio 4.2 开始在发布版本中重命名 APK 内的资源