US20150302073A1 - Method and system for cross-platform application cloning - Google Patents
Method and system for cross-platform application cloning Download PDFInfo
- Publication number
- US20150302073A1 US20150302073A1 US14/754,542 US201514754542A US2015302073A1 US 20150302073 A1 US20150302073 A1 US 20150302073A1 US 201514754542 A US201514754542 A US 201514754542A US 2015302073 A1 US2015302073 A1 US 2015302073A1
- Authority
- US
- United States
- Prior art keywords
- application
- electronic device
- cloning
- data
- target electronic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- G06F17/30581—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G06F17/30377—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/50—Service provisioning or reconfiguring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/60—Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
Definitions
- One or more embodiments relate generally to electronic devices and more specifically to systems and methods for providing and/or synchronizing applications between at least two electronic devices to enhance user security.
- Electronic devices are prevalent in most countries throughout the world. More and more of the simplest devices are supporting multiple functions, from making phone calls and playing games, to browsing the Internet and revising documents. Indeed, with the proliferation of public and private Wi-Fi networks, many mobile electronic devices are highly complex multifunctional devices with capabilities rivaling those of desktop or laptop computers. For example, in addition to voice communications, many mobile electronic devices are capable of text messaging, e-mail communications, internet access, and running full-featured application software.
- New devices are continuously being introduced, and it is common for an individual to own more than one electronic device that can perform similar functions.
- a person can have a smartphone for personal use and a smartphone for work.
- the two smartphones can be operating on the same platform, e.g., “Android,” or on different platforms, e.g., “Android” and “iOS.”
- the same person can own at least one tablet computer and a network enabled MP3 player that share versions of some of the applications operating in the smartphones.
- a game application can be installed on one or both of the smartphones and on the tablet computer. In this way, the person can enjoy the game wherever she is and on whatever device she may be using.
- a device owner obtains a new electronic device, e.g., as a replacement for, or in addition to having an existing device
- some of the applications running on the existing device are often loaded onto the new device.
- the process of loading an application on an electronic device usually involves logging into an application store service that supports the application, searching for the application, and then downloading and installing the application on the electronic device.
- the owner must often configure it to operate in a preferred manner. For example, if the application has an interface that can be partially customized by the user, the device owner may want to customize the interface of the application in the new device in the same way the application is customized in the existing device.
- FIG. 1 is a block diagram illustrating an exemplary system for providing an application to an electronic device according to an embodiment
- FIG. 2 a block diagram illustrating an exemplary electronic device according to an embodiment
- FIG. 3 is an operational flow diagram illustrating an exemplary method for cloning out an application according to an embodiment
- FIG. 4A illustrates an exemplary system for providing an application to an electronic device according to an embodiment
- FIG. 4B illustrates another exemplary system for providing an application to an electronic device according to another embodiment
- FIG. 5 a block diagram illustrating an exemplary application store service according to an embodiment
- FIG. 6 is an operational flow diagram illustrating another exemplary method for cloning out an application according to another embodiment.
- FIG. 7 is an operational flow diagram illustrating an exemplary method for cloning in an application according to an embodiment.
- the present invention can be implemented in numerous ways, including as a process, an apparatus, a system, a device, a method, or a computer readable medium such as a computer readable storage medium containing computer readable instructions or computer program code, or a computer network wherein computer readable instructions or computer program code are sent over optical or electronic communication links.
- Applications, software programs or computer readable instructions may be referred to as components or modules.
- Applications may take the form of software executing on a general purpose computer or be hardwired or hard coded in hardware.
- Applications may also be downloaded in whole or in part through the use of a software development kit, framework, or toolkit that enables the creation and implementation of the present invention.
- these implementations, or any other form that the invention may take may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention.
- an application in an existing electronic device can be cloned from the source electronic device to another electronic device, referred to as a “target.”
- the source device can be configured to automatically collect the selected application and configuration information, state information and/or application data associated with the selected application.
- the collected information is referred to as “cloning data.”
- the source device can be configured to transmit at least a portion of the cloning data to the target electronic device.
- the cloning data can be transmitted directly to the target electronic device, e.g., via a Bluetooth connection, or indirectly via an application provisioning service or an application store service.
- the store service when the cloning data is transmitted to an application store service or to an application provisioning service (“store service”), the store service can be configured to receive the cloning data and a request from the source device to clone the application to the target device.
- the cloning data can include the selected application and configuration information, state information and/or application data associated with the selected application.
- the cloning data can include information identifying a type of device associated with the target device.
- the store service can be configured to determine that it supports a version of the application that is compatible with the target device and to transmit the compatible version of the application and the cloning data to the target electronic device.
- the target electronic device can be configured to receive cloning data associated with the application.
- the target device can receive the cloning data directly from the source electronic device, e.g., via a Bluetooth connection, or indirectly via the application provisioning service or the application store service.
- the cloning data includes the application, and configuration information, state information, and/or application data.
- the target device can be configured to determine that the application is compatible with the target device and to load the application using at least a portion of the cloning data.
- the configuration information and/or state information can be stored in an application file and the application data can be stored in a data store of the target electronic device.
- the applications to be cloned to the target device are selected directly from the source device and therefore there is no need to log into the application store service and search for the applications.
- a compatible version of the selected application can be automatically provided to the target device along with the configuration and state information of the application at the source device.
- the application can be configured to operate in the same manner as in the source device.
- the owner/user can use the application in the target device without any interruptions.
- mobile electronic device refers to mobile phones, tablets, PDAs and smartphones.
- mobile electronic device also refers to a class of laptop computers which run an operating system that is also used on mobile phones, tablets, PDAs, or smartphones. Such laptop computers are often designed to operate with a continuous connection to a cellular network or to the interne via a wireless link.
- Mobile electronic devices include devices for which wireless communication services such as voice, messaging, data, or other wireless Internet capabilities are a primary function.
- a “mobile electronic device” may also be referred to as an “electronic device,” “mobile device,” “mobile client,” or “handset.”
- an electronic device mobile device
- mobile client mobile client
- handset a person having skill in the art will appreciate that while the present invention is disclosed herein as being used on mobile electronic devices, the present invention may also be used on other computing platforms, including desktop, laptop, notebook, netbook, or server computers.
- client computer refers to any computer, embedded device, mobile device, or other system that can be used to perform the functionality described as being performed by the client computer.
- client computers include devices which can be used to display a user interface by which the functionality provided by a server can be utilized by a user.
- Client computers may be able to display a web page, load an application, load a widget, or perform other display functionality that allows the client computer to report information from the server to the user and to receive input from the user in order to send requests to the server.
- the system can include mobile devices 101 , 101 a and a server 111 .
- An exemplary mobile device 101 includes: an operating system 113 , an input device 115 , a radio frequency transceiver(s) 116 , a visual display 125 , and a battery or power supply 119 .
- Each of these components is coupled to a central processing unit (CPU) 103 .
- the device operating system 113 runs on the CPU 103 and enables interaction between application programs and the mobile device hardware components.
- the mobile device 101 receives data through an RF transceiver(s) 116 which may be able to communicate via various networks, for example: Bluetooth, local area networks such as WiFi, and cellular networks such as GSM or CDMA.
- a local software component 175 is an application program that is downloaded to a mobile device and installed so that it integrates with the operating system 113 .
- Much of the source code for the local software component 175 can be re-used between various mobile device platforms by using a cross-platform software architecture.
- the majority of software functionality can be implemented in a cross-platform core module.
- the cross-platform core can be universal allowing it to interface with various mobile device operating systems by using a platform-specific module and a platform abstraction module that both interact with the mobile device operating system 113 , which is described in U.S. patent application Ser. No. 12/255,626, entitled “SYSTEM AND METHOD FOR A MOBILE CROSS-PLATFORM SOFTWARE SYSTEM.”
- the local software component 175 can be device, platform or operating system specific.
- the mobile device 101 accesses a communications network 121 which permits access to a server 111 .
- the server 111 may also be accessed by another mobile device 101 a via network 121 .
- the network 121 will normally be the Internet but can also be any other communications network.
- the mobile device 101 may access the server 111 by a different network than the network the other mobile device 101 a accesses the server 111 .
- the server 111 is provided with server software 117 .
- the server software 117 on the server 111 provides functionality to allow two-way communication between the server 111 and the mobile devices 101 , 101 a through the network 121 .
- the server software 117 allows data, such as location-related information, pictures, contacts, videos, SMS messages, call history, event logs, and settings to be transferred from the mobile device 101 to the other mobile device 101 a and vice versa.
- the server also includes a data store 179 that is used to store data, profile information, and other information.
- server 111 does not necessarily have to be accomplished on a single hardware device.
- the use of the term server is intended to refer to one or more computers operating in cooperation or collaboration to provide the functionality described herein.
- the computers may be co-located or in different locations.
- the computers may inter-operate in such a way that portions of functionality are provided by separate services that may or may not be operated by the same entity as other computers which provide other functionality.
- one set of servers may provide data storage functionality while another provides all other functionality.
- the data storage servers may be operated by a separate company than the servers that provide the other functionality.
- S 3 simple storage system
- Amazon, Inc. is such a data storage service which may be utilized by separate set of computers to enable the present invention.
- At least one component defined by the claims is implemented at least partially as an electronic hardware component, such as an instruction execution machine (e.g., a processor-based or processor-containing machine) and/or as specialized circuits or circuitry (e.g., discrete logic gates interconnected to perform a specialized function), such as those illustrated in FIG. 1 .
- Other components may be implemented in software, hardware, or a combination of software and hardware. Moreover, some or all of these other components may be combined, some may be omitted altogether, and additional components can be added while still achieving the functionality described herein.
- the subject matter described herein can be embodied in many different variations, and all such variations are contemplated to be within the scope of what is claimed.
- FIG. 2 is a more detailed block diagram of an exemplary electronic mobile device 200 having components, and/or their analogs, that are configured to provide and load an application to and on the electronic device according to an embodiment.
- the electronic device 200 can be configured to provide an execution environment configured to host at least one operating system 201 , a plurality of applications 202 , a file system 204 , and a data store 206 .
- each of the plurality of applications 202 can include executable code, which when executed by a processor, e.g., the CPU 103 , can provide a service or function of the electronic device 200 .
- each application e.g., application 202 a
- each application can be associated with configuration information 212 and/or state information 214 that define operating parameters of the application 202 a .
- a user of the electronic device 200 can determine at least some of the application parameters to reflect the user's preferences.
- the electronic device 200 can be used by more than one user, and although some of the applications 202 can be shared by multiple users, each user can define his or her personal configuration information 212 and/or state information 214 (collectively referred to as “application parameters”) to reflect his or her personal preferences.
- each application 202 a can be associated with one or more sets of application parameters.
- the configuration 212 and state 214 information can be stored in an application file 210 a associated with the application 202 a and optionally associated with the user, and the application file 210 a can be managed by the file system 204 of the electronic device 200 .
- Data generated during the execution of the application 202 a and metadata associated with the application 202 a can be referred to as application data 216 , which can be stored in the data store 206 .
- the metadata can include information identifying the application 202 a , such as the application's name, publisher, version, and other identifying information.
- the device 200 can also support operation of an Application Management Module 220 that can be responsible for “cloning out” and “cloning in” an application and for synchronizing the application parameters, i.e., the configuration 212 and state 214 information, and the application data 216 once the application is installed and operating.
- the Application Management Module 220 can operate in the electronic device 200 as a client application hosted by the electronic device 200 , as shown in FIG. 2 .
- the Application Management Module 220 can be provided by and integrated within the device's operating system 201 .
- the Application Management Module 220 can be configured to manage the application cloning and synchronization features described herein.
- the Application Management Module 220 can include a cloning agent 230 , and a syncing agent 240 .
- the cloning agent 230 can be configured to clone out an existing application 202 a and to clone in a new application 203 a ;
- the syncing agent 240 can be configured to sync out existing information relating to an application 202 a , and to sync in new information relating to another application 202 b .
- the electronic device 200 can be a “source” device or a “target” device.
- the cloning agent 230 can be configured to “clone out” an existing application, e.g., 202 a , to another device, i.e., the “target” electronic device 200 .
- FIG. 3 a flow diagram is presented illustrating a method 300 for cloning out an application from a source electronic device to a target electronic device according to an embodiment.
- the exemplary electronic device 200 illustrated in FIG. 2 includes an arrangement of components configured to implement the method 300 , which also can be carried out in environments other than that illustrated in FIG. 2 .
- the method 300 begins, in block 302 , when the cloning agent 230 in the source electronic device 200 selects at least one of a first application, e.g., 202 a , to be cloned to a target electronic device.
- a first application e.g., 202 a
- a user associated with the source electronic device 200 can be permitted to select the first application(s) 202 a to be cloned to the target device.
- the cloning agent 230 can be configured to display at least some of the applications 202 hosted by the device 200 to the user on the visual display, e.g., 125 .
- the applications 202 displayed to the user can include those that are specifically associated with the user, or if requested, those that are associated with other users or all users associated with the source device 200 a .
- the user can be an administrator of the source device 200 .
- the user can then provide an indication selecting the first application(s) 202 a from the displayed applications 202 , and the cloning agent 230 can receive that indication via the input device, e.g., 115 .
- the user can also identify to which of those target users the selected first application(s) 202 a should be cloned. For example, each user registered on the source device 200 and/or the target device can be identified by a username, and the user can identify the target users by their respective usernames.
- the user can select the first application(s) 202 a based on the user's opinion on the application's suitability for a particular utility or function, and/or on its suitability for a particular type of target device.
- the selected first application(s) 202 a can be a set of applications 202 that are particularly relevant for a phone, a tablet, a desktop, a laptop or a music player.
- the set of applications 202 can be particularly relevant for photography, office management, or diet and fitness.
- the application set 202 can be particularly relevant for a group of users, such as for example, science students or travelers to India.
- cloning data 232 associated the selection application(s) 202 a is collected in block 304 .
- the cloning data 232 includes any information/data needed to clone in the first application(s) 202 a at the target device.
- the cloning data 232 can include the first application(s) 202 a , and its configuration 212 and/or its state 214 information, and/or its application data 216 .
- the cloning data 232 collected can be associated with the user by default.
- the application parameters 212 , 214 of the first application 202 a can be particular to the user's preferences and not necessarily particular to those of another user associated with the source device 200 .
- the application data 216 can be related to the user's activities and not to the activities of other users.
- the cloning data 232 collected can include the first application 202 a and the application parameters 212 , 214 and/or the application data 216 associated with some or all of the users.
- the cloning agent 230 can be configured to collect the cloning data 232 associated with a selected first application 202 a by monitoring, via a monitoring agent 222 , the read/write activity of the application 202 a at execution time when the user and/or other users are using the first application 202 a .
- the monitoring agent 222 can be configured to determine to which application file(s) 210 in the file system 204 the application 202 a is reading/writing, and to which location(s) in the data store 206 the application 202 a is reading/writing.
- An exemplary system for monitoring a file system to determine to which file(s) an application is writing is described in co-pending U.S. patent application Ser. No.
- the cloning agent 230 can determine the application file 210 a associated with the application 202 a and optionally associated with the user when more than one user is associated with the device 200 , and can also determine where in the data store 206 the application data 216 for the application 202 a is stored.
- the cloning agent 230 can retrieve the configuration 212 and/or the state 214 information from the application file 210 a associated with the application 202 a , and/or retrieve the application data 216 associated with the application 202 a and optionally associated with the user from the data store 206 .
- the selected application can be a self-cloning application 202 b .
- the self-cloning application 202 b includes executable code for automatically collecting cloning data 232 associated with the self-cloning application 202 b and optionally associated with the user(s).
- the self-cloning application 202 b can be configured to automatically collect the application parameters 212 , 214 from the application file(s) 210 a associated with the application 202 b , and/or retrieve the application data 216 associated with the application 202 b from the data store 206 , and to provide the information and/or data to the cloning agent 230 .
- the cloning agent 230 can be configured to scan the first application 202 a for malicious programming code.
- the application management module 220 can include a malware detector component 224 that is configured to scan the first application's executable code to ensure that the first application 202 a is free from harmful viruses and other malicious programs. If malicious code is detected, the malware detector component 224 can notify the cloning agent 230 and the clone out process can be terminated.
- the cloning data 232 is collected and optionally scanned for malware, at least a portion of it is transmitted to the target electronic device in block 306 .
- the cloning data 232 can be transmitted directly from the source electronic device 200 a to the target electronic device 200 b using, for example, near field communication (“NFC”) standards, and/or via a network 401 .
- the network 401 can be a “wi-fi” or wireless local area network (“WLAN”), or a piconet.
- the cloning data 232 can be transmitted to the target device 200 b using Bluetooth wireless technology over the piconet 401 .
- the piconet 401 can have a range of up to 100 meters depending on the class of the radio used in implementation. In a typical mobile device 200 , a class two radio is used, which has a range of 10 meters.
- Bluetooth wireless technology is well known to those skilled in the art and is utilized in numerous consumer devices, including medical devices, tablet computers, electronic accessories, mobile phones and smartphones. Detailed information relating to Bluetooth technology and the core specification can be found at www.Bluetooth.com.
- the cloning data 232 can be transmitted over a network 403 from the source electronic device 200 a to the target electronic device 200 b via a cloud-based application provisioning service 420 .
- a cloud-based application provisioning service 420 can be configured to receive the cloning data 232 from the source device 200 a and configured to provide at least a portion of the cloning data to more than one target device 200 b based on, for example, the device type of the target devices 200 b .
- the application provisioning service 220 can provide the cloning data 232 to more than one target phone 200 b , i.e., phones for employees, and each target phone 200 b can use at least a portion of the cloning data 232 to clone in the application set 202 .
- the cloning data 232 can be transmitted to a social networking service 430 and/or an application store service 500 configured to publish at least a portion of the cloning data 232 to a community of users subscribed to the social networking service 430 and/or the application store service 500 .
- the user associated with the source device 200 a can provide comments about why the application set 202 is particularly useful for a function and/or device type, e.g., a phone, tablet or laptop, or about how the application(s) 202 are optimized when configured with a portion of the cloning data 232 .
- These comments can be included in the cloning data 232 transmitted to the social networking service 430 and/or the application store service 500 so that the user can share his or her opinions with the community of subscribed users.
- the application store service 500 can provide a packet 404 including at least a portion of the requested cloning data 232 associated with the application set 202 to the other electronic device 200 c.
- the cloning data 232 can be transmitted to a backup/restore service 450 configured to store the cloning data 232 as a backup copy in case the first application(s) 202 a , the configuration 212 and state 214 information, and the application data 216 need to be restored.
- a backup/restore service 450 configured to store the cloning data 232 as a backup copy in case the first application(s) 202 a , the configuration 212 and state 214 information, and the application data 216 need to be restored.
- the source device 200 a can retrieve the stored cloning data 232 from the backup/restore server 450 and reload the first application(s) 202 a using the stored application parameters, e.g., the configuration 212 and state 214 information, and application data 216 .
- the cloning data 232 associated with the first application(s) 202 a or with the application set 202 can be transmitted directly or indirectly to the target device 200 b .
- the target device 200 b can utilize at least a portion of the cloning data 232 to clone in the first application(s) 202 a .
- Compatibility can be determined in several ways. For example, an application 202 a can be compatible with the target device 200 b when the source 200 a and the target 200 b have identical hardware components and identical operating systems 201 of the same version.
- compatibility specifications for an application 202 a can be determined from an application store service 500 that provides the application 202 a or from a publisher of the application. Such requirements can specify, for example, the types of hardware devices capable of running the application 202 a , minimum storage requirements, and/or particular versions of one or more operating systems.
- the first application(s) 202 a when the first application(s) 202 a is not compatible with the target device 200 b , the first application(s) 202 a cannot be cloned in “as is.” In this case, a version of the first application(s) that is compatible with the target device 200 b must be provided to the target device 200 b.
- the Application Store Service 500 can be configured to provide application cloning support when the first application(s) 202 a is not compatible with the target device 200 b .
- FIG. 5 is a block diagram of an exemplary Application Store Service 500 configured to provide an application to an electronic device according to an embodiment.
- the Application Store Service 500 can operate in an execution environment provided by a server, such as the server 111 described earlier in FIG. 1 .
- the Application Store Service 500 is configured to store and to provide a plurality of applications 502 including different versions of an application 502 a .
- the Application Store Service 500 can have a first version of an application for use on a phone and another version of the application for use on a tablet.
- the Application Store Service 500 typically receives and processes requests from devices, e.g., device 200 c , to download applications 502 .
- a search engine 504 in the Service 500 can receive a search query seeking applications 502 and can be configured to identify applications 502 that satisfy the query.
- the Application Store Service 500 can receive, from the device 200 c , a request 402 to download an application 502 a from the search results, and can retrieve and serve the requested application 502 a to the electronic device 200 c.
- the Application Store Service 500 can be configured to support application cloning when the application(s) 202 a from the source device 200 a is incompatible with the target device 200 b .
- the Application Store Service 500 can support operation of an Application Management Module 520 , which can include a cloning agent 530 that is responsible for cloning an application 502 between the source 200 a and the target 200 b devices.
- FIG. 6 a flow diagram is presented illustrating a method 600 for cloning an application from a source electronic device 200 a to a target electronic device 200 b from a perspective of the Application Store Service 500 according to an embodiment.
- the method 600 begins, in block 602 , when the cloning agent 530 receives from a source electronic device 200 a a request 406 to clone at least one application, e.g., 202 a , to a target electronic device 200 b .
- the request 406 can include cloning data 232 associated with the at least one application 202 a .
- the cloning data 232 can include information identifying the target electronic device 233 , the at least one application 202 a , and at least one of configuration information 212 , state information 214 , and application data 216 associated with the at least one application 202 a.
- the cloning agent 530 in the Application Management Module 520 can be configured to receive the request 406 and the cloning data 232 and to parse the cloning data 232 to extract the application(s) 202 a , the information identifying the target device 233 , and the configuration 212 and/or state 214 information and/or the application data 216 associated with the application(s) 202 a .
- the information identifying the target device 233 can include the target's name, and optionally its hardware specifications.
- the device identifying (ID) information 233 can identify the device's processor, memory capacity, and operating system.
- the application(s) 202 a can be an application set 202 associated with a particular utility function and/or a particular device type.
- the comments can be published by the Application Store Service 500 to the community of users who are subscribed to receive such comments from the Service 500 .
- a publishing module 506 in the Application Store Service 500 can push the user's comments and information identifying the application set 202 to the community of users or to the social networking service 430 .
- the Application Store Service 500 can receive a request 402 from the other user's device 200 c to download at least a portion of the application set 202 and can transmit the application set 202 and at least a portion of the cloning data 232 to the other user's device 200 c .
- the application store service 500 can remove any personal identifying information (“PII”) from the cloning data 232 and provide the remaining data to the other user's device 200 c . Any required PII for application operation can be provided by the other user at the time the application set 202 is installed at the other user's device 200 c.
- PII personal identifying information
- the cloning agent 530 can be configured to determine, in block 604 , that the Application Store Service 500 provides a version of the application(s) 502 a that is compatible with the target electronic device 200 b .
- the cloning agent 530 can be configured to use the information identifying the target device 233 to generate a search query for a version of the application(s) 202 a that is compatible with the target device 200 b .
- the search query can be provided to the search engine 504 , which can be configured to retrieve any applications 502 that satisfy the query.
- the cloning data 232 can be updated by replacing the incompatible application(s) 202 a with the compatible version(s) of the application(s) 502 a in block 606 .
- An updated cloning data 232 a can then be transmitted to the target electronic device 200 b in block 608 .
- the Application Store Service 500 can include a transmit information module 506 configured to generate a response 405 that includes the updated cloning data 232 a , and to transmit the response 405 over the network 403 to the target device 200 b.
- the cloning agent 530 can be configured to determine that a compatible version of the application(s) 502 a is available but not provided by the Application Store Service 500 .
- another application store service 440 can be a standard application store, i.e., not configured to support the inventive cloning and syncing features described herein, that provides the compatible version of the application(s) 502 a .
- the cloning agent 530 can be configured to identify the other application store service 440 that provides the compatible version(s) of the application(s) 202 a .
- a directory of application store services and/or websites that allow application downloads can be provided to the search engine 504 , and the search engine 504 can query the application store services 440 and/or the websites for the compatible version.
- the application 202 a itself can provide information identifying the application store service 440 that provides the compatible version.
- the application's publisher can provide such information.
- the user associated with the source device 200 a or an administrator managing the clone operation can provide the information identifying the other application store service 440 .
- the cloning agent 530 can transmit a request to the other store service 440 to retrieve the compatible version(s) 502 a of the application(s) 202 a .
- the cloning data 232 can be updated with the compatible version(s) 520 a of the application(s) and the updated cloning data 232 a can be transmitted to the target electronic device 200 b .
- the Application Store Service 500 can log-in to a web interface provided by the other application store service 440 , register the target device 200 b , if necessary, and select and push the compatible version of the application(s) 502 a to the target device 200 b.
- the cloning agent 530 can be configured to determine that a compatible version of the application(s) 502 a is unavailable. In this case, the cloning agent 530 can be configured to identify at least one substitute application 502 b similar to the at least one application 202 a . According to an embodiment, for example, the cloning agent 530 can be configured to search for and to retrieve a plurality of potential substitute applications that have similar titles, similar descriptions, and similar function. The cloning agent 530 can be configured to identify the substitute application(s) 502 b from the potential applications by applying at least one selection rule 534 defining parameters for selecting a similar but different substitute application 502 b for an original application 202 a . In an embodiment, the selection rule(s) 534 can be defined by the user associated with the source device 200 a and/or the Application Store Service 500 .
- a selection rule 534 can be based on a degree of similarity between the textual descriptions of the substitute application's functionality and the original application's functionality. Alternatively or in addition, a selection rule 534 can be based on the degree of similarity between the names of the substitute and original applications. In an embodiment, a selection rule 534 can require that the substitute application 502 b be published by the same publisher of the original application 202 a . In another embodiment, a selection rule 534 can consider the popularity and/or reputation and/or reviews information associated with the substitute application 502 b , and/or whether the substitute application 502 b is free or requires a fee. In another embodiment, a selection rule 534 can be based on whether the substitute application 502 b and the original application 202 a are grouped into the same category.
- the selection rules 534 can be ranked and/or weighted by importance so that a most suitable substitute application 502 b can be identified.
- the cloning agent 530 can give preference to potential applications of the same name; then to other applications by the game developer; and then to other applications with similar text descriptions.
- the cloning data 232 can be updated with the substitute application(s) 502 a , and the updated cloning data 232 a can be transmitted to the target electronic device 200 b .
- a plurality of potential substitute applications 502 can be identified, e.g., using the selection rule(s) 534 , and presented to the source device's user and the user can be allowed to select the substitute application(s) 502 a.
- the cloning agent 530 can be configured to scan the compatible and/or substitute application(s) 502 a , 502 b for malicious programming code prior to transmitting the updated cloning data 232 a to the target device 200 b .
- the Application Management Module 520 can include a malware detector component 524 that is configured to scan an application's executable code to ensure that an application 502 a , 502 b is free from harmful viruses and other malicious programs. If malicious code is detected, the malware detector component 524 can notify the cloning agent 530 and the process can be terminated.
- the updated cloning data 232 a is transmitted to the target device 200 b where the target device 200 b can be configured to use at least a portion of the cloning data 232 a to clone in the compatible version(s) of the application(s) 502 a and/or substitute application(s) 502 b onto the target device 200 b.
- the electronic device 200 illustrated in FIG. 2 and described above as behaving as a source device 200 a can now be described as behaving as a target device 200 b .
- the cloning agent 230 can be configured to “clone in” a new application, e.g., 203 a , from another device, i.e., the source device 200 a .
- FIG. 7 a flow diagram is presented illustrating a method 700 for cloning in an application from the source electronic device 200 a to the target electronic device 200 b according to an embodiment.
- the exemplary electronic device 200 illustrated in FIG. 2 includes an arrangement of components configured to implement the method 700 , which also can be carried out in environments other than that illustrated in FIG. 2 .
- the method 700 begins, in block 702 , when the cloning agent 230 receives cloning data 232 associated with at least one application to be cloned-in to the electronic device 200 (referred to as a “clone-in application” 203 ).
- the cloning data 232 can include the clone-in application(s) 203 a , and at least one of configuration information 212 , state information 214 , and application data 216 associated with the at least one clone-in application 203 a .
- the clone-in application(s) 203 a can be received directly from the source device 200 a via a network 401 and/or indirectly from the cloud-based Application Provisioning Service 420 and/or the Application Store Service 500 .
- the cloning agent 230 can be configured to ensure that the target device 200 b is authorized and/or prepared to clone in the application(s) 203 a .
- the user of the source device 200 a can be one of several users associated with the source 200 a , and the cloning data 232 can be associated with the user and/or with many users.
- the cloning agent 230 can be configured to determine that the user(s) associated with the source device 200 a is also registered with the target device 200 b .
- each user can be identified by a username, and the cloning agent 230 can determine that each user's username is registered on the target device 200 b .
- the cloning agent 230 can notify the user associated with the source device 200 a and/or terminate the clone-in process.
- the cloning agent 230 can create new user(s) on the target device 200 b corresponding to the unregistered user(s).
- the cloning agent 230 can be configured to determine, in block 704 , that the at least one application 203 a is compatible with the target electronic device 200 b and to prepare to load or install the application(s) 203 a onto the device 200 b .
- the cloning agent 230 in preparation for loading, can invoke the malware detector 224 to scan the clone-in application(s) 203 a for malicious programming code to protect the electronic device 200 b and/or its user(s). If a virus or other malicious code is detected, the cloning agent 230 can issue an alert and terminate the clone-in process. Otherwise, the clone-in application(s) 203 a can be loaded, in block 706 , onto the device 200 b.
- the cloning agent 230 can determine that the application(s) 203 a is incompatible with the target electronic device 200 b .
- the cloning data 232 received from the source device 200 a can include a clone-in application 203 a that is incompatible with the target device 200 b .
- the cloning agent 230 can be configured to determine that a compatible version 203 b of the at least one application is available from, for example, an application store service 440 .
- the Application Management Module 220 can include a search module 226 that can be configured to query application store services 440 and websites for the compatible version 203 b of the application.
- the search module 226 can be similar to the Application Store Service's search engine 504 described above.
- the cloning agent 230 can then transmit a request to the application store service 440 for the compatible version of the application 203 b , via the search module 226 , and can download and install the compatible version of the application 203 b.
- the cloning agent 230 can be configured to identify a substitute application 203 c similar to the incompatible clone-in application 203 a .
- the cloning agent 230 can be configured to identify the substitute application(s) 203 c by applying at least one selection rule 234 defining parameters for selecting a similar but different substitute application 203 c for an original incompatible clone-in application 203 a .
- the selection rule(s) 234 can be defined by the user associated with the source device 200 a and/or the user associated with the target device 200 b if different from the source's user.
- the selection rule(s) 234 in the electronic device 200 can be similar to those in the Application Store Service 500 described above.
- a selection rule 234 can be based on a degree of similarity between the textual descriptions of the substitute application's functionality and the original application's functionality.
- a selection rule 234 can be based on the degree of similarity between the names of the substitute and original applications.
- a selection rule 234 can require that the substitute application 203 c be published by the same publisher of the original application 203 a .
- the selection rules 234 can be ranked and/or weighted by importance so that a most suitable substitute application 203 c can be identified.
- the cloning agent 230 can retrieve the application 203 c if it is stored locally or transmit a request to an application store service 440 for the substitute application 203 c and can download and install the substitute application 203 c.
- the cloning agent 230 can be configured to install the clone-in application(s) 203 a , the compatible version of the clone-in application(s) 203 b , and/or the substitute application(s) 203 c and, using the configuration information 212 , the state information 214 , and/or the application's application data 216 included in the cloning data 232 , can configure the application(s) 203 b , 203 c according to the preferences of the user(s).
- the installation process can be performed silently, i.e., without interaction with the user of the target device 200 b .
- the installation can involve minimal interaction with the user of the target device 200 b.
- a clone-in application can be a self-cloning application 203 d .
- the self-cloning application 230 d includes executable code for automatically configuring itself using at least a portion of the cloning data 232 associated with the self-cloning application 203 d .
- the self-cloning application 202 b can be configured to automatically configure itself for the user and/or for some or all of the users using the configuration 212 and/or the state 214 information and/or the application data 216 associated with the application 203 d and associated with the user, and/or some and/or all of the users.
- the cloning agent 230 can be configured to store, in block 708 , the configuration information 212 and/or the state information 214 in an application file 210 b and to store the application's application data 216 in the data store 206 of the electronic device 200 .
- the self-cloning application 203 d be configured to modify the application file 210 b and the application data 216 in the data store 206 .
- the application file 210 b associated with the clone-in application 203 a can be divided into subfiles (not shown) associated with each of the user(s) registered on the target 200 b device.
- the configuration 212 and/or the state 214 information can be stored in the subfile corresponding to each of the users.
- both devices host the application and, at least initially, share the same configuration information, state information and application data.
- the configuration information, state information and application data can change between the two devices. For example, when the user plays a game application on his phone and completes a difficult level, the execution history of the application on the phone reflects that the user is ready for the next level.
- the Application Management Module 220 is not only capable of “cloning out” and “cloning in” an application, it can also be responsible for synchronizing application parameters, i.e., the configuration 212 and state 214 information, and the application data 216 once the application is installed and operating.
- the Application Management Module 220 can include a syncing agent 240 configured to sync out existing information relating to an application 202 a and optionally associated with the user, and to sync in new information relating to another application 202 b.
- the electronic device 200 can be a source device 200 a and the syncing agent 240 can select an application 202 to be synchronized with a corresponding application hosted by a target device 200 b .
- the syncing agent 240 can be configured to collect syncing data 242 associated with the application 202 including the configuration information 212 , the state information 214 , execution history information, and the application data 216 .
- the user can determine at least some of the information collected by the syncing agent 240 .
- the syncing data 242 can be formatted in a platform independent format so that the data 242 can be interpreted by any type of device.
- the syncing agent 240 can transmit the syncing data 242 to the target electronic device 200 b , which can be configured to receive and sync-in the syncing data 242 .
- the electronic device 200 is the target device 200 b and the syncing agent 240 is configured to receive syncing data 242 associated with an application 202 hosted by the target electronic device 200 b .
- the syncing data 242 can be received directly from a source device 200 a and/or from the cloud-based Application Provisioning Server 420 .
- the syncing agent 240 can be configured to update the configuration information 212 , the state information 214 , execution history information, and/or the application data 216 associated with the application 202 with the syncing data 242 .
- the syncing agent 240 can use file system information to perform well known file replication techniques across the devices 200 a , 200 b , where the files are application files 210 which contain the content, execution history information, and/or state 214 or configuration information 212 , to accomplish the data synchronization.
- file system information can be used to perform well known file replication techniques across the devices 200 a , 200 b , where the files are application files 210 which contain the content, execution history information, and/or state 214 or configuration information 212 , to accomplish the data synchronization.
- well known database replication techniques can be used.
- the syncing data 242 when the syncing data 242 is transmitted to the target device 200 b , the syncing data 242 can also be transmitted to the backup/restore service 450 , which can be configured to store the syncing data 242 with the corresponding cloning data 232 associated with the application 202 .
- the syncing agent 240 of the source 200 a or the target 200 b device can be configured to retrieve the syncing data 242 from the backup/restore service 450 and to perform the sync in operation to implement a full or partial restore operation.
- the cloning agent 230 and the syncing agent 240 can be configured by the user to clone or sync all or a few applications 202 frequently or occasionally. For example, the user can say “clone everything but don't sync” or “clone everything and keep everything in sync” or “clone these apps but not those” or “sync these but not those” or any combination of these options.
- an administrator can use the cloning 230 and syncing 240 agents to create standard configurations of multiple different devices.
- a device store can use the cloning 230 and syncing 240 agents to provision a newly purchased additional or replacement device for a user.
- an application to be cloned 202 a can be the operating system 201 of the source device 200 a .
- the cloning agent 230 can be configured to replace the operating system 201 of the target device 200 b to implement an operating system upgrade to a new release, and/or to implement a rollback to an earlier version of the operating system when the newer version has detected problems.
- the cloning data 232 and the syncing data 242 can be stored in the backup/restore service 450 and retrieved by the source 200 a or target 200 b device to perform a full or partial restore operation.
- This can also be implemented to handle a malware infestation, removal, and cleanup operation in the source 200 a or target 200 b device. For example, a piece of malware on the source device 200 a may not be discovered and removed until after it has been on the device and operating for some time. During its lifetime, the malware may have modified other files or applications on the source device 200 a .
- the cloning agent 230 can be configured to retrieve and clone in/sync-in the cloning 232 /syncing 242 data from the restore service 450 to restore the application 202 to some previous time predating the infestation.
- the backup/restore service 450 can be configured to store the cloning and syncing data, versioned, on a server to be available should a restore clone operation be necessary.
- the service 450 can be configured to operate a server-side version of the user's source device 200 a , e.g., in a virtual machine or device emulator, so that the corresponding clone in/sync in operations are identical to those that would run on the target device 200 b.
- the user or an administrator can remotely initiate a clone out and/or sync out operation for a plurality of applications 202 on the lost device 200 a .
- the user or administrator can choose the priority for performing the cloning or syncing operations so as to maximize, according to the user's or administrator's preferences, the likelihood of accomplishing the operations before the lost device's battery exhausts, or a stolen device is turned off.
- the clone out and/or sync out operations may be immediately followed by wiping part or all of the application 202 , the configuration information 212 or the state information 214 and/or the application data 216 on the lost device 200 a.
- one or more applications being cloned may be applications which have been purchased by or on behalf of the user.
- the license for the applications may or may not allow such cloning.
- the clone in application 203 a instance is replacing the originally clone out application 202 a instance either physically (if this is the identical device from which the cloning occurred) or logically (the user will be having the application on just one device, the replacement).
- the license for the application should allow the cloning to occur, but a replacement of some specific hardware identifier(s) possibly used in application configuration may be necessary, e.g., the IMEI (International Mobile Station Equipment Identity) number used on mobile phones.
- IMEI International Mobile Station Equipment Identity
- the application license may allow for the user to install and run the application on a specified number of devices.
- the cloning operation is adding a new application instance to a device, it may be necessary to only allow the clone in operation if the current license count will not be exceeded.
- the license count can be verified by asking the user or an administrator, or by querying a license manager service (which may be on the local network for an enterprise or on the internet) if sufficient licenses exist to allow the clone in operation.
- a dialog in which the user can perform a transaction to purchase a license to allow for the clone in operation to proceed In an embodiment when multiple applications are being cloned in, the user may be presented in advance of any cloning operation with the equivalent of a shopping basket checkout dialog during which the user can choose to purchase the license or licenses necessary to allow the clone in operation to proceed. This latter scenario as enabled would allow the operation of a user purchasing an application via a clone out/clone in operation from a friend or co-worker.
- the dialog for obtaining the required license can be carried out in communication with one or more application stores, application publisher websites, or other authorized sources for purchasing the application.
- any of the above embodiments may be used alone or together with one another in any combination.
- the one or more implementations encompassed within this specification may also include embodiments that are only partially mentioned or alluded to or are not mentioned or alluded to at all.
- the embodiments do not necessarily address any of these deficiencies.
- different embodiments may address different deficiencies that may be discussed in the specification.
- Some embodiments may only partially address some deficiencies or just one deficiency that may be discussed in the specification, and some embodiments may not address any of these deficiencies.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A user of electronic devices is provided with a method for providing a compatible version of an application to an electronic device. According to an embodiment, a compatible version of an application in a source electronic device can be installed by a target electronic device. When an application is selected, the source device collects cloning data associated with the selected application. Once the cloning data is collected, the source device transmits the cloning data, at least a portion of which is received by the target electronic device. The target electronic device then utilizes the portion of the cloning data to install a compatible version of the application onto the target electronic device.
Description
- A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
- This patent application claims priority to U.S. non-provisional patent application Ser. No. 13/692,858, filed Dec. 3, 2012, entitled METHOD AND SYSTEM FOR CLONING APPLICATIONS FROM AN ELECTRONIC SOURCE DEVICE TO AN ELECTRONIC TARGET DEVICE, which will issue as U.S. Pat. No. 9,071,627 on Jun. 30, 2015, which is incorporated by reference along with all other references cited in this application.
- One or more embodiments relate generally to electronic devices and more specifically to systems and methods for providing and/or synchronizing applications between at least two electronic devices to enhance user security.
- The subject matter discussed in the background section should not be assumed to be prior art merely as a result of its mention in the background section. Similarly, a problem mentioned in the background section or associated with the subject matter of the background section should not be assumed to have been previously recognized in the prior art. The subject matter in the background section merely represents different approaches, which in and of themselves may also be inventions.
- Electronic devices are prevalent in most countries throughout the world. More and more of the simplest devices are supporting multiple functions, from making phone calls and playing games, to browsing the Internet and revising documents. Indeed, with the proliferation of public and private Wi-Fi networks, many mobile electronic devices are highly complex multifunctional devices with capabilities rivaling those of desktop or laptop computers. For example, in addition to voice communications, many mobile electronic devices are capable of text messaging, e-mail communications, internet access, and running full-featured application software.
- New devices are continuously being introduced, and it is common for an individual to own more than one electronic device that can perform similar functions. For example, a person can have a smartphone for personal use and a smartphone for work. The two smartphones can be operating on the same platform, e.g., “Android,” or on different platforms, e.g., “Android” and “iOS.” In addition, the same person can own at least one tablet computer and a network enabled MP3 player that share versions of some of the applications operating in the smartphones. For example, a game application can be installed on one or both of the smartphones and on the tablet computer. In this way, the person can enjoy the game wherever she is and on whatever device she may be using.
- When a device owner obtains a new electronic device, e.g., as a replacement for, or in addition to having an existing device, some of the applications running on the existing device are often loaded onto the new device. The process of loading an application on an electronic device usually involves logging into an application store service that supports the application, searching for the application, and then downloading and installing the application on the electronic device. Once the application is loaded, the owner must often configure it to operate in a preferred manner. For example, if the application has an interface that can be partially customized by the user, the device owner may want to customize the interface of the application in the new device in the same way the application is customized in the existing device.
- This process can be tedious and time consuming for a single application, let alone several applications. Moreover, even when the applications are installed and configured in the new device, none of the application data, e.g., high scores, avatar names, historical data, is available, and therefore, the device owner must recreate, e.g., replay lower levels of a game, or reenter the application data.
- In the following drawings like reference numbers are used to refer to like elements. Although the following figures depict various examples, the one or more implementations are not limited to the examples depicted in the figures.
-
FIG. 1 is a block diagram illustrating an exemplary system for providing an application to an electronic device according to an embodiment; -
FIG. 2 a block diagram illustrating an exemplary electronic device according to an embodiment; -
FIG. 3 is an operational flow diagram illustrating an exemplary method for cloning out an application according to an embodiment; -
FIG. 4A illustrates an exemplary system for providing an application to an electronic device according to an embodiment; -
FIG. 4B illustrates another exemplary system for providing an application to an electronic device according to another embodiment; -
FIG. 5 a block diagram illustrating an exemplary application store service according to an embodiment; -
FIG. 6 is an operational flow diagram illustrating another exemplary method for cloning out an application according to another embodiment; and -
FIG. 7 is an operational flow diagram illustrating an exemplary method for cloning in an application according to an embodiment. - It should be appreciated that the present invention can be implemented in numerous ways, including as a process, an apparatus, a system, a device, a method, or a computer readable medium such as a computer readable storage medium containing computer readable instructions or computer program code, or a computer network wherein computer readable instructions or computer program code are sent over optical or electronic communication links. Applications, software programs or computer readable instructions may be referred to as components or modules. Applications may take the form of software executing on a general purpose computer or be hardwired or hard coded in hardware. Applications may also be downloaded in whole or in part through the use of a software development kit, framework, or toolkit that enables the creation and implementation of the present invention. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. In general, the order of the steps of disclosed processes may be altered within the scope of the invention.
- Systems and methods are provided for providing an application to an electronic device in a secure environment. According to an embodiment, an application in an existing electronic device, referred to as a “source,” can be cloned from the source electronic device to another electronic device, referred to as a “target.” According to an embodiment, when the application is selected, the source device can be configured to automatically collect the selected application and configuration information, state information and/or application data associated with the selected application. The collected information is referred to as “cloning data.” Once the cloning data is collected, the source device can be configured to transmit at least a portion of the cloning data to the target electronic device. The cloning data can be transmitted directly to the target electronic device, e.g., via a Bluetooth connection, or indirectly via an application provisioning service or an application store service.
- According to an embodiment, when the cloning data is transmitted to an application store service or to an application provisioning service (“store service”), the store service can be configured to receive the cloning data and a request from the source device to clone the application to the target device. As mentioned above, the cloning data can include the selected application and configuration information, state information and/or application data associated with the selected application. In addition, the cloning data can include information identifying a type of device associated with the target device. The store service can be configured to determine that it supports a version of the application that is compatible with the target device and to transmit the compatible version of the application and the cloning data to the target electronic device.
- In an embodiment, the target electronic device can be configured to receive cloning data associated with the application. The target device can receive the cloning data directly from the source electronic device, e.g., via a Bluetooth connection, or indirectly via the application provisioning service or the application store service. As noted above, the cloning data includes the application, and configuration information, state information, and/or application data. When the cloning data is received, the target device can be configured to determine that the application is compatible with the target device and to load the application using at least a portion of the cloning data. In addition, the configuration information and/or state information can be stored in an application file and the application data can be stored in a data store of the target electronic device.
- According to an embodiment, the applications to be cloned to the target device are selected directly from the source device and therefore there is no need to log into the application store service and search for the applications. A compatible version of the selected application can be automatically provided to the target device along with the configuration and state information of the application at the source device. Thus, when the selected application is installed on the target device, the application can be configured to operate in the same manner as in the source device. Moreover, because the application data is also transmitted to and stored in the target device, the owner/user can use the application in the target device without any interruptions.
- As used herein, the term “mobile electronic device” refers to mobile phones, tablets, PDAs and smartphones. The term “mobile electronic device” also refers to a class of laptop computers which run an operating system that is also used on mobile phones, tablets, PDAs, or smartphones. Such laptop computers are often designed to operate with a continuous connection to a cellular network or to the interne via a wireless link. Mobile electronic devices include devices for which wireless communication services such as voice, messaging, data, or other wireless Internet capabilities are a primary function. As used herein, a “mobile electronic device” may also be referred to as an “electronic device,” “mobile device,” “mobile client,” or “handset.” However, a person having skill in the art will appreciate that while the present invention is disclosed herein as being used on mobile electronic devices, the present invention may also be used on other computing platforms, including desktop, laptop, notebook, netbook, or server computers.
- As used herein, the term “client computer” refers to any computer, embedded device, mobile device, or other system that can be used to perform the functionality described as being performed by the client computer. Specifically, client computers include devices which can be used to display a user interface by which the functionality provided by a server can be utilized by a user. Client computers may be able to display a web page, load an application, load a widget, or perform other display functionality that allows the client computer to report information from the server to the user and to receive input from the user in order to send requests to the server.
- Prior to describing the subject matter in detail, a system in which the subject matter may be implemented shall first be described. Those of ordinary skill in the art will appreciate that the elements illustrated in
FIG. 1 may vary depending on the system implementation. With reference toFIG. 1 , the system can includemobile devices server 111. An exemplarymobile device 101 includes: anoperating system 113, aninput device 115, a radio frequency transceiver(s) 116, avisual display 125, and a battery orpower supply 119. Each of these components is coupled to a central processing unit (CPU) 103. Thedevice operating system 113 runs on theCPU 103 and enables interaction between application programs and the mobile device hardware components. In an embodiment, themobile device 101 receives data through an RF transceiver(s) 116 which may be able to communicate via various networks, for example: Bluetooth, local area networks such as WiFi, and cellular networks such as GSM or CDMA. - In an embodiment, a
local software component 175 is an application program that is downloaded to a mobile device and installed so that it integrates with theoperating system 113. Much of the source code for thelocal software component 175 can be re-used between various mobile device platforms by using a cross-platform software architecture. In such a system, the majority of software functionality can be implemented in a cross-platform core module. The cross-platform core can be universal allowing it to interface with various mobile device operating systems by using a platform-specific module and a platform abstraction module that both interact with the mobiledevice operating system 113, which is described in U.S. patent application Ser. No. 12/255,626, entitled “SYSTEM AND METHOD FOR A MOBILE CROSS-PLATFORM SOFTWARE SYSTEM.” In another embodiment, thelocal software component 175 can be device, platform or operating system specific. - The
mobile device 101 accesses acommunications network 121 which permits access to aserver 111. Theserver 111 may also be accessed by anothermobile device 101 a vianetwork 121. Thenetwork 121 will normally be the Internet but can also be any other communications network. Alternatively, themobile device 101 may access theserver 111 by a different network than the network the othermobile device 101 a accesses theserver 111. In an embodiment, theserver 111 is provided withserver software 117. Theserver software 117 on theserver 111 provides functionality to allow two-way communication between theserver 111 and themobile devices network 121. Theserver software 117 allows data, such as location-related information, pictures, contacts, videos, SMS messages, call history, event logs, and settings to be transferred from themobile device 101 to the othermobile device 101 a and vice versa. In an embodiment, the server also includes a data store 179 that is used to store data, profile information, and other information. - Of course, it is understood by those of ordinary skill in the art that the functionality performed by
server 111 does not necessarily have to be accomplished on a single hardware device. In this context, the use of the term server is intended to refer to one or more computers operating in cooperation or collaboration to provide the functionality described herein. The computers may be co-located or in different locations. The computers may inter-operate in such a way that portions of functionality are provided by separate services that may or may not be operated by the same entity as other computers which provide other functionality. For example, one set of servers may provide data storage functionality while another provides all other functionality. The data storage servers may be operated by a separate company than the servers that provide the other functionality. S3 (simple storage system), from Amazon, Inc. is such a data storage service which may be utilized by separate set of computers to enable the present invention. - It should be understood that the arrangement of electronic
mobile device 101 illustrated inFIG. 1 is but one possible implementation and that other arrangements are possible. It should also be understood that the various system components (and means) defined by the claims, described below, and illustrated in the various block diagrams represent logical components that are configured to perform the functionality described herein. For example, one or more of these system components (and means) can be realized, in whole or in part, by at least some of the components illustrated in the arrangement ofmobile device 101. In addition, while at least one of these components are implemented at least partially as an electronic hardware component, and therefore constitutes a machine, the other components may be implemented in software, hardware, or a combination of software and hardware. More particularly, at least one component defined by the claims is implemented at least partially as an electronic hardware component, such as an instruction execution machine (e.g., a processor-based or processor-containing machine) and/or as specialized circuits or circuitry (e.g., discrete logic gates interconnected to perform a specialized function), such as those illustrated inFIG. 1 . Other components may be implemented in software, hardware, or a combination of software and hardware. Moreover, some or all of these other components may be combined, some may be omitted altogether, and additional components can be added while still achieving the functionality described herein. Thus, the subject matter described herein can be embodied in many different variations, and all such variations are contemplated to be within the scope of what is claimed. - In the description that follows, the subject matter will be described with reference to acts and symbolic representations of operations that are performed by one or more devices, unless indicated otherwise. As such, it will be understood that such acts and operations, which are at times referred to as being computer-executed, include the manipulation by the processing unit of data in a structured form. This manipulation transforms the data or maintains it at locations in the memory system of the device, which reconfigures or otherwise alters the operation of the device in a manner well understood by those skilled in the art. The data structures where data is maintained are physical locations of the memory that have particular properties defined by the format of the data. However, while the subject matter is being described in the foregoing context, it is not meant to be limiting as those of skill in the art will appreciate that various of the acts and operation described hereinafter may also be implemented in hardware.
-
FIG. 2 is a more detailed block diagram of an exemplary electronicmobile device 200 having components, and/or their analogs, that are configured to provide and load an application to and on the electronic device according to an embodiment. Theelectronic device 200 can be configured to provide an execution environment configured to host at least oneoperating system 201, a plurality ofapplications 202, afile system 204, and adata store 206. In an embodiment, each of the plurality ofapplications 202 can include executable code, which when executed by a processor, e.g., theCPU 103, can provide a service or function of theelectronic device 200. - According to an embodiment, each application, e.g.,
application 202 a, can be associated with configuration information 212 and/orstate information 214 that define operating parameters of theapplication 202 a. In most cases, a user of theelectronic device 200 can determine at least some of the application parameters to reflect the user's preferences. In an embodiment, theelectronic device 200 can be used by more than one user, and although some of theapplications 202 can be shared by multiple users, each user can define his or her personal configuration information 212 and/or state information 214 (collectively referred to as “application parameters”) to reflect his or her personal preferences. Thus, eachapplication 202 a can be associated with one or more sets of application parameters. In an embodiment, the configuration 212 andstate 214 information can be stored in anapplication file 210 a associated with theapplication 202 a and optionally associated with the user, and the application file 210 a can be managed by thefile system 204 of theelectronic device 200. Data generated during the execution of theapplication 202 a and metadata associated with theapplication 202 a can be referred to asapplication data 216, which can be stored in thedata store 206. In an embodiment, the metadata can include information identifying theapplication 202 a, such as the application's name, publisher, version, and other identifying information. - In an embodiment, the
device 200 can also support operation of anApplication Management Module 220 that can be responsible for “cloning out” and “cloning in” an application and for synchronizing the application parameters, i.e., the configuration 212 andstate 214 information, and theapplication data 216 once the application is installed and operating. According to an embodiment, theApplication Management Module 220 can operate in theelectronic device 200 as a client application hosted by theelectronic device 200, as shown inFIG. 2 . In another embodiment, theApplication Management Module 220 can be provided by and integrated within the device'soperating system 201. In either embodiment, theApplication Management Module 220 can be configured to manage the application cloning and synchronization features described herein. - According to an embodiment, the
Application Management Module 220 can include acloning agent 230, and asyncing agent 240. Thecloning agent 230 can be configured to clone out an existingapplication 202 a and to clone in anew application 203 a; thesyncing agent 240 can be configured to sync out existing information relating to anapplication 202 a, and to sync in new information relating to anotherapplication 202 b. According to an embodiment, theelectronic device 200 can be a “source” device or a “target” device. When the device is a “source”electronic device 200, thecloning agent 230 can be configured to “clone out” an existing application, e.g., 202 a, to another device, i.e., the “target”electronic device 200. - Referring now to
FIG. 3 , a flow diagram is presented illustrating amethod 300 for cloning out an application from a source electronic device to a target electronic device according to an embodiment. The exemplaryelectronic device 200 illustrated inFIG. 2 includes an arrangement of components configured to implement themethod 300, which also can be carried out in environments other than that illustrated inFIG. 2 . - In an embodiment, the
method 300 begins, inblock 302, when thecloning agent 230 in the sourceelectronic device 200 selects at least one of a first application, e.g., 202 a, to be cloned to a target electronic device. For example, in an embodiment, a user associated with the sourceelectronic device 200 can be permitted to select the first application(s) 202 a to be cloned to the target device. Upon receiving a request to clone out from the user, thecloning agent 230 can be configured to display at least some of theapplications 202 hosted by thedevice 200 to the user on the visual display, e.g., 125. For example, when the user is one of many users associated with thesource device 200, theapplications 202 displayed to the user can include those that are specifically associated with the user, or if requested, those that are associated with other users or all users associated with thesource device 200 a. In this case, the user can be an administrator of thesource device 200. The user can then provide an indication selecting the first application(s) 202 a from the displayedapplications 202, and thecloning agent 230 can receive that indication via the input device, e.g., 115. In an embodiment, when several users are associated with the target device as well, the user can also identify to which of those target users the selected first application(s) 202 a should be cloned. For example, each user registered on thesource device 200 and/or the target device can be identified by a username, and the user can identify the target users by their respective usernames. - According to an embodiment, the user can select the first application(s) 202 a based on the user's opinion on the application's suitability for a particular utility or function, and/or on its suitability for a particular type of target device. For instance, the selected first application(s) 202 a can be a set of
applications 202 that are particularly relevant for a phone, a tablet, a desktop, a laptop or a music player. Alternatively, or in addition, the set ofapplications 202 can be particularly relevant for photography, office management, or diet and fitness. In another embodiment, the application set 202 can be particularly relevant for a group of users, such as for example, science students or travelers to India. - Referring again to
FIG. 3 , when the first application(s) 202 a is selected, cloningdata 232 associated the selection application(s) 202 a is collected inblock 304. The cloningdata 232 includes any information/data needed to clone in the first application(s) 202 a at the target device. For example, in an embodiment, the cloningdata 232 can include the first application(s) 202 a, and its configuration 212 and/or itsstate 214 information, and/or itsapplication data 216. - According to an embodiment, when the user is one of many users associated with the
source device 200 a, the cloningdata 232 collected can be associated with the user by default. For example, theapplication parameters 212, 214 of thefirst application 202 a can be particular to the user's preferences and not necessarily particular to those of another user associated with thesource device 200. Similarly, theapplication data 216 can be related to the user's activities and not to the activities of other users. In another embodiment, when the first application(s) 202 a is to be cloned for more than one or all of the users associated with thesource 200 and/or target device, the cloningdata 232 collected can include thefirst application 202 a and theapplication parameters 212, 214 and/or theapplication data 216 associated with some or all of the users. - In an embodiment, the
cloning agent 230 can be configured to collect thecloning data 232 associated with a selectedfirst application 202 a by monitoring, via amonitoring agent 222, the read/write activity of theapplication 202 a at execution time when the user and/or other users are using thefirst application 202 a. For example, themonitoring agent 222 can be configured to determine to which application file(s) 210 in thefile system 204 theapplication 202 a is reading/writing, and to which location(s) in thedata store 206 theapplication 202 a is reading/writing. An exemplary system for monitoring a file system to determine to which file(s) an application is writing is described in co-pending U.S. patent application Ser. No. ______ [Attorney Docket No. LAB-115 (1129.83NPR)], entitled “ENHANCED FILE SYSTEM MONITORING.” By monitoring in this manner, thecloning agent 230 can determine the application file 210 a associated with theapplication 202 a and optionally associated with the user when more than one user is associated with thedevice 200, and can also determine where in thedata store 206 theapplication data 216 for theapplication 202 a is stored. Once that is determined, thecloning agent 230 can retrieve the configuration 212 and/or thestate 214 information from the application file 210 a associated with theapplication 202 a, and/or retrieve theapplication data 216 associated with theapplication 202 a and optionally associated with the user from thedata store 206. - Alternatively or in addition, the selected application can be a self-cloning
application 202 b. In this embodiment, the self-cloningapplication 202 b includes executable code for automatically collecting cloningdata 232 associated with the self-cloningapplication 202 b and optionally associated with the user(s). In an embodiment, when thecloning agent 230 submits a clone request to the self-cloningapplication 202 b, the self-cloningapplication 202 b can be configured to automatically collect theapplication parameters 212, 214 from the application file(s) 210 a associated with theapplication 202 b, and/or retrieve theapplication data 216 associated with theapplication 202 b from thedata store 206, and to provide the information and/or data to thecloning agent 230. - According to an embodiment, when the cloning
data 232 is collected, thecloning agent 230 can be configured to scan thefirst application 202 a for malicious programming code. In this case, for example, theapplication management module 220 can include amalware detector component 224 that is configured to scan the first application's executable code to ensure that thefirst application 202 a is free from harmful viruses and other malicious programs. If malicious code is detected, themalware detector component 224 can notify thecloning agent 230 and the clone out process can be terminated. - Referring again to
FIG. 3 , once the cloningdata 232 is collected and optionally scanned for malware, at least a portion of it is transmitted to the target electronic device inblock 306. As is shown inFIG. 4A , the cloningdata 232 can be transmitted directly from the sourceelectronic device 200 a to the targetelectronic device 200 b using, for example, near field communication (“NFC”) standards, and/or via anetwork 401. In an embodiment, thenetwork 401 can be a “wi-fi” or wireless local area network (“WLAN”), or a piconet. For example, when thenetwork 401 is a piconet, the cloningdata 232 can be transmitted to thetarget device 200 b using Bluetooth wireless technology over thepiconet 401. According to an embodiment, thepiconet 401 can have a range of up to 100 meters depending on the class of the radio used in implementation. In a typicalmobile device 200, a class two radio is used, which has a range of 10 meters. Bluetooth wireless technology is well known to those skilled in the art and is utilized in numerous consumer devices, including medical devices, tablet computers, electronic accessories, mobile phones and smartphones. Detailed information relating to Bluetooth technology and the core specification can be found at www.Bluetooth.com. - Alternatively or in addition, as shown in
FIG. 4B , the cloningdata 232 can be transmitted over anetwork 403 from the sourceelectronic device 200 a to the targetelectronic device 200 b via a cloud-basedapplication provisioning service 420. For instance, this may be advantageous when, in an embodiment, the first application(s) 202 a are cloned out to more than one targetelectronic device 200 b. In this case, theapplication provisioning service 420 can be configured to receive the cloningdata 232 from thesource device 200 a and configured to provide at least a portion of the cloning data to more than onetarget device 200 b based on, for example, the device type of thetarget devices 200 b. For example, when the first application(s) 202 a is anapplication set 202 particularly suitable for phones, theapplication provisioning service 220 can provide thecloning data 232 to more than onetarget phone 200 b, i.e., phones for employees, and eachtarget phone 200 b can use at least a portion of the cloningdata 232 to clone in the application set 202. - According to another embodiment, the cloning
data 232 can be transmitted to asocial networking service 430 and/or anapplication store service 500 configured to publish at least a portion of the cloningdata 232 to a community of users subscribed to thesocial networking service 430 and/or theapplication store service 500. In this case, the user associated with thesource device 200 a can provide comments about why the application set 202 is particularly useful for a function and/or device type, e.g., a phone, tablet or laptop, or about how the application(s) 202 are optimized when configured with a portion of the cloningdata 232. These comments can be included in thecloning data 232 transmitted to thesocial networking service 430 and/or theapplication store service 500 so that the user can share his or her opinions with the community of subscribed users. - When the user is an expert in the field or is otherwise influential, these comments can persuade other users to download the cloning
data 232 associated with the application set 202. In an embodiment, when theapplication store service 500 receives arequest 402 to download the cloningdata 232 from anotherelectronic device 200 c associated with another user, theapplication store service 500 can provide apacket 404 including at least a portion of the requestedcloning data 232 associated with the application set 202 to the otherelectronic device 200 c. - According to another embodiment, the cloning
data 232 can be transmitted to a backup/restoreservice 450 configured to store thecloning data 232 as a backup copy in case the first application(s) 202 a, the configuration 212 andstate 214 information, and theapplication data 216 need to be restored. For example, if thesource device 200 a crashes or the first application(s) 202 a on thesource device 200 a becomes infected and must be removed, thesource device 200 a can retrieve the storedcloning data 232 from the backup/restoreserver 450 and reload the first application(s) 202 a using the stored application parameters, e.g., the configuration 212 andstate 214 information, andapplication data 216. - According to an embodiment, the cloning
data 232 associated with the first application(s) 202 a or with the application set 202 can be transmitted directly or indirectly to thetarget device 200 b. In an embodiment, when the first application(s) 202 a is compatible with thetarget device 200 b, i.e., can be run on thetarget device 200 b “as is,” thetarget device 200 b can utilize at least a portion of the cloningdata 232 to clone in the first application(s) 202 a. Compatibility can be determined in several ways. For example, anapplication 202 a can be compatible with thetarget device 200 b when thesource 200 a and thetarget 200 b have identical hardware components andidentical operating systems 201 of the same version. On the other hand, when thesource 200 a and thetarget 200 b have identical hardware components and the same but different versions of an operating system, thetarget device 200 b may not be able to run theapplication 202 a running on thesource 200 a and therefore, theapplication 202 a may not be compatible with thetarget device 200 b. In an embodiment, compatibility specifications for anapplication 202 a can be determined from anapplication store service 500 that provides theapplication 202 a or from a publisher of the application. Such requirements can specify, for example, the types of hardware devices capable of running theapplication 202 a, minimum storage requirements, and/or particular versions of one or more operating systems. - According to an embodiment, when the first application(s) 202 a is not compatible with the
target device 200 b, the first application(s) 202 a cannot be cloned in “as is.” In this case, a version of the first application(s) that is compatible with thetarget device 200 b must be provided to thetarget device 200 b. - According to an embodiment, the
Application Store Service 500 can be configured to provide application cloning support when the first application(s) 202 a is not compatible with thetarget device 200 b.FIG. 5 is a block diagram of an exemplaryApplication Store Service 500 configured to provide an application to an electronic device according to an embodiment. In an embodiment, theApplication Store Service 500 can operate in an execution environment provided by a server, such as theserver 111 described earlier inFIG. 1 . TheApplication Store Service 500 is configured to store and to provide a plurality ofapplications 502 including different versions of anapplication 502 a. For instance theApplication Store Service 500 can have a first version of an application for use on a phone and another version of the application for use on a tablet. - According to an embodiment, the
Application Store Service 500 typically receives and processes requests from devices, e.g.,device 200 c, to downloadapplications 502. For example, asearch engine 504 in theService 500 can receive a searchquery seeking applications 502 and can be configured to identifyapplications 502 that satisfy the query. When the search results are provided to thedevice 200 c, theApplication Store Service 500 can receive, from thedevice 200 c, arequest 402 to download anapplication 502 a from the search results, and can retrieve and serve the requestedapplication 502 a to theelectronic device 200 c. - According to an embodiment, in addition to handling download requests, the
Application Store Service 500 can be configured to support application cloning when the application(s) 202 a from thesource device 200 a is incompatible with thetarget device 200 b. In an embodiment, theApplication Store Service 500 can support operation of anApplication Management Module 520, which can include acloning agent 530 that is responsible for cloning anapplication 502 between thesource 200 a and thetarget 200 b devices. - Referring now to
FIG. 6 , a flow diagram is presented illustrating amethod 600 for cloning an application from a sourceelectronic device 200 a to a targetelectronic device 200 b from a perspective of theApplication Store Service 500 according to an embodiment. Themethod 600 begins, inblock 602, when thecloning agent 530 receives from a sourceelectronic device 200 a arequest 406 to clone at least one application, e.g., 202 a, to a targetelectronic device 200 b. Therequest 406 can include cloningdata 232 associated with the at least oneapplication 202 a. In an embodiment, the cloningdata 232 can include information identifying the targetelectronic device 233, the at least oneapplication 202 a, and at least one of configuration information 212,state information 214, andapplication data 216 associated with the at least oneapplication 202 a. - According to an embodiment, the
cloning agent 530 in theApplication Management Module 520 can be configured to receive therequest 406 and thecloning data 232 and to parse thecloning data 232 to extract the application(s) 202 a, the information identifying thetarget device 233, and the configuration 212 and/orstate 214 information and/or theapplication data 216 associated with the application(s) 202 a. According to an embodiment, the information identifying thetarget device 233 can include the target's name, and optionally its hardware specifications. For example, the device identifying (ID)information 233 can identify the device's processor, memory capacity, and operating system. - According to an embodiment, the application(s) 202 a can be an
application set 202 associated with a particular utility function and/or a particular device type. In this case, when the cloningdata 232 includes the user's comments concerning the application set 202, the comments can be published by theApplication Store Service 500 to the community of users who are subscribed to receive such comments from theService 500. In an embodiment, apublishing module 506 in theApplication Store Service 500 can push the user's comments and information identifying the application set 202 to the community of users or to thesocial networking service 430. As noted above, when another user is interested in downloading the application set 202, e.g., based on the user's comments, theApplication Store Service 500 can receive arequest 402 from the other user'sdevice 200 c to download at least a portion of the application set 202 and can transmit the application set 202 and at least a portion of the cloningdata 232 to the other user'sdevice 200 c. For example, theapplication store service 500 can remove any personal identifying information (“PII”) from the cloningdata 232 and provide the remaining data to the other user'sdevice 200 c. Any required PII for application operation can be provided by the other user at the time the application set 202 is installed at the other user'sdevice 200 c. - Referring again to
FIG. 6 , when the request to clone 406 the application(s) 202 a is received, thecloning agent 530 can be configured to determine, inblock 604, that theApplication Store Service 500 provides a version of the application(s) 502 a that is compatible with the targetelectronic device 200 b. According to an embodiment, for example, thecloning agent 530 can be configured to use the information identifying thetarget device 233 to generate a search query for a version of the application(s) 202 a that is compatible with thetarget device 200 b. In an embodiment, the search query can be provided to thesearch engine 504, which can be configured to retrieve anyapplications 502 that satisfy the query. - In an embodiment, when the
search engine 504 returns the compatible version(s) 502 a of the application(s) 202 a to thecloning agent 530, the cloningdata 232 can be updated by replacing the incompatible application(s) 202 a with the compatible version(s) of the application(s) 502 a inblock 606. An updatedcloning data 232 a can then be transmitted to the targetelectronic device 200 b inblock 608. In an embodiment, theApplication Store Service 500 can include a transmitinformation module 506 configured to generate aresponse 405 that includes the updatedcloning data 232 a, and to transmit theresponse 405 over thenetwork 403 to thetarget device 200 b. - Alternatively, or in addition, the
cloning agent 530 can be configured to determine that a compatible version of the application(s) 502 a is available but not provided by theApplication Store Service 500. In this case, anotherapplication store service 440 can be a standard application store, i.e., not configured to support the inventive cloning and syncing features described herein, that provides the compatible version of the application(s) 502 a. In an embodiment, thecloning agent 530 can be configured to identify the otherapplication store service 440 that provides the compatible version(s) of the application(s) 202 a. For example, a directory of application store services and/or websites that allow application downloads can be provided to thesearch engine 504, and thesearch engine 504 can query theapplication store services 440 and/or the websites for the compatible version. In another embodiment, theapplication 202 a itself can provide information identifying theapplication store service 440 that provides the compatible version. Alternatively, or in addition, the application's publisher can provide such information. In another embodiment, the user associated with thesource device 200 a or an administrator managing the clone operation can provide the information identifying the otherapplication store service 440. - Once the other
application store service 440 is identified, thecloning agent 530 can transmit a request to theother store service 440 to retrieve the compatible version(s) 502 a of the application(s) 202 a. When received, the cloningdata 232 can be updated with the compatible version(s) 520 a of the application(s) and the updatedcloning data 232 a can be transmitted to the targetelectronic device 200 b. Alternatively, theApplication Store Service 500 can log-in to a web interface provided by the otherapplication store service 440, register thetarget device 200 b, if necessary, and select and push the compatible version of the application(s) 502 a to thetarget device 200 b. - In another embodiment, the
cloning agent 530 can be configured to determine that a compatible version of the application(s) 502 a is unavailable. In this case, thecloning agent 530 can be configured to identify at least onesubstitute application 502 b similar to the at least oneapplication 202 a. According to an embodiment, for example, thecloning agent 530 can be configured to search for and to retrieve a plurality of potential substitute applications that have similar titles, similar descriptions, and similar function. Thecloning agent 530 can be configured to identify the substitute application(s) 502 b from the potential applications by applying at least oneselection rule 534 defining parameters for selecting a similar butdifferent substitute application 502 b for anoriginal application 202 a. In an embodiment, the selection rule(s) 534 can be defined by the user associated with thesource device 200 a and/or theApplication Store Service 500. - For example, in an embodiment, a
selection rule 534 can be based on a degree of similarity between the textual descriptions of the substitute application's functionality and the original application's functionality. Alternatively or in addition, aselection rule 534 can be based on the degree of similarity between the names of the substitute and original applications. In an embodiment, aselection rule 534 can require that thesubstitute application 502 b be published by the same publisher of theoriginal application 202 a. In another embodiment, aselection rule 534 can consider the popularity and/or reputation and/or reviews information associated with thesubstitute application 502 b, and/or whether thesubstitute application 502 b is free or requires a fee. In another embodiment, aselection rule 534 can be based on whether thesubstitute application 502 b and theoriginal application 202 a are grouped into the same category. - According to an embodiment, the
selection rules 534 can be ranked and/or weighted by importance so that a mostsuitable substitute application 502 b can be identified. For example, when theoriginal application 202 a is a game created by a game developer, thecloning agent 530 can give preference to potential applications of the same name; then to other applications by the game developer; and then to other applications with similar text descriptions. In an embodiment, once the substitute application(s) 502 b have been identified and retrieved, the cloningdata 232 can be updated with the substitute application(s) 502 a, and the updatedcloning data 232 a can be transmitted to the targetelectronic device 200 b. Alternatively or additionally, a plurality ofpotential substitute applications 502 can be identified, e.g., using the selection rule(s) 534, and presented to the source device's user and the user can be allowed to select the substitute application(s) 502 a. - According to an embodiment, to ensure the security of the
target device 200 b and/or its user, thecloning agent 530 can be configured to scan the compatible and/or substitute application(s) 502 a, 502 b for malicious programming code prior to transmitting the updatedcloning data 232 a to thetarget device 200 b. In this case, for example, theApplication Management Module 520 can include amalware detector component 524 that is configured to scan an application's executable code to ensure that anapplication malware detector component 524 can notify thecloning agent 530 and the process can be terminated. Otherwise, the updatedcloning data 232 a is transmitted to thetarget device 200 b where thetarget device 200 b can be configured to use at least a portion of the cloningdata 232 a to clone in the compatible version(s) of the application(s) 502 a and/or substitute application(s) 502 b onto thetarget device 200 b. - According to an embodiment, the
electronic device 200 illustrated inFIG. 2 and described above as behaving as asource device 200 a can now be described as behaving as atarget device 200 b. When theelectronic device 200 is atarget device 200 b, thecloning agent 230 can be configured to “clone in” a new application, e.g., 203 a, from another device, i.e., thesource device 200 a. Referring now toFIG. 7 , a flow diagram is presented illustrating amethod 700 for cloning in an application from the sourceelectronic device 200 a to the targetelectronic device 200 b according to an embodiment. The exemplaryelectronic device 200 illustrated inFIG. 2 includes an arrangement of components configured to implement themethod 700, which also can be carried out in environments other than that illustrated inFIG. 2 . - Referring to
FIG. 2 andFIG. 7 , themethod 700 begins, inblock 702, when thecloning agent 230 receives cloningdata 232 associated with at least one application to be cloned-in to the electronic device 200 (referred to as a “clone-in application” 203). As described above, the cloningdata 232 can include the clone-in application(s) 203 a, and at least one of configuration information 212,state information 214, andapplication data 216 associated with the at least one clone-inapplication 203 a. According to an embodiment, the clone-in application(s) 203 a can be received directly from thesource device 200 a via anetwork 401 and/or indirectly from the cloud-basedApplication Provisioning Service 420 and/or theApplication Store Service 500. - In an embodiment, when the cloning
data 232 is received, thecloning agent 230 can be configured to ensure that thetarget device 200 b is authorized and/or prepared to clone in the application(s) 203 a. For example, as mentioned above, the user of thesource device 200 a can be one of several users associated with thesource 200 a, and thecloning data 232 can be associated with the user and/or with many users. According to an embodiment, thecloning agent 230 can be configured to determine that the user(s) associated with thesource device 200 a is also registered with thetarget device 200 b. For example, each user can be identified by a username, and thecloning agent 230 can determine that each user's username is registered on thetarget device 200 b. When a username of the user and/or of the other users is not registered, for example, because thetarget device 200 b is a new device, thecloning agent 230 can notify the user associated with thesource device 200 a and/or terminate the clone-in process. Alternatively, thecloning agent 230 can create new user(s) on thetarget device 200 b corresponding to the unregistered user(s). - According to an embodiment, when the cloning
data 232 is received, thecloning agent 230 can be configured to determine, inblock 704, that the at least oneapplication 203 a is compatible with the targetelectronic device 200 b and to prepare to load or install the application(s) 203 a onto thedevice 200 b. In an embodiment, in preparation for loading, thecloning agent 230 can invoke themalware detector 224 to scan the clone-in application(s) 203 a for malicious programming code to protect theelectronic device 200 b and/or its user(s). If a virus or other malicious code is detected, thecloning agent 230 can issue an alert and terminate the clone-in process. Otherwise, the clone-in application(s) 203 a can be loaded, inblock 706, onto thedevice 200 b. - Alternatively or in addition, in another embodiment, the
cloning agent 230 can determine that the application(s) 203 a is incompatible with the targetelectronic device 200 b. For example, when theApplication Store Service 500 is not available, the cloningdata 232 received from thesource device 200 a can include a clone-inapplication 203 a that is incompatible with thetarget device 200 b. According to an embodiment, thecloning agent 230 can be configured to determine that acompatible version 203 b of the at least one application is available from, for example, anapplication store service 440. In an embodiment, theApplication Management Module 220 can include asearch module 226 that can be configured to queryapplication store services 440 and websites for thecompatible version 203 b of the application. In this regard, thesearch module 226 can be similar to the Application Store Service'ssearch engine 504 described above. Thecloning agent 230 can then transmit a request to theapplication store service 440 for the compatible version of theapplication 203 b, via thesearch module 226, and can download and install the compatible version of theapplication 203 b. - Alternatively or additionally, in another embodiment, when the clone-in
application 203 a is incompatible and a compatible version of the application is unavailable, thecloning agent 230 can be configured to identify asubstitute application 203 c similar to the incompatible clone-inapplication 203 a. According to an embodiment, similar to the Application Store Service'scloning agent 530 described above, thecloning agent 230 can be configured to identify the substitute application(s) 203 c by applying at least oneselection rule 234 defining parameters for selecting a similar butdifferent substitute application 203 c for an original incompatible clone-inapplication 203 a. In an embodiment, the selection rule(s) 234 can be defined by the user associated with thesource device 200 a and/or the user associated with thetarget device 200 b if different from the source's user. - In an embodiment, the selection rule(s) 234 in the
electronic device 200 can be similar to those in theApplication Store Service 500 described above. For instance, aselection rule 234 can be based on a degree of similarity between the textual descriptions of the substitute application's functionality and the original application's functionality. Alternatively or in addition, aselection rule 234 can be based on the degree of similarity between the names of the substitute and original applications. In an embodiment, aselection rule 234 can require that thesubstitute application 203 c be published by the same publisher of theoriginal application 203 a. In addition, theselection rules 234 can be ranked and/or weighted by importance so that a mostsuitable substitute application 203 c can be identified. Once thesubstitute application 203 c is identified, thecloning agent 230 can retrieve theapplication 203 c if it is stored locally or transmit a request to anapplication store service 440 for thesubstitute application 203 c and can download and install thesubstitute application 203 c. - According to an embodiment, the
cloning agent 230 can be configured to install the clone-in application(s) 203 a, the compatible version of the clone-in application(s) 203 b, and/or the substitute application(s) 203 c and, using the configuration information 212, thestate information 214, and/or the application'sapplication data 216 included in thecloning data 232, can configure the application(s) 203 b, 203 c according to the preferences of the user(s). In an embodiment, the installation process can be performed silently, i.e., without interaction with the user of thetarget device 200 b. Alternatively, the installation can involve minimal interaction with the user of thetarget device 200 b. - In another embodiment, a clone-in application can be a self-cloning
application 203 d. In this embodiment, the self-cloning application 230 d includes executable code for automatically configuring itself using at least a portion of the cloningdata 232 associated with the self-cloningapplication 203 d. In an embodiment, when thecloning agent 230 submits a load request to the self-cloningapplication 203 d, the self-cloningapplication 202 b can be configured to automatically configure itself for the user and/or for some or all of the users using the configuration 212 and/or thestate 214 information and/or theapplication data 216 associated with theapplication 203 d and associated with the user, and/or some and/or all of the users. - Referring again to
FIG. 7 , once the clone-inapplication 203 a is loaded and configured, thecloning agent 230 can be configured to store, inblock 708, the configuration information 212 and/or thestate information 214 in anapplication file 210 b and to store the application'sapplication data 216 in thedata store 206 of theelectronic device 200. In an embodiment where the clone-in application is the self-cloningapplication 203 d, the self-cloningapplication 203 d be configured to modify theapplication file 210 b and theapplication data 216 in thedata store 206. In an embodiment where the clone-inapplication 203 a is loaded and configured for multiple users registered in thetarget device 200 b, theapplication file 210 b associated with the clone-inapplication 203 a can be divided into subfiles (not shown) associated with each of the user(s) registered on thetarget 200 b device. In this case, the configuration 212 and/or thestate 214 information can be stored in the subfile corresponding to each of the users. - According to an embodiment, once a selected application is cloned from the
source device 200 a to thetarget device 200 b, both devices host the application and, at least initially, share the same configuration information, state information and application data. As noted above, much of this process can be performed with little or no user input beyond selecting the application to be cloned and optionally indicating for which users. As time passes and the application is used at various times on the two devices, the configuration information, state information and application data can change between the two devices. For example, when the user plays a game application on his phone and completes a difficult level, the execution history of the application on the phone reflects that the user is ready for the next level. Accordingly, when the user plays the game again on his phone, he is moved to the next level and is not required to replay previously completed levels. Nevertheless, when the user plays the same game application on his tablet and the execution history of the application on the tablet does not reflect that the user has completed the difficult level, he will be required to replay this difficult level before going on to the next level. - As mentioned above, the
Application Management Module 220 is not only capable of “cloning out” and “cloning in” an application, it can also be responsible for synchronizing application parameters, i.e., the configuration 212 andstate 214 information, and theapplication data 216 once the application is installed and operating. According to an embodiment, theApplication Management Module 220 can include asyncing agent 240 configured to sync out existing information relating to anapplication 202 a and optionally associated with the user, and to sync in new information relating to anotherapplication 202 b. - In a sync-out mode, the
electronic device 200 can be asource device 200 a and thesyncing agent 240 can select anapplication 202 to be synchronized with a corresponding application hosted by atarget device 200 b. In an embodiment, when theapplication 202 is selected, thesyncing agent 240 can be configured to collectsyncing data 242 associated with theapplication 202 including the configuration information 212, thestate information 214, execution history information, and theapplication data 216. In an embodiment, the user can determine at least some of the information collected by thesyncing agent 240. In another embodiment, thesyncing data 242 can be formatted in a platform independent format so that thedata 242 can be interpreted by any type of device. Once thesyncing data 242 is collected, thesyncing agent 240 can transmit thesyncing data 242 to the targetelectronic device 200 b, which can be configured to receive and sync-in thesyncing data 242. - In a sync-in mode, the
electronic device 200 is thetarget device 200 b and thesyncing agent 240 is configured to receivesyncing data 242 associated with anapplication 202 hosted by the targetelectronic device 200 b. According to an embodiment, thesyncing data 242 can be received directly from asource device 200 a and/or from the cloud-basedApplication Provisioning Server 420. When thesyncing data 242 is received, thesyncing agent 240 can be configured to update the configuration information 212, thestate information 214, execution history information, and/or theapplication data 216 associated with theapplication 202 with thesyncing data 242. - In other embodiments, the
syncing agent 240 can use file system information to perform well known file replication techniques across thedevices application files 210 which contain the content, execution history information, and/orstate 214 or configuration information 212, to accomplish the data synchronization. In addition, when such information isapplication data 216 stored in adatabase 206 rather than infiles 210, well known database replication techniques can be used. - According to an embodiment, when the
syncing data 242 is transmitted to thetarget device 200 b, thesyncing data 242 can also be transmitted to the backup/restoreservice 450, which can be configured to store thesyncing data 242 with the corresponding cloningdata 232 associated with theapplication 202. If necessary, thesyncing agent 240 of thesource 200 a or thetarget 200 b device can be configured to retrieve thesyncing data 242 from the backup/restoreservice 450 and to perform the sync in operation to implement a full or partial restore operation. - According to an embodiment, the
cloning agent 230 and thesyncing agent 240 can be configured by the user to clone or sync all or afew applications 202 frequently or occasionally. For example, the user can say “clone everything but don't sync” or “clone everything and keep everything in sync” or “clone these apps but not those” or “sync these but not those” or any combination of these options. In another embodiment, an administrator can use thecloning 230 and syncing 240 agents to create standard configurations of multiple different devices. In another embodiment a device store can use thecloning 230 and syncing 240 agents to provision a newly purchased additional or replacement device for a user. - These and other advantages can be provided by the inventive system described above. For example, in an embodiment, an application to be cloned 202 a can be the
operating system 201 of thesource device 200 a. In this case, thecloning agent 230 can be configured to replace theoperating system 201 of thetarget device 200 b to implement an operating system upgrade to a new release, and/or to implement a rollback to an earlier version of the operating system when the newer version has detected problems. - In another embodiment, as mentioned above, the cloning
data 232 and thesyncing data 242 can be stored in the backup/restoreservice 450 and retrieved by thesource 200 a ortarget 200 b device to perform a full or partial restore operation. This can also be implemented to handle a malware infestation, removal, and cleanup operation in thesource 200 a ortarget 200 b device. For example, a piece of malware on thesource device 200 a may not be discovered and removed until after it has been on the device and operating for some time. During its lifetime, the malware may have modified other files or applications on thesource device 200 a. In this case, thecloning agent 230 can be configured to retrieve and clone in/sync-in thecloning 232/syncing 242 data from the restoreservice 450 to restore theapplication 202 to some previous time predating the infestation. In an embodiment, the backup/restoreservice 450 can be configured to store the cloning and syncing data, versioned, on a server to be available should a restore clone operation be necessary. Alternatively, theservice 450 can be configured to operate a server-side version of the user'ssource device 200 a, e.g., in a virtual machine or device emulator, so that the corresponding clone in/sync in operations are identical to those that would run on thetarget device 200 b. - In another embodiment, if the
source device 200 a is lost, the user or an administrator can remotely initiate a clone out and/or sync out operation for a plurality ofapplications 202 on the lostdevice 200 a. The user or administrator can choose the priority for performing the cloning or syncing operations so as to maximize, according to the user's or administrator's preferences, the likelihood of accomplishing the operations before the lost device's battery exhausts, or a stolen device is turned off. In an embodiment, the clone out and/or sync out operations may be immediately followed by wiping part or all of theapplication 202, the configuration information 212 or thestate information 214 and/or theapplication data 216 on the lostdevice 200 a. - In another embodiment, one or more applications being cloned may be applications which have been purchased by or on behalf of the user. The license for the applications may or may not allow such cloning. In an embodiment, in which the user is cloning for restore of a backup to the same or substantially identical replacement device, the clone in
application 203 a instance is replacing the originally clone outapplication 202 a instance either physically (if this is the identical device from which the cloning occurred) or logically (the user will be having the application on just one device, the replacement). In this case the license for the application should allow the cloning to occur, but a replacement of some specific hardware identifier(s) possibly used in application configuration may be necessary, e.g., the IMEI (International Mobile Station Equipment Identity) number used on mobile phones. - Alternatively, in another embodiment, the application license may allow for the user to install and run the application on a specified number of devices. In this case; when the cloning operation is adding a new application instance to a device, it may be necessary to only allow the clone in operation if the current license count will not be exceeded. The license count can be verified by asking the user or an administrator, or by querying a license manager service (which may be on the local network for an enterprise or on the internet) if sufficient licenses exist to allow the clone in operation. In the event that a license is not available, then there is the option to present the user (or administrator performing the clone in operation) a dialog in which the user can perform a transaction to purchase a license to allow for the clone in operation to proceed. In an embodiment when multiple applications are being cloned in, the user may be presented in advance of any cloning operation with the equivalent of a shopping basket checkout dialog during which the user can choose to purchase the license or licenses necessary to allow the clone in operation to proceed. This latter scenario as enabled would allow the operation of a user purchasing an application via a clone out/clone in operation from a friend or co-worker. The dialog for obtaining the required license can be carried out in communication with one or more application stores, application publisher websites, or other authorized sources for purchasing the application.
- Any of the above embodiments may be used alone or together with one another in any combination. The one or more implementations encompassed within this specification may also include embodiments that are only partially mentioned or alluded to or are not mentioned or alluded to at all. Although various embodiments may have been motivated by various deficiencies with the prior art, which may be discussed or alluded to in one or more places in the specification, the embodiments do not necessarily address any of these deficiencies. In other words, different embodiments may address different deficiencies that may be discussed in the specification. Some embodiments may only partially address some deficiencies or just one deficiency that may be discussed in the specification, and some embodiments may not address any of these deficiencies.
- In addition, one will appreciate that in the description above and throughout, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one of ordinary skill in the art, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form to facilitate explanation.
- While one or more implementations have been described by way of example and in terms of the specific embodiments, it is to be understood that one or more implementations are not limited to the disclosed embodiments. To the contrary, it is intended to cover various modifications and similar arrangements as would be apparent to those skilled in the art. Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.
Claims (44)
1. A method for providing an application to an electronic device, the method comprising:
receiving, at a cloning agent in a source electronic device hosting a plurality of applications, a selection of at least one application;
collecting, from the source electronic device, cloning data associated with the at least one application; and
transmitting, by the cloning agent, the cloning data, at least a portion of the cloning data being received by a target electronic device configured to utilize the received cloning data to install a compatible version of the at least one application onto the target electronic device.
2. The method of claim 1 , wherein the cloning data includes state information, and at least one of configuration information and application data, and wherein the state information, configuration information, and application data are associated with the at least one application, and wherein the state information defines operating parameters of the at least one application.
3. The method of claim 1 further including: determining that a version of the at least one application that is compatible with the target device is unavailable; identifying at least one substitute application similar to the at least one application; and providing information identifying the substitute application to the target device with the at least a portion of the cloning data.
4. The method of claim 3 further comprising providing at least one selection rule, and wherein identifying the at least one substitute application includes applying the at least one selection rule.
5. The method of claim 1 , wherein transmitting the cloning data includes sending at least a portion of the cloning data from the source electronic device to the target electronic device via at least one of a cloud-based application provisioning service or an application store service.
6. The method of claim 1 further comprising transmitting, by the cloning agent in the source electronic device, the cloning data to a cloud-based application provisioning service configured to provide the portion of the cloning data to the target electronic device.
7. The method of claim 1 further comprising transmitting, by the cloning agent in the source electronic device, the cloning data to an application store service configured to provide at least a portion of the cloning data to an electronic device in response to receiving a request from the electronic device to download the cloning data.
8. The method of claim 1 , wherein the cloning agent is an application hosted by the source device.
9. The method of claim 1 further comprising:
receiving, at a syncing agent in the source electronic device, a selection of an application of the plurality of applications to be synchronized with a corresponding application hosted by the target electronic device;
collecting syncing data associated with the application, wherein the syncing data includes at least one of the configuration information, the state information, execution history information, and the application data associated with the application; and
transmitting, by the syncing agent, the syncing data to the target electronic device, wherein the target electronic device is configured to receive and utilize at least a portion of the syncing data to update at least one of the configuration information, the state information, execution history information, and the application data associated with the corresponding application.
10. The method of claim 1 , wherein the at least one application is an application set associated with at least one of a device type, a device platform type, or a utility function type.
11. The method of claim 1 , wherein the source electronic device and the target electronic device use different platforms, the at least one application is configured to run on the platform of the source device, and being configured to run on the platform of the source device the at least one application is not compatible with the target electronic device.
12. The method of claim 11 , wherein the different platforms include iOS and Android.
13. The method of claim 11 , wherein the target electronic device is configured to utilize the received cloning data to request the compatible version of the at least one application from at least one of a cloud based application provisioning service or an application store service.
14. The method of claim 11 , wherein compatibility specifications for the at least one application are available from the application store service or from a publisher of the at least one application.
15. The method of claim 14 , wherein information based on the compatibility specifications for the at least one application is included with the at least a portion of the cloning data being received by the target electronic device.
16. A method for providing an application to an electronic device, the method comprising:
receiving, by a cloning agent in a target electronic device, cloning data associated with at least one application selected at a source electronic device hosting the at least one application, the selection indicating that the at least one application is to be installed on the target electronic device; and
installing, by the cloning agent, a compatible version of the at least one application, or a substitute for the at least one application, on the target electronic device.
17. The method of claim 16 , wherein the cloning data includes state information, and at least one of configuration information and application data, and wherein the state information, configuration information, and application data are associated with the at least one application, and wherein the state information defines operating parameters of the at least one application.
18. The method of claim 16 further including: determining, by at least one of a cloud based application provisioning service or an application store service, that a version of the at least one application is compatible with the target electronic device.
19. The method of claim 16 , wherein the cloning data is received from the source electronic device via at least one of a cloud based application provisioning service or an application store service.
20. The method of claim 16 further comprising installing and configuring the compatible version of the at least one application using at least one of the state information, the configuration information, or the application data associated with the at least one application.
21. The method of claim 16 , wherein the cloning agent is an application hosted by the target electronic device.
22. The method of claim 16 , wherein the at least one application is an application set associated with at least one of a device type, a device platform type, and a utility function type.
23. The method of claim 16 further comprising:
receiving, by a syncing agent in the target electronic device, syncing data associated with an application hosted by the target electronic device, wherein the syncing data includes at least one of the configuration information, the state information, execution history information, and the application data associated with the application; and
updating at least one of the configuration information, the state information, execution history information, and the application data associated with the application with the syncing data.
24. The method of claim 16 , further including determining that the at least one application is incompatible with the target electronic device.
25. The method of claim 24 further including:
transmitting, by the cloning agent, a request for the compatible version of the at least one application to an application store service; and
downloading the compatible version of the at least one application.
26. The method of claim 24 further including:
determining, by the cloning agent, that a compatible version of the at least one application is unavailable;
identifying at least one substitute application similar to the at least one application; and
downloading the substitute application.
27. The method of claim 26 further comprising providing at least one selection rule, and wherein identifying the at least one substitute application includes applying the at least one selection rule.
28. The method of claim 16 , wherein the source electronic device and the target electronic device use different platforms, the at least one application is configured to run on the platform of the source device, and being configured to run on the platform of the source device the at least one application is not compatible with the target electronic device.
29. The method of claim 28 , wherein the different platforms include iOS and Android.
30. The method of claim 28 , wherein the target electronic device is configured to utilize the received cloning data to request the compatible version of the at least one application from at least one of a cloud based application provisioning service or an application store service.
31. The method of claim 28 , wherein compatibility specifications for the at least one application are available from the application store service or from a publisher of the at least one application.
32. The method of claim 31 , wherein information based on the compatibility specifications for the at least one application is included with the cloning data being received by the target electronic device.
33. A method for providing an application to an electronic device, the method comprising:
receiving, by a cloning agent in an application store service that provides a plurality of applications, a request to clone at least one application from a source electronic device to a target electronic device, wherein the request is received based on a selection of at least one application at a source electronic device hosting the at least one application;
receiving, by the cloning agent, cloning data associated with the at least one application; and
transmitting, by the cloning agent, at least a portion of the cloning data to the target electronic device, wherein the target electronic device is configured to receive the at least a portion of the cloning data and to utilize the at least a portion of the cloning data to install a compatible version of the at least one application, or a substitute for the at least one application, on the target electronic device.
34. The method of claim 33 further comprising:
determining, by the cloning agent, that the application store service provides a compatible version of the at least one application compatible with the target electronic device; and
before transmitting at least a portion of the cloning data to the target electronic device, updating the cloning data based on the compatible version of the at least one application.
35. The method of claim 33 , wherein the cloning data includes state information, and at least one of configuration information and application data, and wherein the state information, configuration information, and application data are associated with the at least one application, and wherein the state information defines operating parameters of the at least one application.
36. The method of claim 33 further comprising:
determining, by the cloning agent, that a compatible version of the at least one application compatible with the target electronic device is available but not provided by the application store service;
identifying, by the cloning agent, another application store service that provides the compatible version of the at least one application; and
transmitting a request to the other application store service to retrieve the compatible version of the at least one application to the target electronic device.
37. The method of claim 33 further comprising:
determining, by the cloning agent, that a compatible version of the at least one application is unavailable;
identifying at least one substitute application similar to the at least one application; and
updating, by the cloning agent, the cloning data based on the at least one substitute application.
38. The method of claim 37 further comprising applying at least one selection rule to identify the at least one substitute application.
39. The method of claim 33 , wherein the at least one application is an application set associated with at least one of a device type and a utility function type.
40. The method of claim 33 , wherein the source electronic device and the target electronic device use different platforms, the at least one application is configured to run on the platform of the source device, and being configured to run on the platform of the source device the at least one application is not compatible with the target electronic device.
41. The method of claim 40 , wherein the different platforms include iOS and Android.
42. The method of claim 40 , wherein the target electronic device is configured to utilize the received at least a portion of the cloning data to request the compatible version of the at least one application from at least one of a cloud based application provisioning service or an application store service.
43. The method of claim 40 , wherein compatibility specifications for the at least one application are available from the application store service or from a publisher of the at least one application.
44. The method of claim 43 , wherein information based on the compatibility specifications for the at least one application is included with the at least a portion of the cloning data being received by the target electronic device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/754,542 US20150302073A1 (en) | 2012-12-03 | 2015-06-29 | Method and system for cross-platform application cloning |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/692,858 US9071627B2 (en) | 2012-12-03 | 2012-12-03 | Method and system for cloning applications from an electronic source device to an electronic target device |
US14/754,542 US20150302073A1 (en) | 2012-12-03 | 2015-06-29 | Method and system for cross-platform application cloning |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/692,858 Continuation US9071627B2 (en) | 2012-12-03 | 2012-12-03 | Method and system for cloning applications from an electronic source device to an electronic target device |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150302073A1 true US20150302073A1 (en) | 2015-10-22 |
Family
ID=50826596
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/692,858 Active 2033-07-04 US9071627B2 (en) | 2012-12-03 | 2012-12-03 | Method and system for cloning applications from an electronic source device to an electronic target device |
US14/754,542 Abandoned US20150302073A1 (en) | 2012-12-03 | 2015-06-29 | Method and system for cross-platform application cloning |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/692,858 Active 2033-07-04 US9071627B2 (en) | 2012-12-03 | 2012-12-03 | Method and system for cloning applications from an electronic source device to an electronic target device |
Country Status (1)
Country | Link |
---|---|
US (2) | US9071627B2 (en) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9182965B2 (en) * | 2011-10-31 | 2015-11-10 | Nokia Technologies Oy | Method and apparatus for developing socially suitable applications and devices |
CN105051776B (en) * | 2013-03-25 | 2021-02-09 | 索尼公司 | Information processing apparatus, information processing system, and information processing method |
US9854035B2 (en) | 2013-05-28 | 2017-12-26 | International Business Machines Corporation | Maintaining state synchronization of an application between computing devices as well as maintaining state synchronization of common information between different applications without requiring periodic synchronization |
US10044799B2 (en) | 2013-05-28 | 2018-08-07 | International Business Machines Corporation | Implementing synchronization of state information betweeen instances of an application as well as between different applications in an efficient, scalable manner |
JP6325796B2 (en) * | 2013-11-06 | 2018-05-16 | キヤノン株式会社 | Information processing terminal, control method therefor, and program |
US9383989B1 (en) | 2014-06-16 | 2016-07-05 | Symantec Corporation | Systems and methods for updating applications |
US9491231B1 (en) * | 2014-06-26 | 2016-11-08 | Sprint Communications Company L.P. | Mobile communication device stateful applications system |
US10324988B2 (en) * | 2014-09-30 | 2019-06-18 | Airwatch Llc | Resource distribution based upon search signals |
US10021213B2 (en) * | 2015-02-09 | 2018-07-10 | Google Llc | Systems and methods for adaptive cloning of mobile devices |
US10284417B2 (en) * | 2015-06-22 | 2019-05-07 | Arista Networks, Inc. | Method and system for sharing state between network elements |
CN106021023B (en) * | 2016-05-20 | 2020-04-07 | 北京世界星辉科技有限责任公司 | Application program recovery method and device and terminal |
CN106528593B (en) * | 2016-09-21 | 2020-10-02 | 徐绍衡 | Distributed database synchronous distributed real-time information cloud platform system |
US10565470B2 (en) | 2017-12-15 | 2020-02-18 | International Business Machines Corporation | System, method and recording medium for user interface (UI)-level clone detection |
US10747205B2 (en) * | 2018-05-18 | 2020-08-18 | Ingersoll-Rand Industrial U.S., Inc. | Electronic tool and method for copying a plurality of settings from a mechanical tool to another mechanical tool |
EP3605374A1 (en) | 2018-08-03 | 2020-02-05 | Hewlett-Packard Development Company, L.P. | Intrusion resilient applications |
US11429694B2 (en) * | 2018-08-17 | 2022-08-30 | Amazon Technologies, Inc. | Rule-based resource management system |
US11115268B2 (en) * | 2019-04-08 | 2021-09-07 | International Business Machines Corporation | Assistance in service provision |
JP7215353B2 (en) * | 2019-06-21 | 2023-01-31 | 富士フイルムビジネスイノベーション株式会社 | Image forming device and program |
CN114390485A (en) * | 2020-10-21 | 2022-04-22 | 华为技术有限公司 | Data transmission method and electronic equipment |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7877735B2 (en) * | 2004-05-25 | 2011-01-25 | Sap Ag | Application cloning |
US7984421B2 (en) * | 2006-10-03 | 2011-07-19 | Ning, Inc. | Web application cloning |
US20100057787A1 (en) * | 2008-08-28 | 2010-03-04 | International Business Machines Corporation | Method, system, and computer program product for cloning of distributed and stateful systems |
US8117496B2 (en) * | 2009-06-18 | 2012-02-14 | International Business Machines Corporation | Detecting and recovering from silent data errors in application cloning systems |
US8473943B2 (en) * | 2009-08-31 | 2013-06-25 | Oracle International Corporation | Using ecoprint for cloning of applications |
US20120311115A1 (en) * | 2011-05-31 | 2012-12-06 | Paul Kennedy | Assignment of agent identifier to cloned device |
US20130041790A1 (en) * | 2011-08-12 | 2013-02-14 | Sivakumar Murugesan | Method and system for transferring an application state |
-
2012
- 2012-12-03 US US13/692,858 patent/US9071627B2/en active Active
-
2015
- 2015-06-29 US US14/754,542 patent/US20150302073A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20140156784A1 (en) | 2014-06-05 |
US9071627B2 (en) | 2015-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9071627B2 (en) | Method and system for cloning applications from an electronic source device to an electronic target device | |
US11711432B1 (en) | Remote management of application settings | |
US11991249B2 (en) | Method, user equipment, server, and apparatus for implementing information sharing | |
US8856322B2 (en) | Supervisory portal systems and methods of operation of same | |
US8788655B2 (en) | Systems for accepting and approving applications and methods of operation of same | |
US8612582B2 (en) | Managed services portals and method of operation of same | |
US8615581B2 (en) | System for managing devices and method of operation of same | |
US8650290B2 (en) | Portable computing device and method of operation of same | |
US9374654B2 (en) | Management of mobile applications | |
US9513888B1 (en) | Virtual preloads | |
US20120036245A1 (en) | Managed services platform and method of operation of same | |
US8463884B2 (en) | Synchronization of mobile device with application server | |
US12001524B2 (en) | Enterprise application management with enrollment tokens | |
US20150026330A1 (en) | Generating unique identifiers for mobile devices | |
US20130054801A1 (en) | Cross-Platform Application Manager | |
US20140006225A1 (en) | Automatic device inventory management for different types of devices | |
US20130227085A1 (en) | Terminal and method for using cloud services | |
KR20140047579A (en) | Cross platform service notification | |
US20090094670A1 (en) | Security apparatus and method for all-in-one mobile device using security profile | |
US20240171603A1 (en) | Risk-Based Vulnerability Remediation Timeframe Recommendations | |
US9342606B2 (en) | Intelligent software installation | |
KR20130025070A (en) | Data sharing service system and method | |
US9467452B2 (en) | Transferring services in a networked environment | |
CN102625334B (en) | Detecting mobile operator networks | |
KR20170020366A (en) | Subscriber defined dynamic eventing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LOOKOUT, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BUCK, BRIAN JAMES;REEL/FRAME:035939/0095 Effective date: 20130104 |
|
STCB | Information on status: application discontinuation |
Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION |