背景:我们有一个代码,我们在其中尝试插入一些调试日志。每个方法需要两个额外的寄存器来启用这些日志。
到目前为止我们尝试了什么: 1)增加寄存器 - 不能用作寄存器> v15打破了代码。
2)将v0和v1寄存器值移动到某些高值寄存器(如v250或其他),然后使用v0-v1并将值从vTMP重新分配回v0-v1 - 没有错误但应用程序崩溃编译时验证错误
答案 0 :(得分:0)
听起来你很清楚为什么1)有问题。
回复:2) - 如果您收到验证错误,那么您正在进行错误的修改。要对此进行调试,您需要查看art和/或dalvik在首次加载dex文件时报告的实际验证错误(通常在应用程序安装时)。这些错误通常都很好,并提供足够的信息来查明问题。
您可以考虑尝试在不分配任何新寄存器的情况下执行您需要执行的操作。例如您可以使用新功能创建一个新方法,只需向该方法插入一个方法调用,并传入它需要的任何值/对象。