public static final int SHELL_UID = 2000;
是如何使用的?
是如何给进程设置有效用户id为2000的?
给fork的进程设置uid是在
frameworks/base/core/jni/com_android_internal_os_Zygote.cpp 中。
所以需要看在ActivityManagerService 中是如何启动com.android.shell进程 的。
ActivityManagerService.finishReceiver ->
BroadcastQueue.processNextBroadcastLocked ->
ActivityManagerService.startProcessLocked (:3377) ->
ProcessList.startProcessLocked(:2460) ->
ProcessList.startProcessLocked(:2338) ->
ProcessList.startProcessLocked(:1739) ->
ProcessList.startProcessLocked(:1964) ->
ProcessList.handleProcessStart ->
ProcessList.startProcess() ->
Process.start() 。
最终发现是开机执行了一个开机广播。
com.android.shell.HeapDumpReceiver
那uid是怎么来的呢?