Mobile devices are ubiquitous and allow users to interact with a wide variety of information sources. Such sources range from news outlets on social media to confidential enterprise resources. Typically, a mobile application is generated by a developer who targets a specific mobile device platform and creates an application, or “app”, that is compiled and provided to a mobile application marketplace for consumption by users.
Mobile application development was traditionally performed in the native language of the mobile device and/or platform for which it would ultimately be deployed. In such instance, the mobile application would generally be written in the native language of the mobile device platform including specific calls to hardware or system resources that were specific to the platform, and then ultimately compiled and provided to the mobile application marketplace. As can be appreciated, if developers of mobile applications wished to provide such applications on all available mobile application platforms, significant work would be required to essentially code each application in the native language of the targeted platform.
More recently, mobile application developers have been provided with the ability to code or otherwise generate mobile applications using standardized web technologies such as HTML, CSS, and JavaScript. When such “web” applications are developed, they can easily be targeted to different platforms by using native application wrappers or shims on each such specific platform that accepts standardized API calls from the web applications. One example of such a mobile development framework is known as Apache Cordova and is supported by the Apache Software Foundation (ASF).
The discussion above is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.
A mobile application development system includes a processor that is a functional component of the mobile application development system and that is configured to execute programmatic steps. A build component is configured to receive web application source code and generate a mobile web application for a targeted mobile application platform. A build director component is configured to receive the web application source code and customization information and direct the build component to generate a plurality of mobile web applications each targeting a different mobile application platform, using the same web application source code and the customization information.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. The claimed subject matter is not limited to implementations that solve any or all disadvantages noted in the background.
Workflows 122 and processes 124, in one example, operate on data entities 120 as well as other suitable records 128 within data store 112 to enable a user to perform his or her operations within system 102. In one example, user interface component 114, either by itself or under the control of other items within system 102, generates user interface displays on mobile devices 106, 108.
Applications 126 can be any suitable applications, such as applications that are configured to execute upon one or more of mobile devices 106, 108. Additionally, or alternatively, applications 126 may execute within execution framework 118 such that the result of such execution is provided via user interface component 114 to mobile devices 106, 108 via network connection 104.
System 102 may, in some embodiments, be of the type that is generally provided by a software vendor in an initial condition. Then, system 102 is customized, sometimes heavily so, by developers and/or other suitable personnel, for deployment in a particular implementation. While the initial condition of the software system may be generic to an entire product line (such as an ERP system), the implemented deployment will be specific to a customer's requirements. Accordingly, the process of customizing the system for deployment to an individual implementation can also include the specification of customer identification information, customizations, and branding information. In order to ensure that this identification and branding information is carried forth to the mobile applications that execute upon mobile devices 106, 108, it is also important that such mobile applications be generated or otherwise provided to have such end-user customization, identification, and branding information. While embodiments described herein will generally be described with respect to applicability to system 102, it is expressly contemplated that embodiments described herein are applicable to any multi-platform mobile application development for which at least some information, and/or appearance of the mobile application will vary for each mobile application platform developed while the behavior of the mobile application remains the same.
Web application source code 158 is generally provided in the form of a project wrapper that includes or identifies one or more resource files 160 and application configuration information 162. These resource files and application configuration information generally describe a mobile application in terms of standardized web application technology. For example, the appearance of the application will generally be defined in terms of HTML and CSS. Additionally, the behavior of the web application will generally be defined in terms of JavaScript. All of these files and specifications, as well as any supporting files or configuration information, are stored within project wrapper 158. Project wrapper 158 is provided to application builder 152 either via UI component 156 or via application programming interfaces 164. In any event, build component 166 of application builder 152 is configured to employ processor 154 and any other suitable computing resources to generate a mobile application that is targeted to a particular mobile application platform. Examples of mobile application platforms include, without limitation, Windows Phone, available from Microsoft Corporation, of Redmond, Wash.; Android, available from Google Inc. of Mountain View, Calif.; iOS, available from Apple Computer Company of Cupertino, Calif.; Fire OS, available from Amazon.com, Inc. of Seattle, Wash.; HP WebOS, available from Hewlett-Packard, of Palo Alto, Calif.; BlackBerry OS, available from BlackBerry of Waterloo, Ontario; or others that are later developed or become available.
With each mobile application built by application builder 152, builder 152 may sign or otherwise certify the application using one or more certificates 168. Finally, the signed mobile application may be published using publisher component 170 of application builder 152. The published application is then stored or otherwise linked to its proper application marketplace. This is shown as built application 174 being provided within app marketplace 172. Additionally, the same web application N may be targeted to a different mobile platform and stored or otherwise associated with that platform's suitable marketplace. This is indicated at web application N 176 being stored within application marketplace N 178. Once the mobile application is associated or otherwise stored with its appropriate marketplace, a user of a mobile device, such as mobile device 180 may simply direct his or her mobile device to the suitable application marketplace for that mobile device and search for the web application. Upon identifying the web application, the mobile device 180 may install and store the web application. As shown in
While the mobile application development environment described above with respect to
In order to facilitate such multiple operation, over wrapper 256 is provided to build director 254 that operates or is coupled to application builder 252. Build director 254 uses the information stored within over wrapper 256 in order to generate two or more build operations using application builder 252 with different information from customization information 257. In one embodiment, build director 254 performs a prepare operation in which identification information 258 and/or branding information 260 and/or other information 261 targeted to a particular mobile platform is propagated to the correct folders and locations within project wrapper 158. Then, build director 254 performs a compile operation that invokes application builder 252 on the project wrapper to create a mobile application with the correct identification and/or branding and/or other information. Subsequently, or in parallel, build director 254 may propagate different identification and/or branding information and/or other information to a second project wrapper 158 and again invoke application builder 252 on the second project wrapper to generate a second mobile application for a different mobile application platform with different identification and/or branding information and/or other information than the first application, but with substantially the same behavior as the first application. In this way, multiple web applications can be targeted for multiple mobile platforms where each web application on a respective mobile platform may have specific versions of the applications, and different identity and/or branding information, while still maintaining substantially the same behavior. Thus, unique mobile applications can be created and distributed through respective mobile application marketplaces each with their own name, description, icons, images and font resources from a single functional code base. The entity-specific application identity, branding resources, and other information is defined in fields 258, 260, and 261 respectively, and is used by build director 254 during the build process to update the relevant project files to reflect applications' identity and appearance. As with environment 150 (described with respect to
The description is intended to include both public cloud computing and private cloud computing. Cloud computing (both public and private) provides substantially seamless pooling of resources, as well as a reduced need to manage and configure underlying hardware infrastructure.
A public cloud is managed by a vendor and typically supports multiple consumers using the same infrastructure. Also, a public cloud, as opposed to a private cloud, can free up the end users from managing the hardware. A private cloud may be managed by the organization itself and the infrastructure is typically not shared with other organizations. The organization still maintains the hardware to some extent, such as installations and repairs, etc.
Cloud-based application builder 304 is located within cloud 302 and includes an application programming interface 306 that is configured to receive an over wrapper, such as over wrapper 256. As described above with respect to
Under other embodiments, applications or systems are received on a removable Secure Digital (SD) card that is connected to a SD card interface 15. SD card interface 15 and communication links 13 communicate with a processor 17 along a bus 19 that is also connected to memory 21 and input/output (I/O) components 23, as well as clock 25 and location system 27.
I/O components 23, in one embodiment, are provided to facilitate input and output operations. I/O components 23 for various embodiments of the device 16 can include input components such as buttons, touch sensors, multi-touch sensors, optical or video sensors, voice sensors, touch screens, proximity sensors, microphones, tilt sensors, and gravity switches and output components such as a display device, a speaker, and or a printer port. Other I/O components 23 can be used as well.
Clock 25 illustratively comprises a real time clock component that outputs a time and date. It can also, illustratively, provide timing functions for processor 17.
Location system 27 illustratively includes a component that outputs a current geographical location of device 16. This can include, for instance, a global positioning system (GPS) receiver, a LORAN system, a dead reckoning system, a cellular triangulation system, or other positioning system. It can also include, for example, mapping software or navigation software that generates desired maps, navigation routes and other geographic functions.
Memory 21 stores operating system 29, network settings 31, applications 33, application configuration settings 35, data store 37, communication drivers 39, and communication configuration settings 41. Memory 21 can include all types of tangible volatile and non-volatile computer-readable memory devices. It can also include computer storage media (described below). Memory 21 stores computer readable instructions that, when executed by processor 17, cause the processor to perform computer-implemented steps or functions according to the instructions. Device 16 can have a client business system 24 which can run various applications provided by execution framework 118 (shown in
Examples of the network settings 31 include things such as proxy information, Internet connection information, and mappings. Application configuration settings 35 include settings that tailor the application for a specific enterprise or user. Communication configuration settings 41 provide parameters for communicating with other computers and include items such as GPRS parameters, SMS parameters, connection user names and passwords.
Applications 33 can be applications that have previously been stored on the device 16 or applications that are installed during use, although these can be part of operating system 29, or hosted external to device 16, as well. Applications 33 can include applications that are built by a mobile application builder such as any of those described above. Applications 33 may be installed from an application marketplace that is suitable for device 16 based on its operating system 29. Moreover, applications 33 may be any suitable mobile applications. However, in one embodiment, applications 33 includes one or more applications that facilitate interaction with system 102 (described with respect to
Note that other forms of the devices 16 are possible.
Computer 810 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 810 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media is different from, and does not include, a modulated data signal or carrier wave. It includes hardware storage media including both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 810. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 830 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input/output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 820. By way of example, and not limitation,
The computer 810 may also include other removable/non-removable volatile/nonvolatile computer storage media. By way of example only,
Alternatively, or in addition, the functionality described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Program-specific Integrated Circuits (ASICs), Program-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.
The drives and their associated computer storage media discussed above and illustrated in
A user may enter commands and information into the computer 810 through input devices such as a keyboard 862, a microphone 863, and a pointing device 861, such as a mouse, trackball or touch pad. Other input devices (not shown) may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 820 through a user input interface 860 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A visual display 891 or other type of display device is also connected to the system bus 821 via an interface, such as a video interface 890. In addition to the monitor, computers may also include other peripheral output devices such as speakers 897 and printer 896, which may be connected through an output peripheral interface 895.
The computer 810 is operated in a networked environment using logical connections to one or more remote computers, such as a remote computer 880. The remote computer 880 may be a personal computer, a hand-held device, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 810. The logical connections depicted in
When used in a LAN networking environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networking environment, the computer 810 typically includes a modem 872 or other means for establishing communications over the WAN 873, such as the Internet. The modem 872, which may be internal or external, may be connected to the system bus 821 via the user input interface 860, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 810, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
It should also be noted that the different embodiments described herein can be combined in different ways. That is, parts of one or more embodiments can be combined with parts of one or more other embodiments. All of this is contemplated herein.
Example 1 is a mobile application development system with a processor that is a functional component of the mobile application development system and that is configured to execute programmatic steps. A build component is configured to receive web application source code and generate a mobile web application for a targeted mobile application platform. A build director component is configured to receive the web application source code and customization information and direct the build component to generate a plurality of mobile web applications each targeting a different mobile application platform, using the same web application source code and the customization information.
Example 2 is the mobile application development system of any or all previous examples wherein the web application source code includes HTML content.
Example 3 is the mobile application development system of any or all previous examples wherein the web application source code includes CSS content.
Example 4 is the mobile application development system of any or all previous examples wherein the web application source code includes JavaScript content.
Example 5 is the mobile application development system of any or all previous examples wherein the customization information includes identity information.
Example 6 is the mobile application development system of any or all previous examples wherein the customization information includes branding information.
Example 7 is the mobile application development system of any or all previous examples wherein each respective mobile web application has different image files, but the same behavior.
Example 8 is the mobile application development system of any or all previous examples wherein each respective mobile web application has different branding information, but the same behavior.
Example 9 is the mobile application development system of any or all previous examples and further comprising a certification component that is configured to sign each mobile web application.
Example 10 is the mobile application development system of any or all previous examples and further comprising a publishing component configured to publish each mobile web application to its respective mobile application marketplace.
Example 11 is the mobile application development system of any or all previous examples wherein the customization information includes identity information and branding information provided in an over wrapper that encapsulates the web application source code.
Example 12 is the mobile application development system of any or all previous examples wherein the build director is a component of the mobile application development system.
Example 13 is the mobile application development system of any or all previous examples wherein the mobile application development system is cloud-based.
Example 14 is the mobile application development system of any or all previous examples and further comprising at least one application programming interface configured to receive an over wrapper containing web application source code, identity information and branding information.
Example 15 is a method of automatically generating mobile applications for a plurality of different mobile application platforms. The method includes exposing an application programming interface of a mobile application building system. Customization information is received through the application programming interface. A build process is run multiple times using the customization information to generate a plurality of mobile applications, each incorporating the customization information during the build process and targeting a different mobile application platform.
Example 16 is the method of any or all previous examples wherein each application is built using the same web application source code.
Example 17 is the method of any or all previous examples wherein the web application source code includes HTML, CSS, and JavaScript.
Example 18 is the method of any or all previous examples wherein the customization information includes branding information and web application source code that is provided to the application programming interface in an over wrapper.
Example 19 is the method of any or all previous examples and further comprising signing each mobile application and publishing each mobile application to its respective mobile application platform marketplace.
Example 20 is a cloud-based mobile application development system. The system includes a build component configured to generate a mobile web application targeted to a selected mobile application platform based on web application source code. An application programming interface is configured to receive web application source code and customization information. A build director is coupled to the application programming interface and the build component. The build director is configured to engage the build component to generate a plurality of mobile web applications targeting different selected mobile application platforms using the same web application source code and different customization information for each mobile web application.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.