当前位置: 首页 > news >正文

【Android】ServiceNotFoundException: No service published for: search

ServiceNotFoundException: No service published for: search

    • 0x00 一个Crash
    • 0x01 分析
      • 直观感受
      • search服务是否加载?
      • 复现场景
      • 分析Log
    • 0x03 结论

0x00 一个Crash

Android11 下的一个 system_app_crash

Process: com.android.permissioncontroller
PID: 2070
UID: 10064
Flags: 0x20c83e05
Package: com.android.permissioncontroller v300000000 (30 system image)
Foreground: Yes
Process-Runtime: 25769047
Build: qti/msmnile_gvmq/msmnile_gvmq:11/RQ3A.211001.001/55:user/test-keysjava.lang.IllegalStateException: android.os.ServiceManager$ServiceNotFoundException: No service published for: searchat android.app.Activity.ensureSearchManager(Activity.java:6787)at android.app.Activity.startSearch(Activity.java:4976)at android.app.Activity.onSearchRequested(Activity.java:4923)at android.app.Activity.onSearchRequested(Activity.java:4910)at com.android.internal.policy.PhoneWindow.launchDefaultSearch(PhoneWindow.java:3153)at com.android.internal.policy.PhoneWindow.onKeyUp(PhoneWindow.java:2103)at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:425)at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6066)at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5934)at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5429)at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5604)at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5460)at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5661)at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5433)at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5460)at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5433)at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5637)at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5795)at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3199)at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2741)at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2732)at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3176)at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)at android.os.MessageQueue.nativePollOnce(Native Method)at android.os.MessageQueue.next(MessageQueue.java:335)at android.os.Looper.loop(Looper.java:183)at android.app.ActivityThread.main(ActivityThread.java:7663)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:600)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: android.os.ServiceManager$ServiceNotFoundException: No service published for: searchat android.os.ServiceManager.getServiceOrThrow(ServiceManager.java:153)at android.app.SearchManager.<init>(SearchManager.java:560)at android.app.Activity.ensureSearchManager(Activity.java:6785)... 35 more

0x01 分析

直观感受

单纯看了这个Crash文件,按理说不该出现这个crash,permissioncontroller原生应用,没人动过。

search服务是否加载?

跟踪堆栈信息,从PhoneWindow.launchDefaultSearch()Activity.ensureSearchManager() 再到 android.app.SearchManager() 的构造方法:

@UnsupportedAppUsage/*package*/ 
SearchManager(Context context, Handler handler) throws ServiceNotFoundException {mContext = context;mHandler = handler;mService = ISearchManager.Stub.asInterface(ServiceManager.getServiceOrThrow(Context.SEARCH_SERVICE));
}

没发现啥异常。然后看下service服务是啥时候加载的:

package com.android.server;public final class SystemServer {private static final String TAG = "SystemServer";...private static final String SEARCH_MANAGER_SERVICE_CLASS ="com.android.server.search.SearchManagerService$Lifecycle";.../*** The main entry point from zygote.*/public static void main(String[] args) {new SystemServer().run();}public SystemServer() {// Check for factory test mode.mFactoryTestMode = FactoryTest.getMode();// Record process start information.// Note SYSPROP_START_COUNT will increment by *2* on a FDE device when it fully boots;// one for the password screen, second for the actual boot.mStartCount = SystemProperties.getInt(SYSPROP_START_COUNT, 0) + 1;mRuntimeStartElapsedTime = SystemClock.elapsedRealtime();mRuntimeStartUptime = SystemClock.uptimeMillis();Process.setStartTimes(mRuntimeStartElapsedTime, mRuntimeStartUptime);// Remember if it's runtime restart(when sys.boot_completed is already set) or reboot// We don't use "mStartCount > 1" here because it'll be wrong on a FDE device.// TODO: mRuntimeRestart will *not* be set to true if the proccess crashes before// sys.boot_completed is set. Fix it.mRuntimeRestart = "1".equals(SystemProperties.get("sys.boot_completed"));}private void run() {...        // Start services.try {t.traceBegin("StartServices");startBootstrapServices(t);startCoreServices(t);startOtherServices(t);} catch (Throwable ex) {Slog.e("System", "******************************************");Slog.e("System", "************ Failure starting system services", ex);throw ex;} finally {t.traceEnd(); // StartServices}StrictMode.initVmDefaults(null);if (!mRuntimeRestart && !isFirstBootOrUpgrade()) {final long uptimeMillis = SystemClock.elapsedRealtime();FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__SYSTEM_SERVER_READY,uptimeMillis);final long maxUptimeMillis = 60 * 1000;if (uptimeMillis > maxUptimeMillis) {Slog.wtf(SYSTEM_SERVER_TIMING_TAG,"SystemServer init took too long. uptimeMillis=" + uptimeMillis);}}// Diagnostic to ensure that the system is in a base healthy state. Done here as a common// non-zygote process.if (!VMRuntime.hasBootImageSpaces()) {Slog.wtf(TAG, "Runtime is not running with a boot image!");}// Loop forever.Looper.loop();throw new RuntimeException("Main thread loop unexpectedly exited");}.../*** Starts a miscellaneous grab bag of stuff that has yet to be refactored and organized.*/private void startOtherServices(@NonNull TimingsTraceAndSlog t) {t.traceBegin("startOtherServices");...if (mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL) {...if (!isWatch) {t.traceBegin("StartSearchManagerService");try {mSystemServiceManager.startService(SEARCH_MANAGER_SERVICE_CLASS);} catch (Throwable e) {reportWtf("starting Search Service", e);}t.traceEnd();}...}...t.traceEnd(); // startOtherServices}
}

然后到SearchManagerService :

package com.android.server.search;
/*** The search manager service handles the search UI, and maintains a registry of* searchable activities.*/
public class SearchManagerService extends ISearchManager.Stub {private static final String TAG = "SearchManagerService";final Handler mHandler;public static class Lifecycle extends SystemService {private SearchManagerService mService;public Lifecycle(Context context) {super(context);}@Overridepublic void onStart() {mService = new SearchManagerService(getContext());publishBinderService(Context.SEARCH_SERVICE, mService);}@Overridepublic void onUnlockUser(final int userId) {mService.mHandler.post(new Runnable() {@Overridepublic void run() {mService.onUnlockUser(userId);}});}@Overridepublic void onCleanupUser(int userHandle) {mService.onCleanupUser(userHandle);}}...
}

SystemServer 中加载的,很早的。所以在问题出现的点不会还没有加载。

复现场景

整个系统中个人能想到的就是通过settings(已经被隐藏入口,Monkey应该可以打开这个入口)进入permissioncontroller。
adb shell am start com.android.car.settings
打开后进入权限设置的几个界面,尝试模拟发送search按键,没效果:

adb shell input keyevent 84
# or
adb shell input keyevent 84 motionevent DOWN && input keyevent 84 motionevent UP

最终没找到复现方法。

分析Log

到这里已经花掉了好长的时间。掉头回去看Logcat日志。

2024-07-16 06:02:54.970  5912  5912 I Monkey  : :Sending Key (ACTION_DOWN): 84    // KEYCODE_SEARCH
2024-07-16 06:02:54.972  5912  5912 I Monkey  : :Sending Key (ACTION_UP): 84    // KEYCODE_SEARCH
2024-07-16 06:02:54.973  1028  1174 D InputDispatcher: Waiting to send key to Window{be605a u0 com.android.permissioncontroller/com.android.permissioncontroller.permission.ui.ManagePermissionsActivity} because there are unprocessed events that may cause focus to change
2024-07-16 06:02:54.974  5912  5912 I Monkey  : Sleeping for 300 milliseconds
2024-07-16 06:02:54.976  1028  1028 D InputMethodManagerService: IME window vis: 0 active: 0 inv: 0 displayId: 0
2024-07-16 06:02:54.976  1028  1028 D InputMethodManagerServiceExt: IME window vis: 0 active: 0 inv: 0 displayId: 2
2024-07-16 06:02:54.976  1028  1061 D AutofillManagerService: Close system dialogs
2024-07-16 06:02:54.976   258   258 E SELinux : avc:  denied  { find } for pid=2070 uid=10064 name=search scontext=u:r:permissioncontroller_app:s0:c64,c256,c512,c768 tcontext=u:object_r:search_service:s0 tclass=service_manager permissive=0
2024-07-16 06:02:54.977  2070  2070 E InputEventSender: Exception dispatching finished signal.
2024-07-16 06:02:54.977  2070  2070 E MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: java.lang.IllegalStateException: android.os.ServiceManager$ServiceNotFoundException: No service published for: search
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.app.Activity.ensureSearchManager(Activity.java:6787)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.app.Activity.startSearch(Activity.java:4976)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.app.Activity.onSearchRequested(Activity.java:4923)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.app.Activity.onSearchRequested(Activity.java:4910)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at com.android.internal.policy.PhoneWindow.launchDefaultSearch(PhoneWindow.java:3153)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at com.android.internal.policy.PhoneWindow.onKeyUp(PhoneWindow.java:2103)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:425)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6066)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5934)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5429)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5604)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5460)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5661)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5433)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5460)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5433)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5637)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5795)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3199)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2741)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2732)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3176)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.os.MessageQueue.nativePollOnce(Native Method)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.os.MessageQueue.next(MessageQueue.java:335)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.os.Looper.loop(Looper.java:183)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.app.ActivityThread.main(ActivityThread.java:7663)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at java.lang.reflect.Method.invoke(Native Method)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:600)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: Caused by: android.os.ServiceManager$ServiceNotFoundException: No service published for: search
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.os.ServiceManager.getServiceOrThrow(ServiceManager.java:153)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.app.SearchManager.<init>(SearchManager.java:560)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	at android.app.Activity.ensureSearchManager(Activity.java:6785)
2024-07-16 06:02:54.978  2070  2070 E MessageQueue-JNI: 	... 35 more
2024-07-16 06:02:54.978  2070  2070 D AndroidRuntime: Shutting down VM
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: FATAL EXCEPTION: main
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: Process: com.android.permissioncontroller, PID: 2070
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: java.lang.IllegalStateException: android.os.ServiceManager$ServiceNotFoundException: No service published for: search
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.app.Activity.ensureSearchManager(Activity.java:6787)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.app.Activity.startSearch(Activity.java:4976)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.app.Activity.onSearchRequested(Activity.java:4923)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.app.Activity.onSearchRequested(Activity.java:4910)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at com.android.internal.policy.PhoneWindow.launchDefaultSearch(PhoneWindow.java:3153)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at com.android.internal.policy.PhoneWindow.onKeyUp(PhoneWindow.java:2103)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:425)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6066)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5934)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5429)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5604)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5460)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5661)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5433)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5460)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5433)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5637)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5795)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3199)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2741)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2732)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3176)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.os.MessageQueue.nativePollOnce(Native Method)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.os.MessageQueue.next(MessageQueue.java:335)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:183)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:7663)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:600)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: Caused by: android.os.ServiceManager$ServiceNotFoundException: No service published for: search
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.os.ServiceManager.getServiceOrThrow(ServiceManager.java:153)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.app.SearchManager.<init>(SearchManager.java:560)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	at android.app.Activity.ensureSearchManager(Activity.java:6785)
2024-07-16 06:02:54.979  2070  2070 E AndroidRuntime: 	... 35 more2024-07-16 06:02:54.980   347 12898 I AIS-LOG : ais_client_health_thread:794 HIGH X
2024-07-16 06:02:54.981  1028 12934 I DropBoxManagerService: add tag=system_app_crash isTagEnabled=true flags=0x2
2024-07-16 06:02:54.983  5912  5927 W Monkey  : // CRASH: com.android.permissioncontroller (pid 2070)
2024-07-16 06:02:54.983  5912  5927 W Monkey  : // Short Msg: android.os.ServiceManager$ServiceNotFoundException
2024-07-16 06:02:54.983  5912  5927 W Monkey  : // Long Msg: android.os.ServiceManager$ServiceNotFoundException: No service published for: search
2024-07-16 06:02:54.983  5912  5927 W Monkey  : // Build Label: qti/msmnile_gvmq/msmnile_gvmq:11/RQ3A.211001.001/55:user/test-keys
2024-07-16 06:02:54.983  5912  5927 W Monkey  : // Build Changelist: 55
2024-07-16 06:02:54.983  5912  5927 W Monkey  : // Build Time: 1720990192000
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // java.lang.IllegalStateException: android.os.ServiceManager$ServiceNotFoundException: No service published for: search
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.app.Activity.ensureSearchManager(Activity.java:6787)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.app.Activity.startSearch(Activity.java:4976)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.app.Activity.onSearchRequested(Activity.java:4923)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.app.Activity.onSearchRequested(Activity.java:4910)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at com.android.internal.policy.PhoneWindow.launchDefaultSearch(PhoneWindow.java:3153)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at com.android.internal.policy.PhoneWindow.onKeyUp(PhoneWindow.java:2103)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:425)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6066)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5934)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5429)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5604)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5460)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5661)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5433)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5460)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5433)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5486)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5452)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5637)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5795)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3199)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2741)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2732)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3176)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.os.MessageQueue.nativePollOnce(Native Method)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.os.MessageQueue.next(MessageQueue.java:335)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.os.Looper.loop(Looper.java:183)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.app.ActivityThread.main(ActivityThread.java:7663)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at java.lang.reflect.Method.invoke(Native Method)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:600)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // Caused by: android.os.ServiceManager$ServiceNotFoundException: No service published for: search
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.os.ServiceManager.getServiceOrThrow(ServiceManager.java:153)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.app.SearchManager.<init>(SearchManager.java:560)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	at android.app.Activity.ensureSearchManager(Activity.java:6785)
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 	... 35 more
2024-07-16 06:02:54.984  5912  5927 W Monkey  : // 
2024-07-16 06:02:54.984  1028  1693 W ActivityManager: Force-killing crashed app com.android.permissioncontroller at watcher's request
2024-07-16 06:02:54.985  1028  1693 W ActivityTaskManager:   Force finishing activity com.android.permissioncontroller/.permission.ui.ManagePermissionsActivity

