Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fastinput疑似空指针异常 #989

Closed
qingqingcaoyuanlin opened this issue Jun 4, 2024 · 5 comments
Closed

Fastinput疑似空指针异常 #989

qingqingcaoyuanlin opened this issue Jun 4, 2024 · 5 comments
Labels

Comments

@qingqingcaoyuanlin
Copy link

  • 手机型号
  • uiautomator2的版本号: 3.0.8
    =
  • 相关日志(adb logcat信息)
    --- beginning of crash
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: FATAL EXCEPTION: main
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: Process: com.github.uiautomator, PID: 16838
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=ADB_CLEAR_TEXT flg=0x400010 } in com.github.uiautomator.FastInputIME$InputMessageReceiver@6e3cae5
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_52497(LoadedApk.java:1323)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.$m$7(Unknown Source:4)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.run(Unknown Source:39)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:790)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6494)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at com.github.uiautomator.FastInputIME.clearText(FastInputIME.java:229)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at com.github.uiautomator.FastInputIME.access$300(FastInputIME.java:40)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at com.github.uiautomator.FastInputIME$InputMessageReceiver.onReceive(FastInputIME.java:141)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_52497(LoadedApk.java:1313)
    06-04 10:05:57.481 16838 16838 E AndroidRuntime: ... 9 more
    06-04 10:05:57.686 405 16850 I ActivityManager: Process com.github.uiautomator (pid 16838) has died: fore FGS
    06-04 10:05:57.688 405 16850 W ActivityManager: Scheduling restart of crashed service com.github.uiautomator/.Service in 1000ms
    06-04 10:05:57.689 405 16850 W ActivityManager: Scheduling restart of crashed service com.github.uiautomator/.FastInputIME in 1000ms
    06-04 10:05:57.695 405 16850 W ActivityManager: Crash of app com.github.uiautomator running instrumentation ComponentInfo{com.github.uiautomator.test/androidx.test.runner.AndroidJUnitRunner}
    06-04 10:05:57.706 405 22235 I WindowManager: WIN DEATH: Window{e67994e u0 Sys2038:com.github.uiautomator/com.github.uiautomator.ToastActivity}
    06-04 10:05:57.707 405 16850 I ActivityManager: Force stopping com.github.uiautomator appid=10039 user=0: finished inst
    06-04 10:05:57.708 405 16850 I ActivityManager: Force stopping service ServiceRecord{1d21845 u0 com.github.uiautomator/.FastInputIME}
    06-04 10:05:57.710 405 405 W InputMethodManagerService: Session failed to close due to remote exception
    06-04 10:05:57.710 405 405 W InputMethodManagerService: android.os.DeadObjectException
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at android.os.BinderProxy.transactNative(Native Method)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at android.os.BinderProxy.transact(Binder.java:766)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.internal.view.IInputMethodSession$Stub$Proxy.finishSession(IInputMethodSession.java:305)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.server.InputMethodManagerService.finishSessionLocked(InputMethodManagerService.java:2017)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.server.InputMethodManagerService.clearClientSessionLocked(InputMethodManagerService.java:2008)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.server.InputMethodManagerService.clearCurMethodLocked(InputMethodManagerService.java:2034)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.server.InputMethodManagerService.onServiceDisconnected(InputMethodManagerService.java:2061)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at android.app.LoadedApk$ServiceDispatcher.doDeath(LoadedApk.java:1668)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1683)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at android.os.Handler.handleCallback(Handler.java:790)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at android.os.Handler.dispatchMessage(Handler.java:99)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at android.os.Looper.loop(Looper.java:164)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.server.SystemServer.run(SystemServer.java:419)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.server.SystemServer.main(SystemServer.java:270)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at java.lang.reflect.Method.invoke(Native Method)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    06-04 10:05:57.710 405 405 W InputMethodManagerService: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:787)
    06-04 10:05:57.719 405 550 W WindowManager: removeWindowToken: Attempted to remove non-existing token: android.os.Binder@dc29c43
    06-04 10:05:57.720 405 13370 I WindowManager: WIN DEATH: Window{4d3f3f2 u0 InputMethod}
    06-04 10:05:57.740 405 428 W ActivityManager: setHasOverlayUi called on unknown pid: 16838
    06-04 10:05:57.746 405 428 W ActivityManager: setHasOverlayUi called on unknown pid: 16838
    06-04 10:05:59.861 405 550 I ActivityManager: Force stopping com.github.uiautomator appid=10039 user=0: start instr
    06-04 10:05:59.888 405 550 I ActivityManager: Start proc 24828:com.github.uiautomator/u0a39 for added application com.github.uiautomator
@codeskyblue
Copy link
Member

换3.1试试,输入法已完全重写

@qingqingcaoyuanlin
Copy link
Author

已经切换了3.1.0版本,跑用例遇到个异常,adbutils版本是2.7.2,以下日志是pytest打印出来的:
2024-06-05 12:00:02 api.py:40 [WARNING]: broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference, retrying in 1 seconds...
2024-06-05 12:00:03 api.py:40 [WARNING]: broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference, retrying in 1.5 seconds...

@qingqingcaoyuanlin
Copy link
Author

感觉好像是在空的输入框内调用了clear_text,下方是一些一些错误日志:
[2024-06-05 11:52:13,435] [ WARNING] api.py:40 - broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference, retrying in 1 seconds...
[2024-06-05 11:52:14,511] [ WARNING] api.py:40 - broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference, retrying in 1.5 seconds...

test_password.py:96 (Test_User_Psw.test_modify_password)
self = <device.Device2 object at 0x000001A2C2FFA190>

def clear_text(self):
    """ clear text
    Raises:
        EnvironmentError
    """
    try:
        self.set_input_ime(True)
      self._must_broadcast('ADB_KEYBOARD_CLEAR_TEXT')

C:\Python39\lib\site-packages\uiautomator2_input.py:131:


C:\Python39\lib\site-packages\decorator.py:232: in fun
return caller(func, *(extras + args), **kw)
C:\Python39\lib\site-packages\retry\api.py:73: in retry_decorator
return __retry_internal(partial(f, *args, **kwargs), exceptions, tries, delay, max_delay, backoff, jitter,
C:\Python39\lib\site-packages\retry\api.py:33: in __retry_internal
return f()


self = <device.Device2 object at 0x000001A2C2FFA190>
action = 'ADB_KEYBOARD_CLEAR_TEXT', extras = {}

@retry(AdbBroadcastError, tries=3, delay=1, jitter=0.5)
def _must_broadcast(self, action: str, extras: Dict[str, str] = {}):
    result = self._broadcast(action, extras)
    if result.code != BORADCAST_RESULT_OK:
      raise AdbBroadcastError(f"broadcast {action} failed: {result.data}")

E uiautomator2.exceptions.AdbBroadcastError: broadcast ADB_KEYBOARD_CLEAR_TEXT failed: error:Attempt to read from field 'java.lang.CharSequence android.view.inputmethod.ExtractedText.text' on a null object reference

C:\Python39\lib\site-packages\uiautomator2_input.py:72: AdbBroadcastError

@codeskyblue
Copy link
Member

奥,懂了,密码区域好像是禁止获取文本的

@codeskyblue
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants