<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
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/">
	<channel>
		<title>Author at Infinum</title>
		<atom:link href="https://infinum.com/blog/author/marko-vitas/feed/" rel="self" type="application/rss+xml" />
		<link></link>
		<description>Building digital products</description>
		<lastBuildDate>Tue, 21 Apr 2026 11:36:52 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>8106https://infinum.com/uploads/2014/10/becoming-an-android-developer-0.webp</url>
				</image>
				<title>Becoming an Android Developer</title>
				<link>https://infinum.com/blog/becoming-an-android-developer/</link>
				<pubDate>Wed, 12 Nov 2014 09:27:00 +0000</pubDate>
				<dc:creator>Marko Vitas</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/becoming-an-android-developer/</guid>
				<description>
					<![CDATA[<p>Android, Android, Android&#8230; It&#8217;s everywhere &#8211; smartphones, watches, tablets, TVs&#8230; Android is getting sexier and more stable with each release.</p>
<p>The post <a href="https://infinum.com/blog/becoming-an-android-developer/">Becoming an Android Developer</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-236"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	Android, Android, Android… It’s everywhere – smartphones, watches, tablets, TVs… Android is getting sexier and more stable with each release and, with a ton of learning material available, this is a great time to start learning how to develop for this platform.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-96">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	The primary target audience of this article are fresh computer science graduates who are thinking about becoming professional Android developers. Basically, I wanted to write an article that I would have loved to have read 2.5 years ago, when I scored my first paid dev job.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-99">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-100'
	>
	In it, I present a roundup of facts and resources that will give you a clear picture of your future work scope. Start contributing quickly, experiment and enjoy yourself in the process.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-102">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-103'
	>
	<em>Note: consider this post a cheat sheet that you can come back to anytime.</em></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-109"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="blockquote block-blockquote__blockquote" data-id="es-105">
	
	<div class="blockquote__content">
		<i
	class="icon blockquote__icon icon--size-16 icon--scale-100"
	 aria-hidden='true' data-name='blockquote-24' data-id='es-106'>
	<svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-2.79685-.9568-5.37021-2.561-7.41062-.581.22951-1.0832.60583-1.5069 1.12898-.5132.60844-.7698 1.41969-.7698 2.43375v.07605h2.5789v5.59004h-5.6197v-5.01962c0-1.11547.154-2.06616.4619-2.85205.3336-.81125.757-1.48307 1.2702-2.01545.528-.52161 1.1175-.92155 1.7687-1.1998-2.0728-1.70651-4.7279-2.73128-7.6223-2.73128-6.62742 0-12 5.37258-12 12 0 6.6274 5.37258 12 12 12zm-3.53811-18.05347c-.30793.78589-.46189 1.73658-.46189 2.85205v5.01962h5.6197v-5.59004h-2.5789v-.07605c0-1.01406.2566-1.82531.7698-2.43375.5389-.63379 1.1804-1.05209 1.9245-1.2549v-2.28164c-.7441.07605-1.4626.25351-2.1555.53238-.6928.27887-1.3086.68449-1.84752 1.21688-.51321.53238-.9366 1.2042-1.27019 2.01545z' fill='currentColor' fill-rule='evenodd'/></svg></i><p	class='typography typography--size-36-text js-typography blockquote__quote'
	data-id='es-107'
	>
	This tutorial is a part of our ’Becoming a developer’ series. You can check out our previous article on Becoming a Ruby on Rails developer and Becoming an iOS developer</p>
		<div class="blockquote__caption-wrap">
					</div>
	</div>
</div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-112"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-110">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-111'
	>
	Know your tools, processes and your programming language</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-115"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-113">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-114'
	>
	Language</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-118"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-116">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-117'
	>
	<li>Read a book about Java, the primary programming language for developing Android apps. I recommend <a href="http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683">Effective Java</a> – read the chapters that you are interested in and feel free to jump around as much as you like.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-121"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-119">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-120'
	>
	Tools</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-124"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-122">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-123'
	>
	<li><a href="http://blog.stylingandroid.com/gradle-part-1/">Gradle</a> – Get to know your build system and its capabilities. Start with the basic stuff like handling dependencies and application flavors.</li><li><a href="http://git-scm.com/documentation">Git</a> – Put your code under version control and have a backup of your code in the cloud, no matter where you are. Learn some basics <a href="https://try.github.io/levels/1/challenges/1">here</a>.</li><li><a href="https://developer.android.com/sdk/installing/studio.html">Android Studio</a> and <a href="http://developer.android.com/sdk/index.html">Eclipse</a> – If you are used to working in Eclipse, feel free to try and set up a project in that IDE. You can find a tutorial made for Eclipse at the end of this article.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-127"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-125">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-126'
	>
	Here at Infinum, we prefer working in Android Studio. A couple of words from my colleague Željko about AS can be found <a href="https://infinum.com/blog/eclipse-is-dead-for-android-development-and-i-helped-kill-it/">here</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-130"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-128">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-129'
	>
	Processes</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-133"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-131">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-132'
	>
	Although a career in development probably sounds awesome, coping with deadlines and client expectations is something you have to live with on a daily basis. Check out this great <a href="https://infinum.com/blog/11-developer-tools-that-will-blow-your-mind/">article</a> by our JavaScript team leader (or dictator, as he likes to be called), in which he touches upon different challenges that await every developer.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-136"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-134">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-135'
	>
	It’s not all about the code</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-139"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-137">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-138'
	>
	I was sitting with our design team for a year (we had a smaller office back then and I was moved there with another colleague to handle a two-man project). During that period I started paying attention to the problems/challenges that designers have to cope with.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-142"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-140">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-141'
	>
	This helped me <strong>broaden my perspective</strong> and start seeing new stuff, like “where on earth is that pixel going”, “Oh no, you didn’t use that color/font”, etc.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-145"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-143">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-144'
	>
	Paying attention to design details (UI/UX) will make you a better developer overall because you’ll get a better understanding of the product development process as a whole.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-148"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-146">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-147'
	>
	<strong>You become more creative, and creativity is fun and essential for building great apps.</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-151"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-149">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-150'
	>
	<li><a href="https://www.youtube.com/user/androiddevelopers">Design in action</a> – search for Design in Action</li><li><a href="https://developer.android.com/design/patterns/index.html">Design patterns</a> – Google’s guidelines for making apps that behave in a consistent, predictable way</li><li><a href="http://www.google.com/design/spec/material-design/introduction.html">Material design</a> – the trend at the moment in Android UI/UX</li><li><a href="http://androidniceties.tumblr.com/">Android Niceties</a> – a collection of screenshots encompassing some of the most beautiful looking Android apps</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-154"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-152">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-153'
	>
	Some libs to start with, people to follow and a newsletter to subscribe to</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-157"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-155">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-156'
	>
	There are problems in software development that tend to repeat themselves. This is why we (developers) create libraries to help us reuse code, simplify the usage and speed up the development process. <a href="https://infinum.com/blog/top-5-android-libraries-every-android-developer-should-know-about/">Here</a> are some of our favorite libraries that we use in almost all of our projects.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-160"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-158">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-159'
	>
	At the end of this article, you can find some <strong>influential Android players</strong> too. I suggest you follow them on Twitter.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-163"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-161">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-162'
	>
	Check this out for some implementation tricks: <a href="https://www.youtube.com/results?search_query=devbytes+android&amp;page=&amp;utm_source=opensearch">DevBytes</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-166"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-164">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-165'
	>
	Here are some of the Android development community hot shots you should keep your eye on. I linked their Twitter accounts because that’s the easiest way to follow their work:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-169"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-167">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-168'
	>
	<li><a href="https://twitter.com/romannurik">Roman Nurik</a> – Design advocate at Google</li><li><a href="https://twitter.com/chethaase">Chet Haase</a> – Graphics geek, comedy communicator, Android animator</li><li><a href="https://twitter.com/JakeWharton">Jake Wharton</a></li><li><a href="https://twitter.com/retomeier">Reto Meier</a> – Head of Scalable Developer Advocacy at Google</li><li><a href="https://twitter.com/cyrilmottier">Cyril Mottier</a> – Lead Android software engineer at Capitaine Train</li><li><a href="https://twitter.com/droidxav">Xavier Ducrohet</a> – Android SDK Tech Lead</li><li><a href="https://twitter.com/jessewilson">Jesse Wilson</a></li><li><a href="https://twitter.com/romainguy">Romain Guy</a> – Working on awesome stuff at Google</li><li><a href="https://twitter.com/danlew42">Dan Lew</a> – Android @ Trello, GDE, gamer and geek</li><li><a href="https://twitter.com/chrisbanes">Chris Banes</a> – Developer relations guy for Android @ Google</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-172"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-170">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-171'
	>
	As for the newsletter – subscribe to <a href="http://androidweekly.net/">AndroidWeekly</a> to stay up to date with the hottest news in the development community.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-175"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-173">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-174'
	>
	Getting into the right mindset</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-178"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-176"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-177">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2014/10/becoming-an-android-developer-1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="320"
															width="568"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-181"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-179">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-180'
	>
	Let’s talk about “Increasing your chances of becoming an Android dev”.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-184"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-182">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-183'
	>
	Don’t overengineer</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-187"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-185">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-186'
	>
	There is a lot of stuff to read, study and try out. Try to find the best theory-practice pair cycle in order to learn quickly and try out new stuff. The right balance is achieved with time and trial and error.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-190"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-188">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-189'
	>
	Create tasks</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-193"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-191">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-192'
	>
	Tasks let you cross out stuff once you’re done and give you a great sense of accomplishment. Plus, creating tasks will improve your analytical skills over time and you will get much better at structuring work and scheduling time. Prioritize work. You’ll improve with time.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-196"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-194">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-195'
	>
	Retrospective</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-201"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="blockquote block-blockquote__blockquote" data-id="es-197">
	
	<div class="blockquote__content">
		<i
	class="icon blockquote__icon icon--size-16 icon--scale-100"
	 aria-hidden='true' data-name='blockquote-24' data-id='es-198'>
	<svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-2.79685-.9568-5.37021-2.561-7.41062-.581.22951-1.0832.60583-1.5069 1.12898-.5132.60844-.7698 1.41969-.7698 2.43375v.07605h2.5789v5.59004h-5.6197v-5.01962c0-1.11547.154-2.06616.4619-2.85205.3336-.81125.757-1.48307 1.2702-2.01545.528-.52161 1.1175-.92155 1.7687-1.1998-2.0728-1.70651-4.7279-2.73128-7.6223-2.73128-6.62742 0-12 5.37258-12 12 0 6.6274 5.37258 12 12 12zm-3.53811-18.05347c-.30793.78589-.46189 1.73658-.46189 2.85205v5.01962h5.6197v-5.59004h-2.5789v-.07605c0-1.01406.2566-1.82531.7698-2.43375.5389-.63379 1.1804-1.05209 1.9245-1.2549v-2.28164c-.7441.07605-1.4626.25351-2.1555.53238-.6928.27887-1.3086.68449-1.84752 1.21688-.51321.53238-.9366 1.2042-1.27019 2.01545z' fill='currentColor' fill-rule='evenodd'/></svg></i><p	class='typography typography--size-36-text js-typography blockquote__quote'
	data-id='es-199'
	>
	Restrospective means to take a look back at events that already have taken place.</p>
		<div class="blockquote__caption-wrap">
			<div	class='typography typography--size-12-text-roman js-typography blockquote__caption'
	data-id='es-200'
	>
	Wikipedia</div>		</div>
	</div>
</div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-204"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-202">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-203'
	>
	<li>Why would I do that?<br>To learn from it! When you start a project, open a new text file you can always access and write down interesting things that you found out during the project. At the end, check out what you were doing, reflect on it and put a conclusion there. Great tools for that are <a href="https://evernote.com/">Evernote</a> and <a href="http://www.onenote.com/">One Note</a>.</li><li>Learn from your mistakes<br>Improve over time. Think of your mistakes as feedback and it’s going to be much easier.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-207"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-205">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-206'
	>
	If you accomplish something great one day, acknowledge that as well. Don’t write down only failures. <strong>The retrospective helps you consume the knowledge that you have acquired and reflect on it in a proper and constructive way.</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-210"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-208">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-209'
	>
	Retrospective is a great tool, try it out!</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-213"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-211">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-212'
	>
	Finally, getting your hands dirty</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-216"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-214"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-215">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2014/10/becoming-an-android-developer-2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="320"
															width="432"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-219"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-217">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-218'
	>
	<li><a href="http://www.vogella.com/tutorials/Android/article.html">Vogella</a> An extensive article on Android. Well structured.<br><em>Note: the instructions are for Eclipse.</em></li><li><a href="http://developer.android.com/samples/index.html">Samples</a><br>Learn how to import a project in Android Studio, set it up properly and mess with it in order to try out the platform.</li><li><a href="http://blog.stylingandroid.com/layout-types-part-1-linearlayout/">Layouts</a> – learn how to work with layouts in the app</li><li>Lifecycle – <a href="http://developer.android.com/training/basics/activity-lifecycle/index.html">Activity</a> &amp; <a href="http://developer.android.com/training/basics/fragments/index.html">Fragments</a> – how do the view elements handle orientation changes, pausing the app, etc.</li><li><a href="https://infinum.com/about/">Android talks</a><br>Infinum’s internal education platform where we share best practices, tips and tricks about the Android platform and third party libraries. Simply, a must watch.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-222"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-220">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-221'
	>
	Conclusion:</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-225"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-223">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-224'
	>
	Learning to be a developer is a process that doesn’t involve only programming. It’s about finding the right information, optimizing the information flow, applying that info, writing code, trying out different approaches, making mistakes and learning from them. Thus, gaining experience all the time and <strong>iterating</strong> in the learning process.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-228"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-226">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-227'
	>
	Follow the instructions above and increase your chances of staying <strong>”in the flow”</strong>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-231"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-229">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-230'
	>
	<strong>Good luck!</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-234"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-232">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-233'
	>
	Follow me on Twitter: <a href="https://twitter.com/vitongs">@vitongs</a></p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/becoming-an-android-developer/">Becoming an Android Developer</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
					<item>
				<image>
					<url>8035https://infinum.com/uploads/2013/12/art-vs-dalvik-introducing-the-new-android-runtime-in-kit-kat-0.webp</url>
				</image>
				<title>ART vs Dalvik  Introducing the New Android Runtime in KitKat</title>
				<link>https://infinum.com/blog/art-vs-dalvik-introducing-the-new-android-runtime-in-kit-kat/</link>
				<pubDate>Wed, 04 Dec 2013 08:02:00 +0000</pubDate>
				<dc:creator>Marko Vitas</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/art-vs-dalvik-introducing-the-new-android-runtime-in-kit-kat/</guid>
				<description>
					<![CDATA[<p>As a part of Android 4.4 KitKat, Google decided to introduce Android ART, a new way of executing apps on top of the Android operating system.</p>
<p>The post <a href="https://infinum.com/blog/art-vs-dalvik-introducing-the-new-android-runtime-in-kit-kat/">ART vs Dalvik  Introducing the New Android Runtime in KitKat</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-332"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-237">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-240"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-238">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-239'
	>
	As a part of Android 4.4 KitKat, Google decided to introduce a new way of executing apps on top of the Android operating system. Let’s take a closer look at what this new runtime, called ART, brings to the table.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-243"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-241">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-242'
	>
	ART is Google’s 2-year-long ongoing secret project, which aims to boost the performance of our Android devices. It’s based on the premise that modern devices are pretty powerful in terms of CPU speed and memory capacity, especially in comparison with the first generation of Android devices.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-246"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-244">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-245'
	>
	A word from Google</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-249"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-247">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-248'
	>
	<em>ART is a new Android runtime being introduced experimentally in the 4.4 release KitKat. This is a preview of work in progress in KitKat. It is available for the purpose of obtaining early developer and partner feedback.</em> – Android developers</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-252"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-250">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-251'
	>
	In other words, <strong>ART is still an ongoing project</strong>, considered too unstable to be introduced as a standard runtime. Luckily, there is no special hacking involved to get it running.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-255"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-253">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-254'
	>
	You can choose to use it by going to “Settings&gt; Developer Options&gt; Select Runtime” and choosing ART.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-258"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-256"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-257">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2013/12/art-vs-dalvik-introducing-the-new-android-runtime-in-kit-kat-1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="311"
															width="384"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-261"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-259">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-260'
	>
	Hmmm, but why would I want to make the switch?</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-264"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-262">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-263'
	>
	ART vs Dalvik / AOT vs JIT</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-267"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-265">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-266'
	>
	Android apps are deployed in Dalvik bytecode, which is portable, unlike native code. In order to be able to run the app on a device, the code has to be compiled to machine code.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-270"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-268">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-269'
	>
	Dalvik is based on <strong>JIT (just in time) compilation</strong>. It means that each time you run an app, the part of the code required for its execution is going to be translated (compiled) to machine code at that moment. As you progress through the app, additional code is going to be compiled and cached, so that the system can reuse the code while the app is running. Since JIT compiles only a part of the code, it has a smaller memory footprint and uses less physical space on the device.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-273"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-271">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-272'
	>
	ART, on the other hand, compiles the intermediate language, Dalvik bytecode, into a <strong>system-dependent binary</strong>. The whole code of the app will be pre-compiled during install (once), thus removing the lag that we see when we open an app on our device. With no need for JIT compilation, the code should execute much faster.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-276"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-274">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-275'
	>
	Except for the potential speed increase, the use of ART can provide an important secondary benefit. As ART runs app machine code directly (native execution), it doesn’t hit the CPU as hard as just-in-time code compiling on Dalvik. Less CPU usage results in less battery drain, which is a big plus for portable devices in general.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-279"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-277">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-278'
	>
	So why wasn’t ART implemented earlier?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-282"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-280">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-281'
	>
	Let’s take a look at the downsides of AOT compilation.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-285"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-283">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-284'
	>
	First of all, the generated machine code requires more space than the existing bytecode. Moreover, the code is pre-compiled at install time, so the <strong>installation process takes a bit longer</strong>. Furthermore, it also corresponds to a larger memory footprint at execution time. This means that fewer apps run concurrently.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-288"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-286"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-287">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2013/12/art-vs-dalvik-introducing-the-new-android-runtime-in-kit-kat-2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="311"
															width="400"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-291"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-289">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-290'
	>
	When <strong>first Android devices</strong> hit the market (like HTC Magic shown in the picture), memory and storage capacity were significantly smaller and presented a bottleneck for performance. This is the reason why a JIT approach was the preferred option at that time. Today, memory is much cheaper and thus more abundant, even on low-end devices, so ART is a logical step forward.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-294"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-292">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-293'
	>
	Some concrete numbers and benchmarks</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-297"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-295">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-296'
	>
	The guys at Android Police made some nice benchmarks, and if you are interested in the exact numbers, check out the following <a href="http://www.androidpolice.com/2013/11/12/meet-art-part-2-benchmarks-performance-wont-blow-away-today-will-get-better/">link</a> for more info.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-300"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-298">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-299'
	>
	Let’s take a quick overview of the results of their benchmarks:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-303"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-301">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-302'
	>
	<li>increased speed in CPU floating operations by approx. 20%</li><li>increased speed in RAM operations by approx. 10%</li><li>increased speed in storage operations by approx. 10%</li><li>CPU integer operations &#8211; slight advantage goes to Dalvik</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-306"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-304">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-305'
	>
	Pretty neat, don’t you agree? There is one more hidden, but very important benefit of ART. When you ask iPhone users how they feel about the look and feel of Android smartphones, they often complain that <strong>Android feels laggy</strong>, despite the fact that hardware on both phones is top notch. Perceived lag/delay is the result of JIT compilation and it more or less disappears after switching to ART.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-309"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-307">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-308'
	>
	Any undesired impact on apps?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-312"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-310">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-311'
	>
	At the moment, there are reports that some apps are currently not working when you switch to ART, such as Whatsapp and Titanium Backup. I personally witnessed Whatsapp crashing each time on app startup, so I switched back to Dalvik again.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-315"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-313">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-314'
	>
	Impact on the development process</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-318"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-316">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-317'
	>
	Being an <a href="https://infinum.com/mobile-web-apps/"><strong>Android developer</strong></a>, each time I make some changes that I want to test, I have to install a new app instance on the device. As stated before, ART uses AOT compilation, which prolongs the install times of applications because the Dalvik bytecode gets compiled to machine code. Therefore, each time I deploy a new version of the app on my device, I have to wait for this additional time to pass so that the app optimizes for the ART runtime. This causes a significant delay in the deployment process.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-321"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-319">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-320'
	>
	Install times on my Nexus 4, for one of our larger projects, jumped from <strong>~17 s to ~25 s</strong>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-324"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-322">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-323'
	>
	Conclusion</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-327"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-325">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-326'
	>
	Personally, I saw an improvement in the speed and smoothness of scrolling in apps. ART makes the UI feel more responsive. At this time, Android ART is not fully optimized. I expect even <a href="https://infinum.com/blog/the-past-present-and-future-of-android-development/">better results in the future</a>, after Google acquires more feedback and makes additional optimizations. As I see it, end users will definitely benefit from the switch, once ART matures and gets more stable. However, developers, who frequently deploy apps, will feel more intensively the negative impact of prolonged install times.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-330"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-328">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-329'
	>
	Android 5.0 with ART fully functional? I surely hope so!</p></div>	</div>
</div>
</div>		</div>
	</div>

<div
	class="wrapper"
	data-id="es-335"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="lists" data-id="es-333">
	</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/art-vs-dalvik-introducing-the-new-android-runtime-in-kit-kat/">ART vs Dalvik  Introducing the New Android Runtime in KitKat</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
					<item>
				<image>
					<url>8140https://infinum.com/uploads/2014/02/app-ops-controlling-permissions-on-android-0.webp</url>
				</image>
				<title>App Ops  Controlling Permissions on Android</title>
				<link>https://infinum.com/blog/app-ops-controlling-permissions-on-android/</link>
				<pubDate>Mon, 14 Oct 2013 03:20:00 +0000</pubDate>
				<dc:creator>Marko Vitas</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/app-ops-controlling-permissions-on-android/</guid>
				<description>
					<![CDATA[<p>Android 4.3 brought us a hidden section in Settings which enables revoking of permissions used by installed apps.</p>
<p>The post <a href="https://infinum.com/blog/app-ops-controlling-permissions-on-android/">App Ops  Controlling Permissions on Android</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-431"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-336">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-339"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-337">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-338'
	>
	The new Android 4.3 brought us a hidden section in Settings which enables revoking of permissions used by installed apps. Let’s see what effect this will have on users, developers and companies when it comes to privacy, improved usability, profit and software design.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-342"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-340">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-341'
	>
	First of all, let’s see what the competition already has in comparison to App Ops. Afterwards, we will have a look at the current implementation of App Ops. Finally, we’ll cover benefits and drawbacks of this new feature and the extent of its impact on developers, users and Android as a whole.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-345"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-343">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-344'
	>
	iOS vs Android permissions</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-348"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-346"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-347">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2014/02/app-ops-controlling-permissions-on-android-1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="640"
															width="960"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-351"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-349">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-350'
	>
	Unlike Android, iOS doesn’t ask the user to accept app permissions when installing the app. On iOS, the user is prompted to allow the usage of private data only once the data is requested. In my opinion, this is a fine approach, because the user can see the specific moment when the permission is requested and, therefore, transparency is guaranteed.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-354"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-352">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-353'
	>
	Contrary to iOS, Android asks for permissions once, when the app is being installed, and doesn’t provide the user with the possibility to disable some permissions/features of the app later on.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-357"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-355">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-356'
	>
	This is all changed with a hidden feature released in version 4.3 (Jelly Bean), which allows users to revoke permissions after installing a particular app. If you are lucky enough to have an Android 4.3 device in your pocket, you can try App Ops Starter, a simple app which unlocks Google’s hidden App Ops interface for managing permissions of installed applications.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-360"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-358">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-359'
	>
	The guys from <a href="https://www.androidpolice.com/">Android Police</a> who discovered this feature also found a textual resource in the package manager, indicating that the user will also have the possibility to revoke permissions at the time of installation as well.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-363"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-361">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-362'
	>
	<strong>Please beware:</strong> when you start revoking app permissions, most, if not all, of your apps will crash and won’t be usable. That’s expected, because current versions of installed apps are not yet aware that their permissions can be forcefully revoked after installation.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-366"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-364">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-365'
	>
	Permission grouping</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-369"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-367">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-368'
	>
	iOS permissions are grouped in a pretty simple manner: <em>Location Services</em>, <em>Contacts</em>, <em>Calendars</em>, <em>Reminders</em>, <em>Photos</em>, <em>Bluetooth Sharing</em>, <em>Microphone</em>, <em>Twitter</em>, <em>Facebook</em> and <em>Push Notifications</em>. The user can revoke them at any time from the <em>Notification Center</em> (<em>Push Notifications</em>) and <em>Privacy</em> (all other permissions).</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-372"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-370"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-auto" data-id="es-371">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2014/02/app-ops-controlling-permissions-on-android-2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="960"
															width="640"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-375"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-373">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-374'
	>
	Android has quite a bit more of <a href="https://developer.android.com/reference/android/Manifest.permission.html">permissions</a> and it will be interesting to see how App Ops will group them in order to logically disable parts of the app. Will it follow the <a href="https://developer.android.com/reference/android/Manifest.permission_group.html">permission groups</a> that already exist or will it use a more fine grained approach with smaller groups of interest?</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-378"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-376">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-377'
	>
	App Ops appearance</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-381"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-379">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-380'
	>
	There are four handy tabs: <em>Location</em>, <em>Personal</em> (<em>Contacts</em>, <em>Accounts</em>), <em>Messaging</em> and <em>Device</em> (hardware features, such as camera). Each tab displays when an app used OS features or collected data.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-384"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-382"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-auto" data-id="es-383">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2014/02/app-ops-controlling-permissions-on-android-3.webp"
					class="image__img block-media__image-img"
					alt=""
										height="1280"
															width="768"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-387"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-385">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-386'
	>
	<strong>NOTE</strong>: Some permissions only appear in the permission list once they are first used.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-390"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-388">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-389'
	>
	Benefits and drawbacks</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-393"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-391">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-392'
	>
	So, it seems that selective permission handling on Android could be a great thing. The openness of the platform strikes once again and gives users the possibility to even more freely choose the interaction and behavior of apps installed on their smartphone or tablet. Let’s check some benefits and drawbacks of the current implementation of App Ops.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-396"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-394">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-395'
	>
	Benefits</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-399"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-397">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-398'
	>
	<li>It adds transparency to the whole interaction between the user and app, meaning that, in time, users should feel much safer about private data handling. This could push some of the more paranoid users to view Android as a viable platform.</li><li>In my opinion, the biggest benefit from App Ops in the long term is improved quality of code. I think that, in order to build apps which allow the user to turn permissions/features ON and OFF, we have to think a bit more about the architecture of the app we are building. In other words, we will have to focus our efforts on building modular architectures with plug and play capability.</li><li>Making apps compatible with App Ops will be mandatory, and that opens the opportunity for additional profit.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-402"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-400">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-401'
	>
	Drawbacks</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-405"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-403">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-404'
	>
	<li>Many apps crash at the moment.</li><li>No real way of knowing that the user has revoked permissions through App Ops (current methods still return that the permission is available) → tech support hell</li><li>Blindly catching null pointers? Ha, Google?</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-408"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-406">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-407'
	>
	Third party players</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-411"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-409">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-410'
	>
	<li>Manufacturers with custom Android versions will most probably remove App Ops in order to limit the user’s possibility to mess around with their custom launchers and apps.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-414"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-412">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-413'
	>
	So what to expect on the horizon</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-417"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-415">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-416'
	>
	As stated before, in the long term, App Ops could provide a nice boost in terms of quality of code, as it will force a more modular approach in <a href="https://infinum.com/mobile-web-apps/">app development</a>, which will reflect in a plug-in architecture dev approach/design.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-420"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-418">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-419'
	>
	Android will benefit in the way that users will see that Google cares about their privacy and freedom of choice by forcing software companies to adapt. Users just have to sit back, relax, and wait for the change.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-423"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-421">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-422'
	>
	The biggest drawback will once again be slower adoption of the feature due to Android fragmentation. Some users won’t be able to update to the latest version of the OS and some will be left out intentionally by some Android device vendors.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-426"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-424">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-425'
	>
	Overall, the reputation of the platform should see a positive boost and push the competition further away.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-429"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-427">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-428'
	>
	Stay tuned for updates!</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/app-ops-controlling-permissions-on-android/">App Ops  Controlling Permissions on Android</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>