欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > Android 11开机流程记录

Android 11开机流程记录

2025/10/12 7:22:26 来源:https://blog.csdn.net/qq_15682941/article/details/148614453  浏览:    关键词:Android 11开机流程记录

简单记录下系统开机流程,方便后面有问题时可以帮助分析

system/core/init/main.cpp 
    int main(int argc, char** argv)
        return SecondStageMain(argc, argv);

system/core/init/init.cpp 
    int SecondStageMain(int argc, char** argv)
        static void LoadBootScripts(ActionManager& action_manager, ServiceList& service_list)
            parser.ParseConfig("/system/etc/init/hw/init.rc");

system/core/rootdir/init.rc
    import /system/etc/init/hw/init.${ro.zygote}.rc

system/core/rootdir/init.zygote64.rc
    service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server

frameworks/base/cmds/app_process/app_main.cpp
    int main(int argc, char* const argv[])
        args.add(String8("start-system-server"));
        runtime.start("com.android.internal.os.ZygoteInit", args, zygote);

frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
    public static void main(String argv[])
        Runnable r = forkSystemServer(abiList, zygoteSocketName, zygoteServer);
            String args[] = { "--setuid=1000", "--setgid=1000", "--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,1021,1023," + "1024,1032,1065,3001,3002,3003,3006,3007,3009,3010,3011", "--capabilities=" + capabilities + "," + capabilities, "--nice-name=system_server", "--runtime-args", "--target-sdk-version=" + VMRuntime.SDK_VERSION_CUR_DEVELOPMENT, "com.android.server.SystemServer", };
            parsedArgs = new ZygoteArguments(args);
                return handleSystemServerProcess(parsedArgs);
                    return ZygoteInit.zygoteInit(parsedArgs.mTargetSdkVersion, parsedArgs.mDisabledCompatChanges, parsedArgs.mRemainingArgs, cl);
                        return RuntimeInit.applicationInit(targetSdkVersion, disabledCompatChanges, argv, classLoader);

frameworks/base/core/java/com/android/internal/os/RuntimeInit.java
    protected static Runnable applicationInit(int targetSdkVersion, long[] disabledCompatChanges, String[] argv, ClassLoader classLoader)
        return findStaticMain(args.startClass, args.startArgs, classLoader)
            cl = Class.forName(className, true, classLoader);
             m = cl.getMethod("main", new Class[] { String[].class });
             return new MethodAndArgsCaller(m, argv);

frameworks/base/core/java/com/android/internal/os/RuntimeInit.java: static class MethodAndArgsCaller implements Runnable
    mMethod.invoke(null, new Object[] { mArgs });

frameworks/base/services/java/com/android/server/SystemServer.java
    public static void main(String[] args)
        new SystemServer().run()
            startBootstrapServices(t);
            startCoreServices(t);
            startOtherServices(t);
                mActivityManagerService = ActivityManagerService.Lifecycle.startService( mSystemServiceManager, atm);
                mActivityManagerService.systemReady

frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
    public void systemReady(final Runnable goingCallback, @NonNull TimingsTraceAndSlog t)
        mAtmInternal.startHomeOnAllDisplays(currentUserId, "systemReady");

frameworks/base/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
    public boolean startHomeOnAllDisplays(int userId, String reason)
        return mRootWindowContainer.startHomeOnAllDisplays(userId, reason);

frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java
    boolean startHomeOnAllDisplays(int userId, String reason)
        homeStarted |= startHomeOnDisplay(userId, reason, displayId);
            return startHomeOnDisplay(userId, reason, displayId, false /* allowInstrumenting */, false /* fromHomeKey */);
                result |= startHomeOnTaskDisplayArea(userId, reason, taskDisplayArea, allowInstrumenting, fromHomeKey);
                    mService.getActivityStartController().startHomeActivity(homeIntent, aInfo, myReason, taskDisplayArea);

frameworks/base/services/core/java/com/android/server/wm/ActivityStartController.java
    void startHomeActivity(Intent intent, ActivityInfo aInfo, String reason, TaskDisplayArea taskDisplayArea)
        mLastHomeActivityStartResult = obtainStarter(intent, "startHomeActivity: " + reason) .setOutActivity(tmpOutRecord) .setCallingUid(0) .setActivityInfo(aInfo) .setActivityOptions(options.toBundle()) .execute();
            ActivityStarter obtainStarter(Intent intent, String reason)
                return mFactory.obtain().setIntent(intent).setReason(reason);

frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java
    int execute()
        res = executeRequest(mRequest);
            mLastStartActivityResult = startActivityUnchecked(r, sourceRecord, voiceSession, request.voiceInteractor, startFlags, true /* doResume */, checkedOptions, inTask, restrictedBgActivity, intentGrants);
                result = startActivityInner(r, sourceRecord, voiceSession, voiceInteractor, startFlags, doResume, options, inTask, restrictedBgActivity, intentGrants);
                    mRootWindowContainer.resumeFocusedStacksTopActivities( mTargetStack, mStartActivity, mOptions);

frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.java 
    boolean resumeFocusedStacksTopActivities( ActivityStack targetStack, ActivityRecord target, ActivityOptions targetOptions)
        result = targetStack.resumeTopActivityUncheckedLocked(target, targetOptions);

frameworks/base/services/core/java/com/android/server/wm/ActivityStack.java
        boolean resumeTopActivityUncheckedLocked(ActivityRecord prev, ActivityOptions options)
            result = resumeTopActivityInnerLocked(prev, options);
                pausing |= startPausingLocked(userLeaving, false /* uiSleeping */, next);
                    mAtmService.getLifecycleManager().scheduleTransaction(prev.app.getThread(), prev.appToken, PauseActivityItem.obtain(prev.finishing, userLeaving, prev.configChangeFlags, pauseImmediately));

frameworks/base/core/java/android/app/ClientTransactionHandler.java
        void scheduleTransaction(ClientTransaction transaction)
             sendMessage(ActivityThread.H.EXECUTE_TRANSACTION, transaction);

frameworks/base/core/java/android/app/ActivityThread.java
    void sendMessage(int what, Object obj)
        sendMessage(what, obj, 0, 0, false);
             mH.sendMessage(msg);

    case EXECUTE_TRANSACTION:
        mTransactionExecutor.execute(transaction);

frameworks/base/core/java/android/app/servertransaction/TransactionExecutor.java
    public void execute(ClientTransaction transaction)
        executeCallbacks(transaction);
            cycleToPath(r, postExecutionState, shouldExcludeLastTransition, transaction);
                performLifecycleSequence(r, path, transaction);
                    mTransactionHandler.handleLaunchActivity(r, mPendingActions, null /* customIntent */);

frameworks/base/core/java/android/app/ActivityThread.java
        public Activity handleLaunchActivity(ActivityClientRecord r, PendingTransactionActions pendingActions, Intent customIntent)
            final Activity a = performLaunchActivity(r, customIntent);
                mInstrumentation.callActivityOnCreate(activity, r.state);

frameworks/base/core/java/android/app/Instrumentation.java
    public void callActivityOnCreate(Activity activity, Bundle icicle)
        activity.performCreate(icicle);

frameworks/base/core/java/android/app/Activity.java
    final void performCreate(Bundle icicle)
        onCreate(icicle);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词