Android Startup Sequence

Call stack

static block
  FrameworkActivity.loadNativeLibraries ("ccldemo") // Java ...

  System.loadLibrary (mainModuleID)
  System.loadLibrary ("cclgui")
  System.loadLibrary ("ccltext")
  System.loadLibrary ("cclsystem")

    JNI_OnLoad () // cclgui

// main module ...

FrameworkActivity.onCreate () // Java ...
  FrameworkView ()
    FrameworkView::constructNative () // cclgui ...

  FrameworkActivity::onCreateNative ()
    AndroidSystemInformation::setNativeActivity () // cclsystem ...
    AndroidSystemInformation::callAndroidMain ()
      CCLAndroidMain () // main module ...
        FrameworkInitializer::init ()
          FrameworkInitializer::callModuleMain ()
            CCLModuleMain ()

        ccl_main_gui_init ()
          ApplicationStartup::beforeInit ()
            UserInterface::startup () // cclgui ...
              AndroidUserInterface::startupPlatform ()

            ccl_app_init () // main module

        AndroidUserInterface::runEventLoop () // cclgui
          ApplicationStartup::onInit () // main module
          FrameworkView::createApplicationView () // cclgui
          Application::uiInitialized () // main module

          // main module ...

Call details

FrameworkActivity.loadNativeLibraries()
Scope:

Java

File:

Application, example: CCLDemo.java

Performed in application’s Activity class.

System.loadLibrary()
Scope:

Java

File:

ccl/platform/android/java/FrameworkActivity.java

Adds native main module and framework modules that require JNI access.

JNI_OnLoad()
Scope:

cclgui

File:

ccl/platform/android/jni_onload.cpp

Called in all CCL modules that export JNI_OnLoad.

FrameworkActivity.onCreate()
Scope:

Java

File:

ccl/platform/android/java/FrameworkActivity.java

Prepares Window, creates main FrameworkView.

FrameworkView()
Scope:

Java

File:

ccl/platform/android/java/FrameworkView.java

FrameworkView::constructNative()
Scope:

cclgui

File:

ccl/platform/android/native/frameworkview.cpp

Creates C++ counterpart of FrameworkView.

FrameworkActivity::onCreateNative()
Scope:

cclgui

File:

ccl/platform/android/native/frameworkactivity.cpp

Creates FrameworkActivity (C++ counterpart), creates FrameworkGraphicsFactory (C++).

AndroidSystemInformation::setNativeActivity()
Scope:

cclsystem

File:

ccl/platform/android/system/system.android.cpp

Initialize cclsystem module (android specific part).

AndroidSystemInformation::callAndroidMain()
Scope:

cclsystem

File:

ccl/platform/android/system/system.android.cpp

Finds CCLAndroidMain function (exported by main module) and calls it.

CCLAndroidMain()
Scope:

main module

File:

ccl/platform/android/system/system.android.cpp

FrameworkInitializer::init()
Scope:

main module

File:

ccl/main/cclinit.h

FrameworkInitializer::callModuleMain()
Scope:

main module

File:

ccl/main/cclinit.h

Called for all CCL modules (ccltext, cclsystem, …).

CCLModuleMain()
Scope:

main module

File:

ccl/main/cclmodmain.cpp

ccl_main_gui_init()
Scope:

main module

File:

ccl/main/cclmain.cpp

ApplicationStartup::beforeInit()
Scope:

main module

File:

ccl/main/cclmain.cpp

UserInterface::startup()
Scope:

cclgui

File:

ccl/gui/gui.cpp

AndroidUserInterface::startupPlatform()
Scope:

cclgui

File:

ccl/platform/android/gui/gui.android.cpp

ccl_app_init()
Scope:

main module

File:

ccl/main/cclmain.cpp

AndroidUserInterface::runEventLoop()
Scope:

cclgui

File:

ccl/platform/android/gui/gui.android.cpp

No loop, returns after initialization.

ApplicationStartup::onInit()
Scope:

main module

File:

ccl/main/cclmain.cpp

FrameworkView::createApplicationView()
Scope:

cclgui

File:

ccl/platform/android/native/frameworkview.cpp

Application::uiInitialized()
Scope:

main module

File:

ccl/app/application.cpp