这是一段连续的日志。从事发前300ms,已经说明了问题。惭愧。

2024-07-16 06:02:54.970  5912  5912 I Monkey  : :Sending Key (ACTION_DOWN): 84    // KEYCODE_SEARCH
2024-07-16 06:02:54.972  5912  5912 I Monkey  : :Sending Key (ACTION_UP): 84    // KEYCODE_SEARCH
# Monkey确实发送了search动作
2024-07-16 06:02:54.976   258   258 E SELinux : avc:  denied  { find } for pid=2070 uid=10064 name=search scontext=u:r:permissioncontroller_app:s0:c64,c256,c512,c768 tcontext=u:object_r:search_service:s0 tclass=service_manager permissive=0
# 缺少selinux权限,permissioncontroller_app不允许调用search服务。

0x03 结论

提供两种方法解决此问题:

  • Monkey中添加黑名单,不跑settings
  • 给 permissioncontroller_app增加访问search权限

第二种不合适,那就第一种把。

done。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++从入门到起飞之——string类的模拟实现 全方位剖析!
  • Webpack插件
  • 什么是报表?分析报表在零售行业中的应用,并推荐“免费高质量”的报表工具
  • 8.9 C++
  • 快速基于 ClickHouse + Grafana 搭建可观测性解决方案 - 分布式链路追踪篇(ClickHouse 官方博客)...
  • 8.8 day bug
  • Python pandas常见函数
  • 【数据结构初阶】队列
  • K8S Ingress 常用配置
  • vue项目打包问题
  • 题解:力扣1567 - 返回乘积为正数的最长子数组
  • 串行并行数据转换
  • WEB渗透Bypass篇-常规函数绕过
  • 网络安全与国家安全
  • 力扣Hot100-994腐烂的橘子
  • 【知识碎片】第三方登录弹窗效果
  • Java小白进阶笔记(3)-初级面向对象
  • Kibana配置logstash,报表一体化
  • Koa2 之文件上传下载
  • Mysql优化
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 编写高质量JavaScript代码之并发
  • 基于HAProxy的高性能缓存服务器nuster
  • 记录:CentOS7.2配置LNMP环境记录
  • 检测对象或数组
  • 两列自适应布局方案整理
  • 前端js -- this指向总结。
  • 前端技术周刊 2019-01-14:客户端存储
  • 如何用纯 CSS 创作一个货车 loader
  • 整理一些计算机基础知识!
  • ​数据结构之初始二叉树(3)
  • #define,static,const,三种常量的区别
  • $nextTick的使用场景介绍
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (补)B+树一些思想
  • (二) 初入MySQL 【数据库管理】
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (分布式缓存)Redis持久化
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (四)鸿鹄云架构一服务注册中心
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET C# 使用 iText 生成PDF
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net 生成二级域名
  • .net对接阿里云CSB服务
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .project文件
  • /bin/rm: 参数列表过长"的解决办法
  • @Data注解的作用