После добавления переменной в framework.jar она все еще недоступна - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь изменить frameworks.jar, добавив статическую логическую переменную (только для тестов). Для этого я извлек из framework.jar из эмулятора декомпилировал его и добавил в LocationManager эту строку:

.field public static TEST:Z = 0x0

И чтобы проверить эту переменную, я создал небольшое приложение, в котором я пытаюсь получить доступ к этой переменной, используя эту строку кода

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

Но это дает мне исключение.Я проверил, не изменен ли 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

1 Ответ

0 голосов
/ 30 июня 2019

Имя переменной - TEST, в исключении упоминается IS_MOCKING, поэтому вы неправильно перекомпилировали приложение или что-то в этом роде.

...