`Matthews et al .
`
`( 10 ) Patent No .: US 10,671,367 B2
`( 45 ) Date of Patent :
`* Jun . 2 , 2020
`
`US01067136732
`
`( 54 ) SYSTEM AND METHOD FOR ANALYZING
`USER EXPERIENCE OF A SOFTWARE
`APPLICATION ACROSS DISPARATE
`DEVICES
`( 71 ) Applicant : APKUDO , LLC , Baltimore , MD ( US )
`( 72 ) Inventors : Joshua Scott Matthews , Baltimore ,
`MD ( US ) ; David Michael Teitelbaum ,
`Havre de Grace , MD ( US )
`( 73 ) Assignee : Apkudo , LLC , Baltimore , MD ( US )
`Subject to any disclaimer , the term of this
`( * ) Notice :
`patent is extended or adjusted under 35
`U.S.C. 154 ( b ) by 446 days .
`This patent is subject to a terminal dis
`claimer .
`( 21 ) Appl . No .: 15 / 393,244
`( 22 ) Filed :
`Dec. 28 , 2016
`( 65 )
`
`Prior Publication Data
`US 2017/0109154 A1 Apr. 20 , 2017
`Related U.S. Application Data
`( 63 ) Continuation of application No. 13 / 692,161 , filed on
`Dec. 3 , 2012 , now Pat . No. 9,578,133 .
`( 51 ) Int . Ci .
`G06F 8/65
`GO6F 8/38
`
`( 2018.01 )
`( 2018.01 )
`( Continued )
`
`( 52 ) U.S. Ci .
`G06F 8/65 ( 2013.01 ) ; GO6F 8/38
`CPC
`( 2013.01 ) ; G06F 9/328 ( 2013.01 ) ; H04L 67/10
`( 2013.01 ) ;
`( Continued )
`Field of Classification Search
`H04W 88/02 ; G06F 17/30
`CPC
`See application file for complete search history .
`
`( 58 )
`
`( 56 )
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`6,044,398 A
`6,105,042 A *
`
`3/2000 Marullo et al .
`8/2000 Aganovic
`
`( Continued )
`FOREIGN PATENT DOCUMENTS
`
`CN
`CN
`
`6/2011
`102110053 A
`8/2011
`102141960 A
`( Continued )
`
`G06F 3/14
`345/660
`
`OTHER PUBLICATIONS
`" Monkeyrunner ” , A Simple monkeyrunner Program , The monkeyrun
`ner API , Running monkeyrunner , monkeyrunner Built - in Help , and
`Extending monkeyrunner with Plugins , [ no date ] , 6 pages .
`( Continued )
`
`Primary Examiner Barbara B Anyan
`( 74 ) Attorney , Agent , or Firm — Pillsbury Winthrop Shaw
`Pittman LLP
`
`( 57 )
`ABSTRACT
`A system for providing a consistent user experience of an
`application across disparate mobile devices comprises a
`computing device including a display analysis application ,
`and one or more mobile devices including a display analysis
`application is provided . In one example , a mobile device
`comprises a memory storing a version of an operating
`system , a display analysis patch , and a patched application .
`A consistency module of the mobile device is configured to
`access the application with the display analysis patch , obtain
`one or more display parameters of the mobile device via the
`application with the display analysis patch , and transmit the
`obtained one or more display parameters to a computing
`device .
`
`20 Claims , 7 Drawing Sheets
`
`10
`
`100
`
`110
`display
`analysis
`application
`
`120 Storage Module
`130 Patching and Testing Module
`
`140 Network Module
`
`150 Consistency Module
`
`160 Socket Module
`
`20
`
`200
`
`210
`display
`analysis
`application
`
`220 Storage Module
`
`230 Network Module
`240 Consistency Module
`
`250 Socket Module
`
`300
`
`310
`display
`analysis
`application
`
`320 Storage Module
`
`330 Network Module
`340 Consistency Module
`
`350 Socket Module
`
`ironSource Exhibit 1017
`
`
`
`US 10,671,367 B2
`Page 2
`
`2011/0304634 A1
`2011/0310041 A1
`2011/0320879 Al
`2012/0015723 A1
`2012/0070090 A1
`2012/0109953 A1 *
`
`12/2011 Urbach
`12/2011 Williams et al .
`12/2011 Singh et al .
`1/2012 Lai
`3/2012 Chang et al .
`5/2012 Brown
`
`2012/0117139 Al *
`
`5/2012 Lam
`
`( 51 ) Int . Ci .
`H04W 4/50
`H04L 29/08
`G06F 9/32
`H04W 24/06
`G06Q 30/02
`( 52 ) U.S. Cl .
`CPC
`
`( 56 )
`
`( 2018.01 )
`( 2006.01 )
`( 2018.01 )
`( 2009.01 )
`( 2012.01 )
`H04L 67/34 ( 2013.01 ) ; H04W 4/50
`( 2018.02 ) ; G06Q 30/02 ( 2013.01 ) ; G06Q
`30/0251 ( 2013.01 ) ; H04W 24/06 ( 2013.01 )
`References Cited
`U.S. PATENT DOCUMENTS
`6,618,045 B1
`9/2003 Lin
`6/2004 Lupu et al .
`6,745,385 B1
`7,343,390 B2
`3/2008 Cohen et al .
`6/2008 Wang et al .
`7,388,977 B2
`7,483,984 B1
`1/2009 Jonker et al .
`7,769,009 B1
`8/2010 Katzer et al .
`9/2012 Mahaffey et al .
`8,271,608 B2
`9/2012 Anantharaman et al .
`8,275,843 B2
`8,296,445 B1
`10/2012 Hackborn et al .
`9/2014 Pedregal et al .
`8,832,127 B1
`8,971,821 B2
`3/2015 Schlub et al .
`7/2003 Chamberlain
`2003/0145317 A1
`12/2004 Hwang
`2004/0261248 Al
`2006/0038581 A1
`2/2006 Kanai
`2006/0139269 Al
`6/2006 Takeshita et al .
`8/2006 Varadarajan et al .
`2006/0174162 A1
`10/2006 Fields
`2006/0242124 Al
`4/2007 Lui et al .
`2007/0083813 Al
`2007/0100653 A1
`5/2007 Ramer et al .
`8/2007 Carey
`2007/0186250 A1
`2007/0205751 A1
`9/2007 Suzuki et al .
`11/2007 Johnson et al .
`2007/0256114 Al
`1/2008 Nagatsuka et al .
`2008/0013825 Al
`4/2008 Beard
`2008/0091686 Al
`2008/0274716 A1
`11/2008 Fok et al .
`2008/0316217 Al
`12/2008 Khan
`2008/0316368 A1
`12/2008 Fritsch et al .
`1/2009 Campion et al .
`2009/0007074 A1
`1/2009 Morgan et al .
`2009/0031015 Al
`5/2009 Topaltzas et al .
`2009/0124250 A1
`5/2009 Jung
`2009/0138579 A1
`8/2009 Marsyla et al .
`2009/0203368 A1
`2009/0249301 A1
`10/2009 Kalla et al .
`10/2009 Jenkinson et al .
`2009/0265035 A1
`12/2009 Karthikeyan et al .
`2009/0307531 A1
`12/2009 Fishel
`2009/0312009 Al
`3/2010 Maucksch
`2010/0075664 A1 *
`4/2010 Topaltzas et al .
`4/2010 Mazzagatte et al .
`4/2010 Jackowitz et al .
`8/2010 Greer et al .
`9/2010 Border et al .
`1/2011 Ellingson
`4/2011 Bocharov et al .
`4/2011 Kandula et al .
`5/2011 Gururaj
`8/2011 von Sydow
`10/2011 Topaltzas et al .
`11/2011 Linder et al .
`12/2011 Baranov et al .
`12/2011 Prophete et al .
`
`2010/0080143 A1
`2010/0088423 A1
`2010/0094774 Al
`2010/0198402 A1
`2010/0231738 Al
`2011/0010349 A1
`2011/0080940 A1
`2011/0087924 Al
`2011/0113287 Al
`2011/0196735 A1 *
`
`2011/0263243 Al
`2011/0288964 A1
`2011/0296009 Al
`2011/0302454 A1
`
`H04W 24/06
`455/425
`
`GO6Q 30/02
`705 / 14.43
`
`6/2012 Jenkinson
`6/2012 Zazula et al .
`7/2012 Uzelac et al .
`7/2012 Uzelac et al .
`8/2012 Schroeder
`8/2012 Burckart et al .
`8/2012 Kalavade
`8/2012 Bai et al .
`9/2012 Poon et al .
`9/2012 Overton et al .
`9/2012 Lusenhop et al .
`10/2012 Burkitt et al .
`10/2012 Ayyagari
`10/2012 Bokhari
`11/2012 Ha et al .
`12/2012 Shah
`1/2013 Waring et al .
`H04M 1/72569
`1/2013 Das
`455/557
`5/2013 Worthington et al .
`8/2013 Uzelac et al .
`8/2013 Panagas
`2/2014 Cusack
`
`G06Q 10/063
`707/736
`G060 30/0251
`709/201
`
`G06Q 30/02
`705 / 14.61
`
`2012/0146956 Al
`2012/0155292 Al
`2012/0188176 Al
`2012/0191394 Al
`2012/0198279 Al
`2012/02 10242 A1
`2012/0221570 A1
`2012/0221893 A1
`2012/0231785 A1
`2012/0245918 Al
`2012/0246515 A1
`2012/0254917 A1
`2012/0265629 Al
`2012/0266142 Al
`2012/0280934 A1
`2012/0311569 Al
`2013/0002862 A1
`2013/0029723 A1 *
`
`2013/0132616 A1
`2013/0197862 Al
`2013/0200917 A1
`2014/0040035 A1 *
`
`2014/0152584 A1
`2014/0281714 Al
`
`6/2014 Matthews et al .
`9/2014 Matthews et al .
`
`FOREIGN PATENT DOCUMENTS
`
`EP
`EP
`EP
`JP
`WO
`WO
`
`2 369 481
`2 492 814
`2 515 526
`2008-244688
`WO 2011/128514
`WO 2014/150306
`
`9/2011
`8/2012
`10/2012
`10/2008
`10/2011
`9/2014
`
`OTHER PUBLICATIONS
`“ Testdroid Recorder 2.0.9 ” , Testing , Tools , Application Develop
`ment Frameworks , and Mobile and Device Development , [ no date ) ,
`3 pages .
`Optofidelity Touch Panel Performance Test systems Brochure , dated
`Aug. 2013 available at http://www.optofidelity.com/wp-content/
`uploads / 2013 / 09 / OF_TPPT_general.pdf , 4 pages .
`Optofidelity Test Automation Product Portfolio Brochure , dated
`May 2014 available at http://www.optofidelity.com/wp-content/
`uploads / 2014 / 07 / OF_Product Portfolio_2014_En.pdf , 6 pages .
`Video of Optofidelity Touch Panel Performance Tester , dated Oct.
`15 , 2012 available at https://www.youtube.com/watch?v=q_
`sxn1hZu78 , 1 page .
`Optofidelity Watchdog Brochure , dated Oct. 2013 available at
`http://www.optofidelity.com/wp-content/uploads/2013/11/OF_
`WatchDog_EN_www.pdf , 2 pages .
`Optofidelity Measurement Services Brochure , dated Q1 2013 avail
`able at http://www.optofidelity.com/wp-content/uploads/2013/09/
`OF_MeasurementReport.pdf , 10 pages .
`* cited by examiner
`
`
`
`U.S. Patent
`
`Jun . 2 , 2020
`
`Sheet 1 of 7
`
`US 10,671,367 B2
`
`
`
`
`
`150 Consistency Module
`
`
`
`
`
`140 Network Module
`
`
`
`
`
`160 Socket Module
`
`
`
`
`
`340 Consistency Module
`
`
`
`
`
`240 Consistency Module
`
`
`
`
`
`330 Network Module
`
`
`
`
`
`230 Network Module
`
`20
`
`
`
`320 Storage Module
`310 display analysis application
`
`300
`
`
`
`220 Storage Module
`210 display analysis application
`
`200
`
`
`
`
`
`350 Socket Module
`
`
`
`
`
`250 Socket Module
`
`
`
`
`
`application 130 Patching and Testing Module
`
`
`
`
`
`
`
`
`
`
`display 120 Storage Module
`analysis
`
`110
`100
`
`Fig . 1
`
`10
`
`
`
`U.S. Patent
`
`Jun . 2 , 2020
`
`Sheet 2 of 7
`
`US 10,671,367 B2
`
`
`
`
`
`360 Patching Module
`
`
`
`
`
`260 Patching Module
`
`
`
`
`
`350 Socket Module
`
`
`
`
`
`250 Socket Module
`
`
`
`
`
`150 Consistency Module
`
`
`
`
`
`140 Network Module
`
`
`
`
`
`160 Socket Module
`
`
`
`340 Consistency Module
`
`
`320 Storage Module
`
`
`330 Network Module
`310 display analysis application
`
`300
`
`20
`
`
`
`240 Consistency Module
`
`
`220 Storage Module
`
`
`230 Network Module
`210 display analysis application
`
`200
`
`
`
`
`
`application 130 Patching and Testing Module
`
`
`
`
`
`
`
`
`
`
`display 120 Storage Module
`analysis
`
`110
`
`100
`
`Fig . 2
`
`10
`
`
`
`U.S. Patent
`
`Jun . 2 , 2020
`
`Sheet 3 of 7
`
`US 10,671,367 B2
`
`302
`
`304
`
`306
`
`308
`
`
`
`
`
`
`
`Patch application apk with display analysis application
`
`
`
`
`
`
`
`
`
`
`
`Install display analysis application on mobile device
`
`
`
`
`
`
`
`Communicate display parameters to computing device
`
`
`
`
`
`
`
`Obtain display parameters of mobile device
`
`
`
`
`
`patch
`
`Fig . 3
`
`
`
`U.S. Patent
`
`Jun . 2 , 2020
`
`Sheet 4 of 7
`
`US 10,671,367 B2
`
`402
`
`404
`
`406
`
`408
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Determine whether display parameters of mobile device match socket display parameters broadcast at multicast
`
`
`
`
`
`
`
`Patch application apk with display analysis application
`
`
`
`
`
`
`
`
`
`
`
`Install display analysis application on mobile device
`
`
`
`
`
`
`
`Identify multicast socket at computing device with
`
`
`
`
`display analysis application
`
`patch
`
`Fig . 4
`
`
`
`U.S. Patent
`
`Jun . 2 , 2020
`
`Sheet 5 of 7
`
`US 10,671,367 B2
`
`502
`
`504
`
`506
`
`
`
`
`
`Compare indication with display parameters broadcast at
`
`
`
`
`
`
`
`
`
`
`
`Produce indication relating to result of invoked
`
`408
`
`Fig . 5
`
`
`
`Invoke command
`
`command
`
`
`
`multicast socket
`
`
`
`U.S. Patent
`U.S. Patent
`
`Jun . 2 , 2020
`Jun. 2, 2020
`
`Sheet 6 of 7
`Sheet 6 0f 7
`
`US 10,671,367 B2
`US 10,671,367 B2
`
`_______________________________________
`
`200
`
`0O
`
`N
`
`00
`o
`
`608
`
`ot
`
`0
`
`610
`/{3
`
`V
`
`604
`[8
`
`to
`
`606
`8
`
`No
`
`602
`LD
`
`— ————————————————————————————
`
`C
`
`100
`
`OO
`
`\—I
`
`Fig . 6
`
`Fig.6
`
`
`
`U.S. Patent
`
`Jun . 2 , 2020
`
`Sheet 7 of 7
`
`US 10,671,367 B2
`
`702
`
`704
`
`706
`
`708
`
`710
`
`
`
`
`
`Continue to listen at multicast socket with Alpha Device
`
`
`
`
`
`
`
`Identify multicast socket at computing device with
`
`
`
`
`display analysis application
`
`Yes
`
`
`Determine whether display parameters of mobile device
`
`
`
`
`
`
`match display parameters of Alpha device
`
`No
`
`
`
`
`
`Install display analysis application on mobile device
`
`
`
`
`
`
`
`
`
`
`
`Patch application apk with display analysis application
`
`
`
`
`
`
`
`patch
`
`Fig . 7
`
`
`
`US 10,671,367 B2
`
`BACKGROUND OF THE INVENTION
`
`1
`SYSTEM AND METHOD FOR ANALYZING
`USER EXPERIENCE OF A SOFTWARE
`APPLICATION ACROSS DISPARATE
`DEVICES
`
`2
`in terms of hardware . In other examples , different versions
`of the Android OS may run on mobile devices with different
`hardware , or the same version of the Android OS may run
`on mobile devices with different hardware . The version of
`5 the Android OS running on a mobile device may be depen
`dent mostly or solely on the time the OS was downloaded or
`CROSS REFERENCE TO RELATED
`installed on the mobile device , and / or when the user of the
`APPLICATIONS
`mobile device updated the OS . Some versions may be
`This present application is a continuation of U.S. patent
`dependent on both time and / or hardware of the mobile
`application Ser . No. 13 / 692,161 , filed Dec. 3 , 2012 , which is 10 device .
`Typically , the Android platform may also include a non
`hereby incorporated by reference in
`its entirety .
`public application protocol interface ( API ) named ViewS
`erver which may enable the device or a client accessing the
`FIELD OF THE INVENTION
`device to determine the view parameters of an application .
`The invention relates to a system and method for analyz- 15 Because this API is non - public , it may not be enabled on
`production devices ( such as mobile phones or tablets sold in
`ing a user experience of the execution of a software appli
`cation across disparate devices to provide a more consistent
`stores ) . Further , the ViewServer API may change at any time
`user experience of the software application across disparate
`without warning in any version of Android , because it is a
`non - public API . This makes the API incredibly unreliable
`devices .
`20 for application developers . The ViewServer API is also not
`designed for real - time interaction and may be very slow . The
`slowness of the API may be result , in part , because that the
`ViewServer API may return an entire view state of an
`The Android platform is an open source software stack for
`application . The ViewServer API may also dispatch to the
`mobile phones and other devices . An Android Software
`Development Kit ( “ SDK ” ) allows software developers to 25 Android WindowManager to resolve view data , which may
`create applications that will run on the Android platform .
`also contribute to slower speed while using the API .
`Typically , Android applications are written in Java ( a well
`Given the various versions of the Android OS that are
`known programming language ) and are compiled by the
`available and running on mobile devices , an application may
`Android SDK tools , along with relevant data and resource
`not run consistently on the available Android operating
`files , into a single Android application package file . The 30 systems , even when the hardware across those mobile
`Android application package file ( hereinafter “ apk " ) for an
`devices may be identical .
`application may be used to distribute and install the software
`The user experience of the application may also vary
`and middleware for the application to run on the Android
`across Android devices due to the variations between
`operating system . An application's apk may hold the ele
`Android operating systems and / or device hardware on the
`ments of the application , including , for example , program 35 Android devices .
`code for the application , resources , assets , certificates , a
`These issues may also be relevant for developing software
`to run on other open source platforms as well .
`manifest file , and other elements .
`The manifest file may include one or more components
`Conventional systems for developing applications for use
`such as , for example , activities , services , content providers ,
`across a plurality of devices and / or operating systems suffer
`broadcast receivers , and / or other components . An Android 40 from these and other drawbacks .
`device may check an apk's manifest file to determine
`whether a component exists or should be associated with the
`SUMMARY OF THE INVENTION
`application . The manifest file may also include application
`configuration information including , for example , informa
`The invention solving these and other drawbacks of
`tion about permissions , application programming interface 45 conventional systems relates to a system and method for
`( “ API ” ) level , hardware requirements , software require
`analyzing a user experience of the execution of a software
`ments , required API libraries , and / or other application con
`application across disparate devices to provide a more
`figuration information . The manifest file may also contain
`consistent user experience of the software application across
`information about how the application will run on different
`disparate devices .
`types of devices ( e.g. , by providing different layouts or 50
`A system for providing a consistent user experience of an
`scales for different screen sizes , different screen densities ,
`application across disparate devices may comprise a com
`and / or other device - specific configurations or features ) .
`puting device including a display analysis application , and
`When the Android device does not support the configura
`one or more mobile devices including a display analysis
`tions in the manifest file , then the Android device may return
`application
`an error or may use default settings . Conventionally , the 55
`A display analysis application may be installed on a
`manifest file ( and the application's apk ) may be created by
`mobile device . The mobile device with the display analysis
`application developers and delivered in a final form to the
`application installed thereon may include a memory that
`Android device for installation and use . The performance
`stores at least a version of an operating system , at least one
`and scalability of the application may be considered by the
`application , and the display analysis application . The mobile
`application developers before making the application avail- 60 device may include a network module configured to receive
`a query for one or more display parameters for an applica
`able for download and installation .
`Because the Android platform is open source , numerous
`tion with a display analysis patch from a display analysis
`versions of the Android operating system ( “ OS ” ) may be
`application residing on the computing device . The mobile
`available . For example , a first version of the Android OS
`device may include a consistency module configured to
`may run on a first mobile device , and a second version of the 65 access an application with the display analysis patch , obtain
`Android OS may run on a second mobile device , even
`the one or more display parameters of the mobile device via
`though the first and second mobile devices may be identical
`the patched application , and transmit the obtained one or
`
`
`
`US 10,671,367 B2
`
`4
`3
`requests and responses from the computing device and the
`more display parameters to the display analysis application .
`mobile device , respectively , the computing device may
`The display parameters may include , for example , available
`obtain one or more display parameters of the mobile device .
`widgets , screen characteristics , display characteristics of a
`A socket module of the computing device may make
`window of an application , screen shots of a view of an
`application , and other parameters . The mobile device may 5 available one or more local multicast sockets at which
`also include a socket module configured to enable the
`mobile devices including the patched application may listen
`mobile device to communicate via a multicast socket at the
`and communicate data . A socket may typically be repre
`computing device . In some implementations , the mobile
`sented as a combination of an IP address and a port number ,
`device may also include a patching module that patches an
`and may facilitate inter - process communication across a
`application's apk with the display analysis application .
`10 network . In some implementations , the socket module of the
`A display analysis application may also reside on a
`computing device may use a portion of an SHA - 1 encoded
`computing device . The computing device and the mobile
`string to represent the multicast socket . The socket module
`device may communicate over a network , or other commu
`of the computing device may transmit the SHA - 1 encoded
`nication channel . The computing device including the dis
`string to mobile devices that have installed the display
`play analysis application may include at least a storage 15 analysis application . A mobile device with the display analy
`configured to store a plurality of display parameters , infor
`sis application installed may communicate with the com
`mation about one or more mobile devices , application infor
`puting device to receive the SHA - 1 encoded string . In some
`mation , and one or more socket addresses . The computing
`implementations , 12 of the 40 bytes of the SHA - 1 encoded
`device may also include a plurality of modules such as , for
`string sent by the display analysis application may represent
`example , a patching and testing module configured to patch 20 the address of the socket . One or more other bytes may
`an application with an apk and / or transmit commands to be
`represent the port number of the socket .
`invoked by a mobile device , a network module configured to
`The networking module of the mobile device may connect
`transmit and receive information from one or more mobile
`to the computing device using one or more methods of
`devices , a socket module configured to create at least a first
`authentication ( e.g. , using a shared secret ) . In other
`socket to be used for communication with one or more 25 examples , the mobile device may receive a shared secret
`mobile devices , and a consistency module configured to
`when installing the display analysis application on the
`obtain and / or compare display parameters from one or more
`device . The socket module of the mobile device may use a
`shared secret between the mobile device and the computing
`mobile devices .
`In some implementations , the patching and testing mod
`device to hash the SHA - 1 encoded string sent by the socket
`ule of the computing device may be configured to patch an 30 module of the computing device . The socket module of the
`application's apk with the display analysis application . For
`mobile device may then identify , using the SHA - 1 encoded
`example , the patching and testing module may use a patch
`string , a multicast socket via which the mobile device and
`provided from the display analysis application on the com
`the computing device may communicate . The socket module
`puting device . The patching and testing module may update
`of the mobile device may then connect to the multicast
`an application's apk with the patch . The patched apk may be 35 socket and thus be able to listen at the multicast socket
`communicated to a mobile device when the mobile device
`and / or broadcast information to the multicast socket .
`requests the application .
`In some implementations , the mobile device may receive
`Alternatively , in an implementation in which a patching
`an application from the computing device . The apk of the
`module is disposed at the mobile device , the patching
`application may be patched with a patch from the display
`module of the mobile device may be configured to patch an 40 analysis application on the computing device . The consis
`application's apk with a patch from the display analysis
`tency module of the mobile device may access the patched
`application of the mobile device . For example , the patching
`application after it has been received . In some implementa
`module may use a patch provided from the installation of the
`tions , the consistency module of the mobile device may
`display analysis application on the mobile device . The
`receive one or more commands to invoke from the comput
`patching module may update an application's apk with the 45 ing device . The consistency module may then transmit one
`patch . The patched apk may be used when the application is
`or more display parameters to the computing device based
`instantiated . The consistency module of the mobile device
`on an invocation of the one or more received commands .
`may be able to obtain a display parameter of the device via
`For example , the consistency module may broadcast the
`the patched application . For example , the display analysis
`display parameters at a multicast socket created by the
`application of the mobile device may run on a same thread 50 socket module of the computing device . The consistency
`module of the computing device may then compare display
`as the application .
`In some implementations , the patching and testing mod
`parameters of the mobile device with one or more display
`ule of the computing device may also facilitate the invoking
`parameters stored at the computing device ( or broadcast at
`of a command on the mobile device . For example , the
`the multicast socket ) . Based on the comparison , the consis
`patching and testing module may request that the application 55 tency module of the computing device may transmit an
`invoke a command . In another example , the mobile device
`indication to the mobile device regarding whether display
`may invoke a command based on previous commands
`parameters of the mobile device match display parameters at
`invoked by the mobile device . The command may include
`the computing device . The display parameters broadcast at
`one or more instructions to be executed by the application to
`the multicast socket may be from one or more other devices
`determine whether a specific type of view of the application 60 that include the display analysis application and the patched
`is supported by the mobile device . In some implementations ,
`application .
`the command may be invoked on the mobile device using a
`In another example , the consistency module of the mobile
`simulator or testing tool such as , for example , the Android
`device may obtain display parameters broadcast at the
`Monkey tool . In some implementations , the consistency
`computing device and may compare the broadcast display
`module of the mobile device may invoke the command and 65 parameters with the display parameters of the mobile device .
`may transmit an indication to the computing device based on
`The consistency module of the computing device may also
`the results of the invoked command . Through a series of
`store the broadcast display parameters at a storage module of
`
`
`
`US 10,671,367 B2
`
`5
`6
`Alpha device may broadcast at the multicast socket a SHA - 1
`the computing device . The consistency module of the com
`encoded serial representation of the display parameters
`puting device may also associate the broadcast display
`relating to a view of the application on the device based on
`parameters with the socket at which the display parameters
`the invoked command . The Alpha device and / or the patching
`were broadcast .
`By enabling mobile devices to transmit and / or compare 5 and testing module of the computing device may also
`display parameters , a consistency module of the computing
`broadcast the command at the multicast socket . In some
`device may track a display produced by the execution of the
`implementations , the patching and testing module of the
`patched application on one or more of the mobile devices .
`computing device may store the invoked commands at the
`A consistent execution of the patched application across
`storage and associate the invoked commands with the mul
`similar devices may be monitored and / or enabled . For 10 ticast socket . A mobile device that is also connected to the
`example , the execution of the patched application across
`multicast socket may invoke the same command on its
`similar devices may be monitored by the computing device .
`device . The mobile device may then compare the display
`The computing device may store information related to the
`parameters based on the invoked command with the Alpha
`execution of the patched application across similar devices .
`device's broadcast display parameters .
`The computing device may also store whether one or more 15
`The commands invoked by the Alpha device may be
`devices ( and / or one or more types of devices ) have a
`similar to the commands invoked by the mobile device in its
`consistent execution of the patched application .
`communication with computing device detailed above . For
`The computing device may store the results of an execu
`example , a command invoked at the Alpha device may be
`tion of the patched application across multiple devices . For
`based on one or more previous commands executed by the
`example , the computing device may store information relat- 20 Alpha device . The patching and testing module may main
`ing to a disparate execution of the patched application across
`tain a predetermined list of commands to be invoked by an
`one or more devices . The computing device may analyze the
`Alpha device for a specific application . In some implemen
`stored information related to the disparate execution of the
`tations , these commands may relate to the patched applica
`patched application . The computing device may also ana
`tion to be executed on the Alpha device . The predetermined
`lyze the stored information to determine a number of dis- 25 list of commands may also encompass a variety of different
`parate executions . The computing device may also analyze
`display parameters that may result from execution of the
`the stored information to determine a percentage of devices
`patched application on a variety of different mobile devices .
`associated with a disparate execution of the patched appli
`The commands may also relate to the actions available on
`one or more mobile devices . The commands sent by the
`cation .
`The computing device may compare the stored informa- 30 patching and testing module may also be based on one or
`more previous commands invoked by the Alpha device .
`tion relating to a first patched application with stored infor
`mation relating to a second patched application . For
`When display parameters of the mobile device match
`example , the computing device may compare whether the
`display parameters of the Alpha device after invoking the
`first application or the second application has a larger
`command , the mobile device may continue to listen at the
`number of disparate executions . Other analyses may also be 35 multicast socket at which the Alpha device broadcasts its
`performed .
`display parameters . The Alpha device may continue to
`The mobile device may receive data relating to the
`broadcast , at the multicast socket , the commands that it
`execution of an application executing on the device . The
`invokes and / or the resultant display parameters for the
`data may be broadcast at the multicast socket or may be
`respective commands . The consistency module of the
`received from the computing device . In some implementa- 40 mobile device may continue to invoke the same commands
`tions , the computing device may analyze the display param
`as the Alpha device and compare its resultant display
`eters received from mobile device and may develop a patch
`parameters with those of the Alpha device . For example , the
`for the application to run on mobile device based on that
`consistency module of the mobile device may invoke the
`analysis . The patch may tailor the execution of the applica
`same commands as the Alpha device until its resultant
`tion on the mobile device to use the display parameters 45 display parameters no longer match those of the Alpha
`included in the patch . Alternatively , the computing device
`device , or until the Alpha device has invoked all of the
`may transmit program code or other functional language to
`commands in a predetermined list .
`the mobile device that enables the mobile device to support
`The mobile devices that match the display parameters of
`the display parameters produced by the execution of the
`the Alpha device after a list of commands have been invoked
`application . Other types of data may also be sent to the 50 may be considered to be in a same pack as the Alpha device
`mobile device to enable an execution of the application on
`and may appear to have the same display functionality ( e.g. ,
`same screen size , chipset , vendor , and / or other display
`mobile device .
`The consistency module of the mobile device may com
`functionality ) as the Alpha device . In some implementations ,
`pare the display parameters of its device with display
`the computing device may store which devices ( and / or
`parameters broadcast from one or more other mobile devices 55 which types of devices ) are in one or more packs .
`via the multicast socket . In some implementations , the
`In some implementations , the mobile device may receive
`mobile devices connected via a multicast socket may arbi
`data relating to the execution of an application executing on
`trarily choose one mobile device ( e.g. , the device with the
`the device . The data may be based on the pack in which the
`lowest or highest device serial number ) as an “ Alpha ”
`mobile device fits . The data may be broadcast at the multi
`60 cast socket , or may be received from the computing device .
`device .
`Mobile devices connected via the multicast socket may
`In some implementations , the computing device may ana
`lyze the display param