<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Apkudo &#187; Apkudo for Developers</title>
	<atom:link href="http://mspotten.com/wordpress/category/apkudo-for-developers/feed/" rel="self" type="application/rss+xml" />
	<link>http://mspotten.com/wordpress</link>
	<description></description>
	<lastBuildDate>Mon, 05 Jan 2015 21:04:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>The promise and perils of replacing your hard drive with Dropbox</title>
		<link>http://mspotten.com/wordpress/the-promise-and-perils-of-replacing-your-hard-drive-with-dropbox/</link>
		<comments>http://mspotten.com/wordpress/the-promise-and-perils-of-replacing-your-hard-drive-with-dropbox/#comments</comments>
		<pubDate>Mon, 15 Jul 2013 09:46:32 +0000</pubDate>
		<dc:creator><![CDATA[mspotten]]></dc:creator>
				<category><![CDATA[Apkudo for Developers]]></category>
		<category><![CDATA[PCWorld]]></category>

		<guid isPermaLink="false">http://blog.apkudo.com/?p=1143</guid>
		<description><![CDATA[This article originally appeared on PCWorld on July 12, 2013 &#8220;We&#8217;re swiftly heading towards a world where users paying for cloud storage is going to be as common as users paying for a phone bill,&#8221; says Matthews. &#8220;The interesting part is what happens along the way.&#8221; Keep reading&#8230;]]></description>
				<content:encoded><![CDATA[<p><em>This article originally appeared on PCWorld on July 12, 2013</em></p>
<p>&#8220;We&#8217;re swiftly heading towards a world where users paying for cloud storage is going to be as common as users paying for a phone bill,&#8221; says Matthews. &#8220;The interesting part is what happens along the way.&#8221; <em><a href="http://www.pcworld.com/article/2044179/the-promise-and-perils-of-replacing-your-hard-drive-with-dropbox.html" target="_blank">Keep reading&#8230;</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://mspotten.com/wordpress/the-promise-and-perils-of-replacing-your-hard-drive-with-dropbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hardware-testing firm Apkudo is Android developers’ free secret weapon against fragmentation</title>
		<link>http://mspotten.com/wordpress/hardware-testing-firm-apkudo-is-android-developers-free-secret-weapon-against-fragmentation/</link>
		<comments>http://mspotten.com/wordpress/hardware-testing-firm-apkudo-is-android-developers-free-secret-weapon-against-fragmentation/#comments</comments>
		<pubDate>Fri, 28 Jun 2013 13:41:18 +0000</pubDate>
		<dc:creator><![CDATA[mspotten]]></dc:creator>
				<category><![CDATA[Apkudo Approved]]></category>
		<category><![CDATA[Apkudo Buzz]]></category>
		<category><![CDATA[Apkudo for Developers]]></category>
		<category><![CDATA[Press Articles]]></category>
		<category><![CDATA[VentureBeat]]></category>

		<guid isPermaLink="false">http://blog.apkudo.com/?p=1140</guid>
		<description><![CDATA[This article originally appeared in VentureBeat on June 28, 2013 Fragmentation on the Android operating system presents many complications for developers. It is a time-consuming and expensive process to test games out on dozens of different devices, and even then it’s unlikely studios can get their titles running perfectly on every phone or tablet in use. That’s where device-testing firm Apkudo comes in. Keep reading&#8230;]]></description>
				<content:encoded><![CDATA[<p><em>This article originally appeared in <a href="http://venturebeat.com/2013/06/28/hardware-testing-firm-apkudo-is-android-developers-free-secret-weapon-against-fragmentation/" target="_blank">VentureBeat</a> on June 28, 2013</em></p>
<p>Fragmentation on the Android operating system presents many complications for developers. It is a time-consuming and expensive process to test games out on dozens of different devices, and even then it’s unlikely studios can get their titles running perfectly on every phone or tablet in use.</p>
<p>That’s where device-testing firm <a title="Apkudo: Homepage" href="http://apkudo.com" target="_blank">Apkudo</a> comes in. <a href="http://venturebeat.com/2013/06/28/hardware-testing-firm-apkudo-is-android-developers-free-secret-weapon-against-fragmentation/" target="_blank"><em>Keep reading&#8230;</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mspotten.com/wordpress/hardware-testing-firm-apkudo-is-android-developers-free-secret-weapon-against-fragmentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Get Every Android on the Same Page &#8211; Bloomberg TV</title>
		<link>http://mspotten.com/wordpress/how-to-get-every-android-on-the-same-page-bloomberg-tv/</link>
		<comments>http://mspotten.com/wordpress/how-to-get-every-android-on-the-same-page-bloomberg-tv/#comments</comments>
		<pubDate>Tue, 25 Jun 2013 14:38:05 +0000</pubDate>
		<dc:creator><![CDATA[mspotten]]></dc:creator>
				<category><![CDATA[Apkudo Approved]]></category>
		<category><![CDATA[Apkudo Buzz]]></category>
		<category><![CDATA[Apkudo for Developers]]></category>
		<category><![CDATA[Awards]]></category>
		<category><![CDATA[Interviews]]></category>
		<category><![CDATA[Application Developers Alliance]]></category>
		<category><![CDATA[Bloomberg TV]]></category>
		<category><![CDATA[Fierce 15]]></category>

		<guid isPermaLink="false">http://blog.apkudo.com/?p=1091</guid>
		<description><![CDATA[Apkudo CEO and Application Developers Alliance Founding Director Josh Matthews discusses the company&#8217;s Android testing tools with Pimm Fox on Bloomberg Television&#8217;s &#8220;Taking Stock.&#8221; Take a look!]]></description>
				<content:encoded><![CDATA[<p>Apkudo CEO and Application Developers Alliance Founding Director Josh Matthews discusses the company&#8217;s Android testing tools with Pimm Fox on Bloomberg Television&#8217;s &#8220;Taking Stock.&#8221; Take a look!</p>
<p><a href="http://www.bloomberg.com/video/how-to-get-every-android-on-the-same-page-xitK8GI1SiWc94CqaJ76nA.html" target="_blank"><img class="aligncenter size-large wp-image-1099" alt="BTV2" src="http://apkudo.files.wordpress.com/2013/06/btv2.png?w=490" width="490" height="301" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mspotten.com/wordpress/how-to-get-every-android-on-the-same-page-bloomberg-tv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Josh Matthews on Bloomberg TV!</title>
		<link>http://mspotten.com/wordpress/josh-matthews-on-bloomberg-tv/</link>
		<comments>http://mspotten.com/wordpress/josh-matthews-on-bloomberg-tv/#comments</comments>
		<pubDate>Wed, 29 May 2013 13:50:27 +0000</pubDate>
		<dc:creator><![CDATA[mspotten]]></dc:creator>
				<category><![CDATA[Apkudo Approved]]></category>
		<category><![CDATA[Apkudo Buzz]]></category>
		<category><![CDATA[Apkudo for Developers]]></category>
		<category><![CDATA[Interviews]]></category>

		<guid isPermaLink="false">http://blog.apkudo.com/?p=1024</guid>
		<description><![CDATA[Apkudo CEO Josh Matthews sat down with Pimm Fox on Bloomberg Television&#8217;s &#8220;Taking Stock&#8221; yesterday to discuss the app economy and how Apkudo enables Android developers, OEMs, and carriers to optimizing the Android OS experience. See what Josh had to say! How Do You Define an App? Part 1 How Do You Define an App? Part 2 Thanks to everyone who tuned in to watch Josh on &#8220;Taking Stock!&#8221;]]></description>
				<content:encoded><![CDATA[<p>Apkudo CEO Josh Matthews sat down with Pimm Fox on Bloomberg Television&#8217;s &#8220;Taking Stock&#8221; yesterday to discuss the app economy and how Apkudo enables Android developers, OEMs, and carriers to optimizing the Android OS experience. See what Josh had to say!</p>
<p><a title="How Do You Define an App?" href="http://www.bloomberg.com/video/how-do-you-define-an-app-NLcR6mDkQTWI~hGmTn66Zg.html" target="_blank">How Do You Define an App? Part 1</a></p>
<p><a href="http://www.bloomberg.com/video/nowait-has-over-ten-million-patrons-uZc5zvKyT2GrOwyHNZ4ecw.html" target="_blank">How Do You Define an App? Part 2</a></p>
<p>Thanks to everyone who tuned in to watch Josh on &#8220;Taking Stock!&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://mspotten.com/wordpress/josh-matthews-on-bloomberg-tv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apkudo wants to address fragmentation by becoming the gold standard of smartphone hardware and software testing</title>
		<link>http://mspotten.com/wordpress/apkudo-wants-to-address-fragmentation-by-becoming-the-gold-standard-of-smartphone-hardware-and-software-testing/</link>
		<comments>http://mspotten.com/wordpress/apkudo-wants-to-address-fragmentation-by-becoming-the-gold-standard-of-smartphone-hardware-and-software-testing/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 15:40:58 +0000</pubDate>
		<dc:creator><![CDATA[mspotten]]></dc:creator>
				<category><![CDATA[Android Authority]]></category>
		<category><![CDATA[Apkudo Approved]]></category>
		<category><![CDATA[Apkudo for Developers]]></category>
		<category><![CDATA[Press Articles]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[androiddev]]></category>
		<category><![CDATA[Fragmentation]]></category>

		<guid isPermaLink="false">http://blog.apkudo.com/?p=1013</guid>
		<description><![CDATA[This article originally appeared April 20, 2013, on Android Authority Apkudo wants to address fragmentation by becoming the gold standard of smartphone hardware and software testing Ever wonder why not all carriers release their mobile devices at the same time? Or how about Android updates? While Google is now at version 4.2.2, some smartphones are still getting updates older than this one. It all boils down to carrier testing and certification. Carriers that have the resources would require testing whether devices meet their specifications — in terms of performance and compliance with their specific needs. This is also the reason...]]></description>
				<content:encoded><![CDATA[<p><em>This article originally appeared April 20, 2013, on Android Authority</em></p>
<h1>Apkudo wants to address fragmentation by becoming the gold standard of smartphone hardware and software testing</h1>
<p>Ever wonder why not all carriers release their mobile devices at the same time? Or how about Android updates? While Google is now at version 4.2.2, some smartphones are still getting updates older than this one. It all boils down to carrier testing and certification. Carriers that have the resources would require testing whether devices meet their specifications — in terms of performance and compliance with their specific needs. This is also the reason why manufacturers have to release separate updates for each carrier.</p>
<p>But testing does not come easy. According to Apkudo, it’s usually normal for tier 1 carriers to have the resources to run a battery of tests before declaring a device or update fit for their needs. Everyone else might not have the clout nor the resources to do so. This testing can be outsourced, however, which is exactly what a startup called Apkudo is doing. Apkudo aims to become the gold standard of device and application testing, so that developers and carriers do not have to waste their time and resources in doing the testing themselves. <a href="http://www.androidauthority.com/apkudo-vs-android-fragmentation-194452/" target="_blank"><em>Keep reading&#8230;</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mspotten.com/wordpress/apkudo-wants-to-address-fragmentation-by-becoming-the-gold-standard-of-smartphone-hardware-and-software-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apkudo Wants to Handle Android Fragmentation so Carriers and Developers Don&#8217;t Have To</title>
		<link>http://mspotten.com/wordpress/apkudo-wants-to-handle-android-fragmentation-so-carriers-and-developers-dont-have-to/</link>
		<comments>http://mspotten.com/wordpress/apkudo-wants-to-handle-android-fragmentation-so-carriers-and-developers-dont-have-to/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 15:13:39 +0000</pubDate>
		<dc:creator><![CDATA[mspotten]]></dc:creator>
				<category><![CDATA[Apkudo Approved]]></category>
		<category><![CDATA[Apkudo for Developers]]></category>
		<category><![CDATA[TechCrunch]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[androiddev]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[Fragmentation]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.apkudo.com/?p=1011</guid>
		<description><![CDATA[This article originally ran April 19, 2013, on TechCrunch Apkudo Wants to Handle Android Fragmentation so Carriers and Developers Don&#8217;t Have To Baltimore-based Apkudo is debuting its “Apkudo Approved” program this week, extending its existing work with making sure that Android apps and devices perform well for consumers. The company has positioned itself in a growth market, to act as a layer both between developers and devices, and between devices and carriers, to help both parties deal with the fractured and often maze-like landscape of the Android hardware market. Keep reading&#8230;]]></description>
				<content:encoded><![CDATA[<p><em>This article originally ran April 19, 2013, on <a href="http://techcrunch.com/2013/04/19/apkudo-wants-to-handle-android-fragmentation-so-carriers-and-developers-dont-have-to/" target="_blank">TechCrunch</a></em></p>
<h1>Apkudo Wants to Handle Android Fragmentation so Carriers and Developers Don&#8217;t Have To</h1>
<p>Baltimore-based <a href="http://apkudo.com/" target="_blank">Apkudo</a> is debuting its “Apkudo Approved” program this week, extending its existing work with making sure that Android apps and devices perform well for consumers. The company has positioned itself in a growth market, to act as a layer both between developers and devices, and between devices and carriers, to help both parties deal with the fractured and often maze-like landscape of the Android hardware market. <em><a href="http://techcrunch.com/2013/04/19/apkudo-wants-to-handle-android-fragmentation-so-carriers-and-developers-dont-have-to/" target="_blank">Keep reading&#8230;</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://mspotten.com/wordpress/apkudo-wants-to-handle-android-fragmentation-so-carriers-and-developers-dont-have-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fragmentation Fix: Apkudo on how it plans to make Android developers&#8217; lives a little easier</title>
		<link>http://mspotten.com/wordpress/fragmentation-fix-apkudo-on-how-it-plans-to-make-android-developers-lives-a-little-easier/</link>
		<comments>http://mspotten.com/wordpress/fragmentation-fix-apkudo-on-how-it-plans-to-make-android-developers-lives-a-little-easier/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 15:05:02 +0000</pubDate>
		<dc:creator><![CDATA[mspotten]]></dc:creator>
				<category><![CDATA[Apkudo Approved]]></category>
		<category><![CDATA[Apkudo for Developers]]></category>
		<category><![CDATA[Pocket Gamer]]></category>
		<category><![CDATA[Press Articles]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[androiddev]]></category>
		<category><![CDATA[Fragmentation]]></category>
		<category><![CDATA[game developers]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobile game developers]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://blog.apkudo.com/?p=1009</guid>
		<description><![CDATA[This article originally ran April 19, 2013, on Pocket Gamer Fragmentation Fix: Apkudo on how it plans to make Android developers&#8217; lives a little easier And for free, too Fragmentation has been an albatross around the figurative neck of Android for years now. Although the increasing popularity of certain Nexus devices has helped to some extent, the problem remains a pertinent one for mobile game developers operating on the platform. It&#8217;s an issue that Apkudo is looking to solve, both for developers and OEMs. Keep reading..]]></description>
				<content:encoded><![CDATA[<p><em>This article originally ran April 19, 2013, on <a href="http://www.pocketgamer.biz/r/PG.Biz/Apkudo+news/news.asp?c=50240" target="_blank">Pocket Gamer</a></em></p>
<h1>Fragmentation Fix: Apkudo on how it plans to make Android developers&#8217; lives a little easier</h1>
<h2>And for free, too</h2>
<p>Fragmentation has been an albatross around the figurative neck of Android for years now.</p>
<p>Although the increasing popularity of <a href="http://www.pocketgamer.biz/r/PG.Biz/Nexus+10/news.asp?c=50173" target="_blank">certain</a> Nexus devices has helped to some extent, the problem remains a pertinent one for mobile game developers operating on the platform.</p>
<p>It&#8217;s an issue that Apkudo is looking to solve, both for developers and OEMs. <em><a href="http://www.pocketgamer.biz/r/PG.Biz/Apkudo+news/news.asp?c=50240" target="_blank">Keep reading..</a><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://mspotten.com/wordpress/fragmentation-fix-apkudo-on-how-it-plans-to-make-android-developers-lives-a-little-easier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taming Android One Device at a Time &#8211; This is How We Do It</title>
		<link>http://mspotten.com/wordpress/taming-android-one-device-at-a-time-this-is-how-we-do-it/</link>
		<comments>http://mspotten.com/wordpress/taming-android-one-device-at-a-time-this-is-how-we-do-it/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 21:35:23 +0000</pubDate>
		<dc:creator><![CDATA[mspotten]]></dc:creator>
				<category><![CDATA[Apkudo for Developers]]></category>

		<guid isPermaLink="false">http://blog.apkudo.com/?p=946</guid>
		<description><![CDATA[The Apkudo For Developers (hereafter, AFD) backend is the brains behind your app tests. Made up of hundreds of devices networked together, this distributed system allows you to analyze your app&#8217;s performance and compatibility across the industry&#8217;s most comprehensive portfolio of Android devices. This post goes over some of what makes it tick, as well as some of what ticks us off—the problems we&#8217;ve run into while setting it up. Let’s Get Started We&#8217;ll start things off with a brief overview. The AFD backend consists primarily of a set of servers running custom software that allows us to manage, and,...]]></description>
				<content:encoded><![CDATA[<p>The Apkudo For Developers (hereafter, AFD) backend is the brains behind your app tests. Made up of hundreds of devices networked together, this distributed system allows you to analyze your app&#8217;s performance and compatibility across the industry&#8217;s most comprehensive portfolio of Android devices. This post goes over some of what makes it tick, as well as some of what ticks us off—the problems we&#8217;ve run into while setting it up.</p>
<h1>Let’s Get Started</h1>
<p>We&#8217;ll start things off with a brief overview. The AFD backend consists primarily of a set of servers running custom software that allows us to manage, and, more pertinently, automatically run your app on, a huge variety of Android devices.</p>
<p>In total, the backend comprises:</p>
<ul>
<li>1 job server</li>
<li>1 update server</li>
<li>27 runner servers</li>
<li>512 registered devices, about half of which are ready for active use (more on this later)</li>
<li>1 database server</li>
</ul>
<p>The job, update, and runner servers form the main part of the system, and we&#8217;ll explain them in more detail in a bit. The database server stores information about the devices, such as their location on our device racks and whether they&#8217;re currently activated. The devices themselves consist of a wide range of Android phones and tablets from both US and overseas markets.</p>
<p>In addition to our management software, the system also uses several tools and facilities provided by the Android project itself: the Android Debug Bridge (ADB), which is built into the Android operating system and allows a device to be controlled and monitored from a host computer; <em>logcat</em>, which offers similar functionality to the <em>syslog</em> facilities available on *nix systems, and <em>monkey</em>, which automatically generates input events for an Android device.</p>
<h1>Making it All Work</h1>
<p>We like to keep our devices as close to stock as possible; it is our policy not to root them unless there is some feature that&#8217;s absolutely required and isn&#8217;t available in the stock image. This is to ensure that the results we give you exemplify the typical user experience. The setup process for devices, therefore, consists mainly of recording asset information, ensuring that ADB is set up, and installing a device management app that allows us to control connectivity and screen settings, among others, on the device. Once this basic setup is complete, it&#8217;s time to plug the device into the AFD backend.</p>
<div id="attachment_963" style="width: 451px" class="wp-caption aligncenter"><a href="http://apkudo.files.wordpress.com/2013/03/datacenter.jpg"><img class=" wp-image-963 " alt="Each rack consists of 6 shelves, each holding up to 12 devices." src="http://apkudo.files.wordpress.com/2013/03/datacenter.jpg?w=490" width="441" height="588" /></a><p class="wp-caption-text">Each rack consists of 6 shelves, each holding up to 12 devices.</p></div>
<p>As well as the devices themselves, the backend comprises several types of servers working together. Runner servers are each in charge of managing ADB sessions for a small set of devices. This is necessary due physical and practical limitations that restrict the number of devices that can be plugged into a single host to about twelve. Runners are controlled by the job server, which manages and tracks the execution states of test runs across the entire set of devices. The job server is, in turn, controlled by the update server, which retrieves new test run requests from the frontend and passes them on. The servers may also be controlled manually by system admins, but in practice they generally operate autonomously.</p>
<p><a href="http://apkudo.files.wordpress.com/2013/03/backend.png"><img class="aligncenter size-large wp-image-961" alt="Apkudo Backend Diagram" src="http://apkudo.files.wordpress.com/2013/03/backend.png?w=490" width="490" height="465" /></a></p>
<p>Due to the inherent bottlenecks presented by the devices (only one app can be tested on a device at a time), the hardware requirements of the system are rather modest. The runner servers are a fleet of mid-2011 Mac minis, which are well suited to the task due to their compactness and availability. Software-wise, they run a minimal installation of Debian Squeeze due to memory and Bluetooth conflict issues in the OSX version that shipped with them. The job, update, and database servers are more &#8220;traditional&#8221; Xeon boxes with more RAM and processing power at their disposal, also running Squeeze. The servers communicate with each other, and are controlled, using custom Python programs we developed specifically for the AFD service (more on this to come in a later post).</p>
<p>Once a device is hooked up to the system, it is ready to start running apps. Exercising an app consists of installing it on a device; running <em>monkey</em> on the app; collecting performance data in the form of <em>monkey</em> and <em>logcat</em> logs; uninstalling the app; and returning the logs to the user in addition to a pass/fail analysis of the test run, if available.</p>
<p>Keeping devices charged requires a bit of juice, which is supplied by the powered USB hubs through which they are connected to the runner servers. The USB specification allows a device to draw up to 500mA while connected to a host, which is enough to keep most phones topped off.</p>
<h1>Biting the Hand That Defragments You</h1>
<p>Our goal at Apkudo is to reduce fragmentation in the Android market. Somewhat ironically, we often find ourselves disadvantaged by this same fragmentation, which frequently throws a wrench into our analytics works. We&#8217;re ultimately at the mercy of device manufacturers with regard to a number of components necessary to communicate with devices, many of which we are not able to alter if they exhibit problems.</p>
<p>Here are a few of the types of problems that we encounter fairly often:</p>
<ul>
<li><strong>The Android operating system itself</strong> is the biggest wildcard here, or at least the hardest to deal with. OEMs may modify the Android code any way they see fit before burning it to a device, and, since we don&#8217;t make any modifications to the stock image, we must work around any issues we encounter in these customized OSes. This can make it difficult, for example, to handle crashes that leave a device responsive to ADB but unable to perform any actions requested of it. In extreme cases, an issue with a customized OS image is cause to “fail” a device (addressed below), while in less severe ones sometimes-flaky software is the primary reason for variations in device count and installation failures during test runs.</li>
<li><strong>Freezes, restarts, and force-quits</strong> can leave a device in an inconsistent state, with settings changed and apps installed, which can lead to devices’ storage being filled and subsequent install fails.</li>
<li><strong><em>monkey</em> can sometimes break out of its “cage”</strong> (the command that restricts it to performing actions within a specified app) and wreak havoc on the OS at large, in some cases going so far as to disable ADB on the device. Other times, devices may turn themselves off entirely, due either to inactivity timers or dying batteries. This is another reason why devices may sometimes be unavailable, since we cannot change <em>monkey</em> or disable timers without modifying the operating system, and dead batteries take some time to charge.</li>
<li><strong>Hardware issues</strong> can also cause problems. <a title="Swollen battery." href="http://apkudo.files.wordpress.com/2013/03/bulge1.jpg" target="_blank">Swollen batteries</a> constitute a big subset of these, and usually coincide with OS freezes (although which issue causes which is still under investigation). Unfortunately, hardware issues usually require individual physical intervention and so take longer than software issues to resolve.</li>
</ul>
<p>Some devices have turned out to be incompatible with, or too unstable to function in, our testing system. These “failed” devices include many tablets, which often cannot charge when connected to a data transport. Other failed devices have versions of <em>monkey</em> which do not implement the options needed to sufficiently control their execution, or may have issues connection over ADB, even when reset to factory condition.</p>
<h1>Monitoring to the Rescue!</h1>
<p>While our software is quite adept at running apps on devices, there is a limit to what we can do programmatically once a device starts malfunctioning. This rings especially true when the malfunction involves ADB and cuts off communication to the device.</p>
<p>For situations like these, we have a set of tools that allow us to monitor the state of our devices remotely, particularly their ADB connectivity. For devices that may be connected to ADB but are otherwise uncooperative, we can also view the results of recent test runs, to discern devices that have consistently turned up &#8220;error&#8221; results, and we&#8217;re constantly on the lookout for techniques that may allow us to better determine a device&#8217;s internal state and whether it can be fixed automatically.</p>
<p>Monitoring is pointless without fixing, however. Most of the software problems we encounter are alleviated by running periodic tests and &#8220;cleaning cycles,&#8221; which ensure that the devices are running and communicating properly and are free of user apps. If that doesn’t fix a device, a factory reset is usually in order; most devices behave themselves afterward, at least for a while.</p>
<p>Hardware problems present a more difficult problem, and, obviously, can&#8217;t be fixed automatically. In this case our software can &#8220;deactivate&#8221; a device and ignore it until it is fixed and reactivated.</p>
<p>Failed devices are not discarded. They instead live in a sort of “limbo” state from which they may be activated if a solution is found to the problems they exhibit.</p>
<h1>In Conclusion</h1>
<p>Wrangling Android devices is tough business, as it turns out. As in any development project, the typical use case is quickly overshadowed by myriad edge cases that tend to cause mayhem whenever they surface.</p>
<p>The AFD backend was designed from the ground up to handle devices that are at times uncooperative, to say the least, and we strive to make as many devices available to developers as we can. To that end, our system is flexible, modular, and includes a variety of monitoring tools that let us know when a device is misbehaving so that we can get it back online ASAP.</p>
<p>If you have any further questions, feel free to ask in the comments.</p>
<p>Happy hacking,</p>
<p>Joe Tuzo<br />
Software Engineer</p>
]]></content:encoded>
			<wfw:commentRss>http://mspotten.com/wordpress/taming-android-one-device-at-a-time-this-is-how-we-do-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
