public boolean onCreate()

in AppCenterLoaderApp/appcenter-loader/src/main/java/com/microsoft/appcenter/loader/AppCenterLoader.java [61:159]


    public boolean onCreate() {
        mApplication = getApplication();
        String appSecret = mApplication.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE).getString(APP_SECRET_SHARED_PREFERENCES_KEY, getStringResource(APP_SECRET_KEY));

        String transmissionTargetToken = getStringResource(TRANSMISSION_TARGET_TOKEN_KEY);
        int startupTypeInt = mApplication.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE).getInt(STARTUP_TYPE_SHARED_PREFERENCES_KEY, Integer.parseInt(getStringResource(STARTUP_TYPE_KEY)));
        StartupType startupType = StartupType.values()[startupTypeInt];

        /*
         * If app secret isn't found in resources, return immediately. It's possible that resources
         * weren't added properly.
         */
        if (appSecret == null) {
            AppCenterLog.error(AppCenterLog.LOG_TAG, "Failed to retrieve app secret from " +
                    "resources. App Center cannot be started.");
            return false;
        }
        List<Class<? extends AppCenterService>> classes = new ArrayList<>();
        if (isTrueValue(getStringResource(USE_ANALYTICS_KEY)) &&
            isModuleAvailable("com.microsoft.appcenter.analytics.Analytics", "Analytics")) {
            classes.add(Analytics.class);
        }
        // We start crash service in .Net code, to give app an opportunity to assign handlers after crash and restart in Awake method
        // if (isTrueValue(getStringResource(USE_CRASHES_KEY)) &&
        //     isModuleAvailable("com.microsoft.appcenter.crashes.Crashes", "Crashes")) {
        //     classes.add(Crashes.class);
        // }
        if (isTrueValue(getStringResource(USE_DISTRIBUTE_KEY)) &&
            isModuleAvailable("com.microsoft.appcenter.distribute.Distribute", "Distribute")) {
            if (isTrueValue(getStringResource(ENABLE_DISTRIBUTE_FOR_DEBUGGABLE_BUILD_KEY))) {
                Distribute.setEnabledForDebuggableBuild(true);
            }
            if (isTrueValue(getStringResource(USE_CUSTOM_API_URL_KEY))) {
                String customApiUrl = getStringResource(CUSTOM_API_URL_KEY);
                if (customApiUrl != null) {
                    Distribute.setApiUrl(customApiUrl);
                }
            }
            if (isTrueValue(getStringResource(USE_CUSTOM_INSTALL_URL_KEY))) {
                String customInstallUrl = getStringResource(CUSTOM_INSTALL_URL_KEY);
                if (customInstallUrl != null) {
                    Distribute.setInstallUrl(customInstallUrl);
                }
            }
            String updateTrackValue = getStringResource(UPDATE_TRACK_KEY);
            if (updateTrackValue != null) {
                Distribute.setUpdateTrack(Integer.parseInt(updateTrackValue));
            }
            if (isTrueValue(getStringResource(DISTRIBUTE_DISABLE_AUTOMATIC_CHECK_FOR_UPDATE_KEY))) {
                Distribute.disableAutomaticCheckForUpdate();
            }
        }
        int logLevel = Integer.parseInt(getStringResource(INITIAL_LOG_LEVEL_KEY));
        AppCenter.setLogLevel(logLevel);
        String customLogUrl = mApplication.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE).getString(LOG_URL_SHARED_PREFERENCES_KEY, null);
        if (customLogUrl != null) {
            AppCenter.setLogUrl(customLogUrl);
        } else if (isTrueValue(getStringResource(USE_CUSTOM_LOG_URL_KEY))) {
            customLogUrl = getStringResource(CUSTOM_LOG_URL_KEY);
            if (customLogUrl != null) {
                AppCenter.setLogUrl(customLogUrl);
            }
        }
        if (!isTrueValue(getStringResource(ALLOW_NETWORK_REQUESTS_KEY))) {
            AppCenter.setNetworkRequestsAllowed(false);
        }
        if (isTrueValue(getStringResource(ENABLE_MANUAL_SESSION_TRACKER_KEY))) {
            Analytics.enableManualSessionTracker();
        }
        if (startupType == SKIP_START) {
            return true;
        }
        SetMaxStorageSize();
        String appIdArg = "";
        switch (startupType) {
            case APP_SECRET:
                appIdArg = appSecret;
                break;
            case TARGET:
                appIdArg = String.format("target=%s", transmissionTargetToken);
                break;
            case BOTH:
                appIdArg = String.format("appsecret=%s;target=%s", appSecret, transmissionTargetToken);
                break;
            case NO_SECRET:
                if (classes.size() > 0) {
                    Class<? extends AppCenterService>[] classesArray = GetClassesArray(classes);
                    AppCenter.start(mApplication, classesArray);
                }
                return true;
        }
        if (classes.size() > 0) {
            Class<? extends AppCenterService>[] classesArray = GetClassesArray(classes);
            AppCenter.start(mApplication, appIdArg, classesArray);
        } else {
            AppCenter.configure(mApplication, appIdArg);
        }
        return true;
    }