java - 将变量添加到framework.jar后,它仍然无法访问

标签 java android smali

我正在尝试通过添加静态 boolean 变量来修改frameworks.jar(仅用于测试) 为此,我从模拟器中提取了frameworks.jar,将其反编译并将此行添加到LocationManager:

.field public static TEST:Z = 0x0

为了测试这个变量,我创建了一个小应用程序,我尝试使用这行代码访问这个变量

sget-boolean v1, Landroid/location/LocationManager;->TEST:Z

但这给了我一个异常(exception)。 我通过拉取并反编译来检查修改后的framework.jar是否不会替换原始框架。我在从手机中提取的framework.jar 中找到了这个变量。 如果这个变量存在,为什么它仍然告诉我它不存在

异常

06-30 02:16:53.388 E/AndroidRuntime(10801): FATAL EXCEPTION: main
06-30 02:16:53.388 E/AndroidRuntime(10801): Process: com.greedycat.smalitest, PID: 10801
06-30 02:16:53.388 E/AndroidRuntime(10801): java.lang.IllegalStateException: Could not execute method for android:onClick
06-30 02:16:53.388 E/AndroidRuntime(10801):     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at android.view.View.performClick(View.java:6302)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at android.view.View$PerformClick.run(View.java:24782)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at android.os.Handler.handleCallback(Handler.java:790)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at android.os.Looper.loop(Looper.java:164)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at android.app.ActivityThread.main(ActivityThread.java:6518)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at java.lang.reflect.Method.invoke(Native Method)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
06-30 02:16:53.388 E/AndroidRuntime(10801): Caused by: java.lang.reflect.InvocationTargetException
06-30 02:16:53.388 E/AndroidRuntime(10801):     at java.lang.reflect.Method.invoke(Native Method)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
06-30 02:16:53.388 E/AndroidRuntime(10801):     ... 9 more
06-30 02:16:53.388 E/AndroidRuntime(10801): Caused by: java.lang.NoSuchFieldError: No static field TEST of type Z in class Landroid/location/LocationManager; or its superclasses (declaration of 'android.location.LocationManager' appears in /system/framework/framework.jar)
06-30 02:16:53.388 E/AndroidRuntime(10801):     at com.greedycat.smalitest.MainActivity.click(MainActivity.java:20)
06-30 02:16:53.388 E/AndroidRuntime(10801):     ... 11 more
06-30 02:16:53.392 W/ActivityManager( 1237):   Force finishing activity com.greedycat.smalitest/.MainActivity

最佳答案

变量名称是 TEST,异常提到 IS_MOCKING,因此您没有正确重新编译应用程序或类似的内容。

关于java - 将变量添加到framework.jar后,它仍然无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821515/

相关文章:

java - Android .java 文件正在获取的完整格式链列表是什么?

dalvik - DalvikVM如何处理switch并尝试smali代码

java - 如何将现有的关系数据库模型转换为适用于非 sql 数据库(如 Mongo DB 或 Amazon Dynamo DB)的模型

java - 有什么想法为什么录制音频会这么慢我的整个应用程序?

java - JColorChooser 程序出现 2 个错误

android - Zxing 问题 - ActivityNotFoundException

java - 通过序数和键查找进行访问的集合

java - 有没有办法将 smali 转换为 java 进行编辑,反之亦然

java - 计算 AdjacencyMatrix 中节点之间的距离

java - 对多个 JPanel 使用 CardLayout 并且不显示任何内容