Resources |
◎ COVESA Events |
Join/Sign Up |
◎ Join COVESA |
Application Framework
1. Overview
The definition of Application framework can be difficult to agree upon. For the moment we start with a Wikipedia definition:
“Application framework consists of a software framework used by software developers to implement the standard structure of an application”
Where software framework is defined like this:
“A software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code,thus providing application-specific software. […] Software frameworks may include support programs, compilers, code libraries, tool sets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or solution”
The GENIVI Reference Architecture works with two different approaches to developing applications, namely the Managed and the Native application type.
Most people associate Application Framework mostly with the solution for the Managed application category, which includes a well-defined and limited set of application APIs and usually a constrained (“sandboxed”) execution environment.
Refer latest "Reference Architecture" document at the below link for more information on Applications FW , Native and Managed Applications, Application Life cycle
Reference Architecture (access requires Genivi Member Login)
1.1 App FW Scope and Concept
In the following review comments can be added to the App FW scope and concept document.
App FW Scope and Concept - Review
1.2 Application Manager
The Application Manager component is a part of the Application Framework set of components, aimed at supporting Applications, "Apps", in a GENIVI setting.
An Application manager component manages the overall responsibilities of the application framework infrastructure. This may include launching applications, restarting applications upon failure or when updated, controlling the privileges associated with the applications, keeping track of application states (in focus / background, speech context and access to audio).
Below is the comparison study of API's belonging to Application Manager in Tizen and Apertis.
Sl No. | Tizen Web API | Description | Tizen Native | Description | Apertis (formerly eCORE) | Description | Qt Automotive Suite | Description | Comments |
|---|---|---|---|---|---|---|---|---|---|
1 | getCurrentApplication | Gets the Application object |
|
| CurrentActiveApp | Property update |
| Defined by the System UI, can support multiple active applications at once. |
|
2 | kill | Kills an application with |
|
| Apps are killed based on their states by app manager. | Apps are killed based on their activity state. There is no exposed API using which system UI or managed app can request another app to be killed. | ApplicationManager::stopApplication(string id, bool forceKill). | Only available to System UI and via System DBus |
|
3 | launch | Launches an application |
|
| LaunchNewApp () | Launch an application | ApplicationManager::startApplication | Only available to System UI and via System DBus. |
|
4 | launchAppControl | Launches an application |
|
| OpenURI() | This method is used to | For apps: [http://doc.qt.io/qt-5/qml-qtqml-qt.html#openUrlExternally-method | Applications uses standard Qt interfaces, i.e. they are independent of Application Manager. |
|
5 | findAppControl | Finds application information |
|
| AppLaunchDatabase | Returns a list of apps and the MIMEs that they can handle. | The ApplicationManager singleton presents a model with the metadata regarding all installed apps and information regarding if the application is running or not. | Only available to System UI and via System DBus. |
|
6 | getAppsContext | Gets a list of application |
|
|
| Not clear about the API |
| Not sure what a context is. |
|
7 | getAppContext | Gets the application context | app_manager_get | Gets the application |
| Not clear about the API |
| Not sure what a context is. |
|
8 | getAppsInfo | Gets the list of installed |
|
| Not yet implemented | Assuming that this API should provide a complete list of apps that are installed on the device. | The ApplicationManager singleton presents a model with the metadata regarding all installed apps and information regarding if the application is running or not. | Only available to System UI and via System DBus. |
|
9 | getAppInfo | Gets application information |
|
| GetApplicationInfo | Returns manifest info to | The ApplicationManager singleton presents a model with the metadata regarding all installed apps and information regarding if the application is running or not. | Only available to System UI and via System DBus. |
|
10 | getAppSharedURI | Gets URI of read-only shared |
|
|
| Not yet implemented |
|
|
|
11 | getAppMetaData | Gets application meta data |
|
|
| Not clear if this is | The ApplicationManager singleton presents a model with the metadata regarding all installed apps and information regarding if the application is running or not. | Only available to System UI and via System DBus. |
|
12 | addAppInfoEventListener | Adds a listener for receiving |
|
|
| The application entries use the freedesktop desktop entry format and method. | Available through the object returned from ApplicationManager::get. | Only available to System UI and via System DBus. |
|
13 | removeAppInfoEvent | Removes the listener to |
|
|
| As above | Yes, through Qt signals/slots. | Only available to System UI and via System DBus. |
|
14 |
|
|
|
| GetGlobalSearchApps | Global search is distributed | This would be implemented as a tag in the manifest, e.g. another capability. | Global search is not a part of the Application Manager but would have to be supported through some other service. |
|
15 |
|
|
|
| RegisterMyApp | All applications register | The ApplicationManager itself is not tied to a specific appstore implementation - as long as the package can be downloaded via HTTP, HTTPS or FTP; it can also be provided as a local file or via a UNIX socket connection. QtAS comes with a PoC appstore implementation (server side: django, client side: QML). | Not sure if this refers installation or during run-time. Installation is initiated through an Application Manager interface, so it works automatically. Apps are launched through Application Manager, so again, it works automatically. |
|
16 |
|
|
|
| SetUninstalledApplication | DEPRECATED API ! |
| Application Manager handles uninstall, no need to call. |
|
17 |
|
|
|
| InsertNewEntry | DEPRECATED! |
| Application Manager handles install, no need to call. |
|
18 |
|
|
|
| SetInstalledApplication | DEPRECATED API ! |
| Application Manager handles install, no need to call. |
|
20 |
|
|
|
|
|
|
|
|
|
21 |
|
|
|
| "signal: AppLaunchDatabase | This signal indicates |
| Application Manager owns the database. No need to call. System UI is notified through the QAbstractItemModel interface of the ApplicationManager singleton object. |
|
24 |
|
| app_manager_foreach | Retrieves all application |
|
|
| Not sure what a context is. |
|
25 |
|
| app_manager_foreach | Retrieves all installed |
|
| The ApplicationManager singleton presents a model with the metadata regarding all installed apps and information regarding if the application is running or not. |
|
|
26 |
|
| int app_manager_get | Gets the ID of the |
|
| The ApplicationManager singleton presents a model with the metadata regarding all installed apps and information regarding if the application is running or not. |
|
|
27 |
|
| app_manager_get_ | Gets the absolute path |
|
| ApplicationInstaller::getInstallationLocation | There's no real "shared" directory, but the path to the app's private data directory is available. Only available to System UI and via System DBus. |