25 Mar 2017

feedAndroid Community

Play and party with Blu and Jewel in this new ‘Rio: Match 3 Party’ puzzle game

We'll never get tired of playing match-3 puzzle games. Yup, they may be too easy but admit it, such challenges are enjoyable and even therapeutic for some. No need to flex your muscles that much. You only need to show speed and agility. Daring you to be swift and smooth again is Blu from the […]

25 Mar 2017 5:00pm GMT

‘Crash of Cars’ gets you destroying other players before you’re done

'Crash of Cars' is another racing game that is best for those who enjoy multiplayer challenges. You can play alone but there's not much fun in that. In this new game from Not Doppler, your main goal is to collect a lot of crowns as much as possible. You will be destroyed soon but do […]

25 Mar 2017 4:00pm GMT

Google Assistant arrives for OnePlus 3, ask it anything

So Google's entry to the digital voice assistant wars - that is, Google Assistant - just arrived on the OnePlus 3. This means that OnePlus 3 users are getting the same digital assistant capabilities as with the Google Pixel. OnePlus recently announced this via a tweet. If you remember Google Assistant, the mothership was hyping […]

25 Mar 2017 3:00pm GMT

Nextbit Robin gets ‘final’ Nougat version in Build 88, rolling out now

An official stable update is rolling out to the Nextbit Robin, and Nextbit is calling it the "Final Nougat version". What they mean by that we will have to find out, but just the same, this update is rolling out to your Nextbit Robin devices at time of writing. Nextbit has rolled out Build 88, […]

25 Mar 2017 2:00pm GMT

Android O Developer Preview 1 gets rooted via SuperSU

Chainfire has released a version of SuperSU that allows you to gain root access on a Nexus 5X or a Nexus 6P with Android O Developer Preview 1 installed. It might take us a while, getting used to all these news about Android O, but this part of the Android developer community is certainly moving […]

25 Mar 2017 1:00pm GMT

Android Security was better in 2016, but there is no rest for Google in this area

Google recently released its yearly review of Android Security for 2016, and it says that the situation has gotten marginally better last year. But Google has set for itself a target of cleaning up "unwanted software" in 2017, so this means that the fight to secure Android will be a continuous task. Google says that […]

25 Mar 2017 12:00pm GMT

Samsung will start disabling battery charge on unsurrendered Galaxy Note 7

If you're part of the 3% of Galaxy Note 7 owners in South Korea that have not returned their devices to Samsung, you probably will finally stop using the phablet later this month. The OEM has announced that in a software update to be released later this month, the users will not be able to […]

25 Mar 2017 11:00am GMT

CAPCOM releases Wolf of the Battlefield: Commando for mobile

CAPCOM continues to release port after port of its arcade classics, the third of this four-game series is "Wolf of the Battlefield: Commando". Most gamers who grew up playing arcade video games will remember Commando, a simple yet challenging vertical-scrolling shooter. This game, as with the others before it, is discounted in the first day […]

25 Mar 2017 2:30am GMT

T-Mobile launches new Scam ID and Scam Block technology

Every phone must have Scam ID and Scam Block. Thank heavens for such services from T-Mobile because believe it or not, even if "talking on the phone" is not as popular as before, there are still companies who do phone marketing. If not legit advertising, there are scammers who will try to woo you into […]

25 Mar 2017 2:00am GMT

feedTalkAndroid

[Video] Unboxing the Moto G5 Plus

Lenovo's Moto G5 Plus is set to be one of the best mid-range phones of the year. If you're wanting to get an advance look at it. be sure to join us for a full unboxing after the break. The device itself went up for pre-order in the US just a couple of days ago. […]


Come comment on this article: [Video] Unboxing the Moto G5 Plus

Visit TalkAndroid

25 Mar 2017 1:51am GMT

feedAndroid Community

Instagram brings screen over “sensitive” posts, 2-factor authentication

While Instagram is probably one of the most vibrant communities in the world of social media, there have also been a lot of problems when it comes to online bullying, cyber stalking, and even just the simple art of commenting (there are a lot of mean people out there). The brand has made a conscious […]

25 Mar 2017 1:20am GMT

feedTalkAndroid

Alcatel A30, Moto G5 Plus join Amazon’s roster of Prime Exclusive phones

Amazon announced today that the Alcatel A30 and Moto G5 Plus are joining its roster of ad-subsidized Prime Exclusive smartphones. These two phones will be joining a handful of others in the program - the BLU R1 HD, Moto G4 and Moto G4 Play. Amazon Prime members will see discounts on the Alcatel A30 and […]


Come comment on this article: Alcatel A30, Moto G5 Plus join Amazon's roster of Prime Exclusive phones

Visit TalkAndroid

25 Mar 2017 12:43am GMT

feedAndroid Community

Samsung Galaxy S8 up for pre-order in Netherlands, Belgium starting March 29

Less than a week before the official unveiling and Samsung fans are excited to know when the Galaxy S8 will be up for pre-order and then released in the market. We were told it will be released April 21 after the April 10 pre-order. We know it will be announced on March 29 and we […]

25 Mar 2017 12:40am GMT

‘Construction Simulator 2’ allows you to be a construction tycoon

Construction Simulator 2 lets you become a construction business owner. For a short period of time, you can see for yourself how challenging it is to be one. It's not easy because you need to operate and maintain large vehicles from big brands like Caterpillar, Bell, Atlas, Still, Palfinger, and Liebherr. In case you're not […]

25 Mar 2017 12:00am GMT

24 Mar 2017

feedAndroid Community

Power Rangers: Legacy Wars is a pretty entertaining fighting game

You might have already seen the new Power Rangers movie out in theaters these past few days, so naturally you would be expecting a partner game to hype the movie - and we have that in Power Rangers: Legacy Wars. You would expect the game to suck as well, because most tie-in games do, but […]

24 Mar 2017 11:20pm GMT

Google Hangouts to disallow carrier SMS texting beginning May 22

Google is finally ditching the SMS text messaging available on Hangouts. The Android version specifically will no longer allow the feature beginning May 22, 2017. This news was shared over on a Reddit thread since a member posted an email update he received from Google. Carrier texting has been a helpful and efficient feature but […]

24 Mar 2017 10:40pm GMT

feedTalkAndroid

T-Mobile upgrades their network with phone scam protection

T-Mobile is rolling out a couple of new features for all customers on their network today in an effort to help cut down on spam and scam calls. Bonus points, this should also help slim down the number of customers that are cheated out of money from these scams, which reportedly costs Americans millions of […]


Come comment on this article: T-Mobile upgrades their network with phone scam protection

Visit TalkAndroid

24 Mar 2017 10:00pm GMT

feedAndroid Community

Nova Launcher Beta gets Dynamic Badges, a different take to notification counts

App icon badges are becoming a thing now, because we all want that little bit of extra information when we glance at our home screens. Icon badges are those small appendages to your app icon that usually show you how many notifications you have, and they usually appear as small red numbers. Nova Launcher is […]

24 Mar 2017 10:00pm GMT

feedTalkAndroid

Watch someone type on the Samsung Galaxy S8

The clock is ticking. The leaks keep coming. It's not too common for a device to be exposed on video, but an individual managed to get their hands on the Samsung Galaxy S8 and recorded a touch sensitivity test. It's a captivating 9-second clip. Here's the video: Tap, tap, tap Alright, so this is a […]


Come comment on this article: Watch someone type on the Samsung Galaxy S8

Visit TalkAndroid

24 Mar 2017 9:10pm GMT

feedAndroid Community

Urban Armor Gear intros Plasma series phone case for LG G6

Over a month ago we spotted new phone cases for the unannounced Samsung Galaxy S8. The images gave us a glimpse of the upcoming premium flagship from the South Korean tech giant. This time, its main rival LG G6 is also getting protective cases from Urban Armor Gear. Recently sighted on the website is the […]

24 Mar 2017 9:00pm GMT

feedTalkAndroid

Movado-made smartwatches for Hugo Boss, Tommy Hilfiger are official

High-end smartwatches from two high-end brands are coming this fall, and they're both created by an experienced watchmaker. Movado revealed earlier this month that, in addition to its Connect collection, it would produce two smartwatches on behalf of two outside brands. Now they're official. The Hugo Boss Touch and Tommy Hilfiger TH24/7You were announced today […]


Come comment on this article: Movado-made smartwatches for Hugo Boss, Tommy Hilfiger are official

Visit TalkAndroid

24 Mar 2017 8:16pm GMT

Twitter is trying to fight Google, Amazon, and Facebook from stealing NFL games

Another bidding war involving the NFL is happening. Every time the NFL puts streaming rights up for grabs, the biggest companies in consumer technology immediately rush to hold conversations with the league. We've seen it before. We're seeing it again. The NFL, according to Recode, has received proposals from multiple companies interested in gaining streaming […]


Come comment on this article: Twitter is trying to fight Google, Amazon, and Facebook from stealing NFL games

Visit TalkAndroid

24 Mar 2017 7:26pm GMT

[Deal] Best Buy takes 75% off an Incipio case for the Moto G5 Plus

The phone itself isn't discounted, but a case for the Moto G5 Plus is being included for almost nothing at all. Best Buy, one of Lenovo's strongest retail partners, is hosting a promotion that takes 75% off an Incipio case for the Moto G5 Plus that's being released on March 31. All you have to […]


Come comment on this article: [Deal] Best Buy takes 75% off an Incipio case for the Moto G5 Plus

Visit TalkAndroid

24 Mar 2017 6:34pm GMT

Lenovo’s Moto G5 Plus goes up for pre-order in the U.S.

Lenovo's Moto G5 Plus, which will likely end up being 2017's best mid-range phone, just went up for pre-order in the United States. It's the phone to buy if you're looking to unchain yourself from carriers while not spending a fortune. The Moto G5 Plus continues the series' path to success by offering average-yet-admirable specifications […]


Come comment on this article: Lenovo's Moto G5 Plus goes up for pre-order in the U.S.

Visit TalkAndroid

24 Mar 2017 6:16pm GMT

Say hello to the Movado Connect with Android Wear, available this Fall

There are a lot of companies building Android Wear smartwatches, but it is often a phone manufacturer creating a watch that goes a long with their device lineup. Recently, more traditional watch brands are stepping into the ring with their own versions and Movado has just took the wraps off their upcoming Android Wear smartwatch: the Movado […]


Come comment on this article: Say hello to the Movado Connect with Android Wear, available this Fall

Visit TalkAndroid

24 Mar 2017 5:12pm GMT

SMS support leaves Hangouts on May 22

It's the end of Hangouts as we know it. While Google claims it still has a future for ordinary consumers, Hangouts for Android devices will be losing SMS support on May 22. An email sent to G Suite administrators says that, later this spring, you'll no longer be able to send and receive ordinary texts […]


Come comment on this article: SMS support leaves Hangouts on May 22

Visit TalkAndroid

24 Mar 2017 3:56pm GMT

Huawei Mate 9 review: The U.S. perspective

Huawei's devices have been primarily targeted at European and Asian markets, but the company has more recently been trying to enter the US market. The Mate 9 is, without a doubt, one of Huawei's few flagship devices that have made it to the US, but unfortunately, it hasn't really made as many waves as, say, […]


Come comment on this article: Huawei Mate 9 review: The U.S. perspective

Visit TalkAndroid

24 Mar 2017 2:49pm GMT

Michael Kors Grayson and Sofie smartwatches are official

Android Wear 2.0 has given a shot of adrenaline to the smartwatch market, and Michael Kors is the next brand to toss a few new options into the mix. They've announced the Grayson and Sofie watches to join the Access line of smartwatches. The Grayson is aimed at men and offers a pretty slick metal […]


Come comment on this article: Michael Kors Grayson and Sofie smartwatches are official

Visit TalkAndroid

24 Mar 2017 2:00pm GMT

Fossil is releasing a ton of smartwatches in 2017

Android Wear 2.0 was Google's attempt to kickstart the smartwatch market (on the Android side of things, anyway) and so far we've definitely seen a renewed interest from hardware partners. Fossil is following that up with a slew of new watches they're planning on releasing in 2017, giving consumers options on top of options. When […]


Come comment on this article: Fossil is releasing a ton of smartwatches in 2017

Visit TalkAndroid

24 Mar 2017 1:00pm GMT

[TA Deals] Grab a lifetime subscription to VPNSecure for $39! (91% off)

Searching for the perfect way to browse the web quietly and securely? Get a VPN! If you go through a public connection, you could be compromising personal data and get into big problems. So, to prevent that, shop with us and find the right VPN service for you. VPNSecure is available on Talk Android Deals […]


Come comment on this article: [TA Deals] Grab a lifetime subscription to VPNSecure for $39! (91% off)

Visit TalkAndroid

24 Mar 2017 1:00pm GMT

Nextbit Robin owners will see Android 7.0 Nougat very soon

Nextbit Robin owners will be excited to hear that Android 7.0 Nougat is just around the corner. The final build is being rolled out to beta testers now, and if everything is squared away, that means all Nextbit Robin owners could see the update very soon. If you're a beta tester, you should see an […]


Come comment on this article: Nextbit Robin owners will see Android 7.0 Nougat very soon

Visit TalkAndroid

24 Mar 2017 1:34am GMT

23 Mar 2017

feedAndroid Developers Blog

5 Tips for launching successful apps and games on Google Play

Posted by Adam Gutterman, Go-To-Market Strategic Lead, Google Play Games

Last month at the Game Developers Conference (GDC), we held a developer panel focused on sharing best practices for building successful app and game businesses. Check out 5 tips for developers, both large and small, as shared by our gaming partners at Electronic Arts (EA), Hutch Games, Nix Hydra, Space Ape Games and Omnidrone.



1. Test, test, test

The best time to test, is before you launch; so test boldly and test a lot! Nix Hydra recommends testing creative, including art style and messaging, as well as gameplay mechanics, onboarding flows and anything else you're not sure about. Gathering feedback from real users in advance of launching can highlight what's working and what can be improved to ensure your game's in the best shape possible at launch.

2. Store listing experiments

Run experiments on all of your store listing page assets. Taking bold risks instead of making assumptions allows you to see the impact of different variables with your actual user base on Google Play. Test in different regions to ensure your store listing page is optimized for each major market, as they often perform differently.

3. Early Access program

Space Ape Games recently used Early Access to test different onboarding experiences and gameplay control methods in their game. Finding the right combination led them to double-digit growth in D1 retention. Gathering these results in advance of launch helped the team fine tune and polish the game, minimizing risk before releasing to the masses.

"Early Access is cool because you can ask the big questions and get real answers from real players," Joe Raeburn, Founding Product Guy at Space Ape Games.


Watch the Android Developer Story below to hear how Omnidrone benefits from Early Access using strong user feedback to improve retention, engagement and monetization in their game.


Mobile game developer Omnidrone benefits from Early Access.

4. Pre-registration

Electronic Arts has run more than 5 pre-registration campaigns on Google Play. Pre-registration allows them to start marketing and build awareness for titles with a clear call-to-action before launch. This gives them a running start on launch day having built a group of users to activate upon the game's release resulting in a jump in D1 installs.

5. Seek feedback

All partners strongly recommended seeking feedback early and often. Feedback tells both sides of the story, by pointing out what's broken as well as what you're doing right. Find the right time and channels to request feedback, whether they be in-game, social, email, or even through reading and responding to reviews within the Google Play store.

If you're a startup who has an upcoming launch on Google Play or has launched an app or game recently and you're interested in opportunities like Early Access and pre-registration, get in touch with us so we can work with you.

Watch sessions from Google Developer Day at GDC17 on the Android Developers YT channel to learn tips for success. Also, visit the Android Developers website to stay up-to-date with features and best practices that will help you grow a successful business on Google Play.


How useful did you find this blogpost?


23 Mar 2017 5:00pm GMT

22 Mar 2017

feedAndroid Developers Blog

Diverse protections for a diverse ecosystem: Android Security 2016 Year in Review

Posted by Adrian Ludwig & Mel Miller, Android Security Team

Today, we're sharing the third annual Android Security Year In Review, a comprehensive look at our work to protect more than 1.4 billion Android users and their data.

Our goal is simple: keep our users safe. In 2016, we improved our abilities to stop dangerous apps, built new security features into Android 7.0 Nougat, and collaborated with device manufacturers, researchers, and other members of the Android ecosystem. For more details, you can read the full Year in Review report or watch our webinar.



Protecting you from PHAs


It's critical to keep people safe from Potentially Harmful Apps (PHAs) that may put their data or devices at risk. Our ongoing work in this area requires us to find ways to track and stop existing PHAs, and anticipate new ones that haven't even emerged yet.
Over the years, we've built a variety of systems to address these threats, such as application analyzers that constantly review apps for unsafe behavior, and Verify Apps which regularly checks users' devices for PHAs. When these systems detect PHAs, we warn users, suggest they think twice about downloading a particular app, or even remove the app from their devices entirely.

We constantly monitor threats and improve our systems over time. Last year's data reflected those improvements: Verify Apps conducted 750 million daily checks in 2016, up from 450 million the previous year, enabling us to reduce the PHA installation rate in the top 50 countries for Android usage.

Google Play continues to be the safest place for Android users to download their apps. Installs of PHAs from Google Play decreased in nearly every category:
  • Now 0.016 percent of installs, trojans dropped by 51.5 percent compared to 2015
  • Now 0.003 percent of installs, hostile downloaders dropped by 54.6 percent compared to 2015
  • Now 0.003 percent of installs, backdoors dropped by 30.5 percent compared to 2015
  • Now 0.0018 percent of installs, phishing apps dropped by 73.4 percent compared to 2015
By the end of 2016, only 0.05 percent of devices that downloaded apps exclusively from Play contained a PHA; down from 0.15 percent in 2015.

Still, there's more work to do for devices overall, especially those that install apps from multiple sources. While only 0.71 percent of all Android devices had PHAs installed at the end of 2016, that was a slight increase from about 0.5 percent in the beginning of 2015. Using improved tools and the knowledge we gained in 2016, we think we can reduce the number of devices affected by PHAs in 2017, no matter where people get their apps.

New security protections in Nougat


Last year, we introduced a variety of new protections in Nougat, and continued our ongoing work to strengthen the security of the Linux Kernel.

  • Encryption improvements: In Nougat, we introduced file-based encryption which enables each user profile on a single device to be encrypted with a unique key. If you have personal and work accounts on the same device, for example, the key from one account can't unlock data from the other. More broadly, encryption of user data has been required for capable Android devices since in late 2014, and we now see that feature enabled on over 80 percent of Android Nougat devices.
  • New audio and video protections: We did significant work to improve security and re-architect how Android handles video and audio media. One example: We now store different media components into individual sandboxes, where previously they lived together. Now if one component is compromised, it doesn't automatically have permissions to other components, which helps contain any additional issues.
  • Even more security for enterprise users: We introduced a variety of new enterprise security features including "Always On" VPN, which protects your data from the moment your device boots up and ensures it isn't traveling from a work phone to your personal device via an insecure connection. We also added security policy transparency, process logging, improved wifi certification handling, and client certification improvements to our growing set of enterprise tools.

Working together to secure the Android ecosystem

Sharing information about security threats between Google, device manufacturers, the research community, and others helps keep all Android users safer. In 2016, our biggest collaborations were our monthly security updates program and ongoing partnership with the security research community.

Security updates are regularly highlighted as a pillar of mobile security-and rightly so. We launched our monthly security updates program in 2015, following the public disclosure of a bug in Stagefright, to help accelerate patching security vulnerabilities across devices from many different device makers. This program expanded significantly in 2016:
  • More than 735 million devices from 200+ manufacturers received a platform security update in 2016.
  • We released monthly Android security updates throughout the year for devices running Android 4.4.4 and up-that accounts for 86.3 percent of all active Android devices worldwide.
  • Our carrier and hardware partners helped expand deployment of these updates, releasing updates for over half of the top 50 devices worldwide in the last quarter of 2016.
We provided monthly security updates for all supported Pixel and Nexus devices throughout 2016, and we're thrilled to see our partners invest significantly in regular updates as well. There's still a lot of room for improvement however. About half of devices in use at the end of 2016 had not received a platform security update in the previous year. We're working to increase device security updates by streamlining our security update program to make it easier for manufacturers to deploy security patches and releasing A/B updates to make it easier for users to apply those patches.

On the research side, our Android Security Rewards program grew rapidly: we paid researchers nearly $1 million dollars for their reports in 2016. In parallel, we worked closely with various security firms to identify and quickly fix issues that may have posed risks to our users.

We appreciate all of the hard work by Android partners, external researchers, and teams at Google that led to the progress the ecosystem has made with security in 2016. But it doesn't stop there. Keeping you safe requires constant vigilance and effort. We're looking forward to new insights and progress in 2017 and beyond.

22 Mar 2017 2:00pm GMT

21 Mar 2017

feedAndroid Developers Blog

O-MG, the Developer Preview of Android O is here!

Posted by Dave Burke, VP of Engineering

Since the first launch in 2008, the Android project has thrived on the incredible feedback from our vibrant ecosystems of app developers and device makers, as well as of course our users. More recently, we've been pushing hard on improving our engineering processes so we can share our work earlier and more openly with our partners.

So, today, I'm excited to share a first developer preview of the next version of the OS: Android O. The usual caveats apply: it's early days, there are more features coming, and there's still plenty of stabilization and performance work ahead of us. But it's booting :).

Over the course of the next several months, we'll be releasing updated developer previews, and we'll be doing a deep dive on all things Android at Google I/O in May. In the meantime, we'd love your feedback on trying out new features, and of course testing your apps on the new OS.

What's new in O?

Android O introduces a number of new features and APIs to use in your apps. Here's are just a few new things for you to start trying in this first Developer Preview:

Background limits: Building on the work we began in Nougat, Android O puts a big priority on improving a user's battery life and the device's interactive performance. To make this possible, we've put additional automatic limits on what apps can do in the background, in three main areas: implicit broadcasts, background services, and location updates. These changes will make it easier to create apps that have minimal impact on a user's device and battery. Background limits represent a significant change in Android, so we want every developer to get familiar with them. Check out the documentation on background execution limits and background location limits for details.

Notification channels: Android O also introduces notification channels, which are new app-defined categories for notification content. Channels let developers give users fine-grained control over different kinds of notifications - users can block or change the behavior of each channel individually, rather than managing all of the app's notifications together.

Notification channels let users control your app's notification categories

Android O also adds new visuals and grouping to notifications that make it easier for users to see what's going on when they have an incoming message or are glancing at the notification shade.

Autofill APIs: Android users already depend on a range of password managers to autofill login details and repetitive information, which makes setting up new apps or placing transactions easier. Now we are making this work more easily across the ecosystem by adding platform support for autofill. Users can select an autofill app, similar to the way they select a keyboard app. The autofill app stores and secures user data, such as addresses, user names, and even passwords. For apps that want to handle autofill, we're adding new APIs to implement an Autofill service.

PIP for handsets and new windowing features: Picture in Picture (PIP) display is now available on phones and tablets, so users can continue watching a video while they're answering a chat or hailing a car. Apps can put themselves in PiP mode from the resumed or a pausing state where the system supports it - and you can specify the aspect ratio and a set of custom interactions (such as play/pause). Other new windowing features include a new app overlay window for apps to use instead of system alert window, and multi-display support for launching an activity on a remote display.

Font resources in XML: Fonts are now a fully supported resource type in Android O. Apps can now use fonts in XML layouts as well as define font families in XML - declaring the font style and weight along with the font files.

Adaptive icons: To help you integrate better with the device UI, you can now create adaptive icons that the system displays in different shapes, based on a mask selected by the device. The system also animates interactions with the icons, and uses them in the launcher, shortcuts, Settings, sharing dialogs, and in the overview screen.

Adaptive icons display in a variety of shapes across different device models.

Wide-gamut color for apps: Android developers of imaging apps can now take advantage of new devices that have a wide-gamut color capable display. To display wide gamut images, apps will need to enable a flag in their manifest (per activity) and load bitmaps with an embedded wide color profile (AdobeRGB, Pro Photo RGB, DCI-P3, etc.).

Connectivity: For the ultimate in audio fidelity, Android O now also supports high-quality Bluetooth audio codecs such as LDAC codec. We're also adding new Wi-Fi features as well, like Wi-Fi Aware, previously known as Neighbor Awareness Networking (NAN). On devices with the appropriate hardware, apps and nearby devices can discover and communicate over Wi-Fi without an Internet access point. We're working with our hardware partners to bring Wi-Fi Aware technology to devices as soon as possible.

The Telecom framework is extending ConnectionService APIs to enable third party calling apps integrate with System UI and operate seamlessly with other audio apps. For instance, apps can have their calls displayed and controlled in different kinds of UIs such as car head units.

Keyboard navigation: With the advent of Google Play apps on Chrome OS and other large form factors, we're seeing a resurgence of keyboard navigation use within these apps. In Android O we focused on building a more reliable, predictable model for "arrow" and "tab" navigation that aids both developers and end users.

AAudio API for Pro Audio: AAudio is a new native API that's designed specifically for apps that require high-performance, low-latency audio. Apps using AAudio read and write data via streams. In the Developer Preview we're releasing an early version of this new API to get your feedback.

WebView enhancements: In Android Nougat we introduced an optional multiprocess mode for WebView that moved the handling of web content into an isolated process. In Android O, we're enabling multiprocess mode by default and adding an API to let your app handle errors and crashes, for enhanced security and improved app stability. As a further security measure, you can now opt in your app's WebView objects to verify URLs through Google Safe Browsing.

Java 8 Language APIs and runtime optimizations: Android now supports several new Java Language APIs, including the new java.time API. In addition, the Android Runtime is faster than ever before, with improvements of up to 2x on some application benchmarks.

Partner platform contributions: Hardware manufacturers and silicon partners have accelerated fixes and enhancements to the Android platform in the O release. For example, Sony has contributed more than 30 feature enhancements including the LDAC codec and 250 bug fixes to Android O.

Get started in a few simple steps

First, make your app compatible to give your users a seamless transition to Android O. Just download a device system image or emulator system image, install your current app, and test -- the app should run and look great, and handle behavior changes properly. After you've made any necessary updates, we recommend publishing to Google Play right away without changing the app's platform targeting.

Building with Android O

When you're ready, dive in to O in depth to learn about everything you can take advantage of for your app. Visit the O Developer Preview site for details on the preview timeline, behavior changes, new APIs, and support resources.

Plan how your app will support background limits and other changes. Try out some of the great new features in your app -- notification channels, PIP, adaptive icons, font resources in XML, autosizing TextView, and many others. To make it easier to explore the new APIs in Android O, we've brought the API diff report online, along with the Android O API reference.

The latest canary version of Android Studio 2.4 includes new features to help you get started with Android O. You can download and set up the O preview SDK from inside Android Studio, then use Android O's XML font resources and autosizing TextView in the Layout Editor. Watch for more Android O support coming in the weeks ahead.

We're also releasing an alpha version of the 26.0.0 support library for you to try. This version adds a number of new APIs and increases the minSdkversion to 14. Check out the release notes for details.

Preview updates

The O Developer Preview includes an updated SDK with system images for testing on the official Android Emulator and on Nexus 5X, Nexus 6P, Nexus Player, Pixel, Pixel XL and Pixel C devices. If you're building for wearables, there's also an emulator for testing Android Wear 2.0 on Android O.

We plan to update the preview system images and SDK regularly throughout the O Developer Preview. This initial preview release is for developers only and not intended for daily or consumer use, so we're making it available by manual download and flash only. Downloads and instructions are here.

As we get closer to a final product, we'll be inviting consumers to try it out as well, and we'll open up enrollments through Android Beta at that time. Stay tuned for details, but for now please note that Android Beta is not currently available for Android O.

Give us your feedback

As always, your feedback is crucial, so please let us know what you think - the sooner we hear from you, the more of your feedback we can integrate. When you find issues, please report them here. We've moved to a more robust tool, Issue Tracker, which is also used internally at Google to track bugs and feature requests during product development. We hope you'll find it easier to use.

21 Mar 2017 8:30pm GMT

Introducing Android Native Development Kit r14

Posted by Dan Albert, Android NDK Tech Lead

Android NDK r14


The latest version of the Android Native Development Kit (NDK), Android NDK r14, is now available for download. It is also available in the SDK manager via Android Studio.

So what's new in r14? The full changelog can be seen here, but the highlights include the following:
  • Updated all the platform headers to unified headers (covered in detail below)
  • LTO with Clang now works on Darwin and Linux
  • libc++ has been updated. You can now use thread_local for statics with non-trivial destructors (Clang only)
  • RenderScript is back!

Unified Headers

We've completely redone how we ship platform header files in the NDK. Rather than having one set of headers for every target API level, there's now a single set of headers. The availability of APIs for each Android platform is guarded in these headers by #if __ANDROID_API__ >= __ANDROID_API_FOO__ preprocessor directives.

The prior approach relied on periodically-captured snapshots of the platform headers. This meant that any time we fixed a header-only bug, the fix was only available in the latest version aside from the occasional backport. Now bugfixes are available regardless of your NDK API level.

Aside from bugfixes, this also means you'll have access to modern Linux UAPI headers at every target version. This will mostly be important for people porting existing Linux code (especially low-level things). Something important to keep in mind: just because you have the headers doesn't mean you're running on a device with a kernel new enough to support every syscall. As always with syscalls, ENOSYS is a possibility.

Beyond the Linux headers, you'll also have modern headers for OpenGL, OpenSLES, etc. This should make it easier to conditionally use new APIs when you have an older target API level. The GLES3 headers are now accessible on Ice Cream Sandwich even though that library wasn't available until KitKat. You will still need to use all the API calls via dlopen/dlsym, but you'll at least have access to all the constants and #defines that you would need for invoking those functions.
Note that we'll be removing the old headers from the NDK with r16, so the sooner you file bugs, the smoother the transition will go.

Caveats

The API #ifdef guards do not exist in third-party headers like those found in OpenGL. In those cases you'll receive a link time error (undefined reference) rather than a compile time error if you use an API that is not available in your targeted API level.

Standalone toolchains using GCC are not supported out of the box (nor will they be). To use GCC, pass -D__ANDROID_API__=$API when compiling.

Enabling Unified Headers in Your Build

To ease the transition from the legacy headers to the unified headers, we haven't enabled the new headers by default, though we'll be doing this in r15. How you opt-in to unified headers will depend on your build system.

ndk-build


In your Application.mk:

    APP_UNIFIED_HEADERS := true
You can also set this property from the command-line like this:

    $ ndk-build APP_UNIFIED_HEADERS=true

If you're using ndk-build via Gradle with externalNativeBuild, specify the following configuration settings in build.gradle:

    android {
      ...
      defaultConfig {
        ...
        externalNativeBuild {
          ndkBuild {
            ...
            arguments "APP_UNIFIED_HEADERS=true"
          }
        }
      }
    }

CMake

When configuring your build, set ANDROID_UNIFIED_HEADERS=ON. This will usually take the form of invoking CMake with cmake -DANDROID_UNIFIED_HEADERS=ON $OTHER_ARGS.

If you're using CMake via Gradle with externalNativeBuild, you can use:

    android {
      ...
      defaultConfig {
        ...
        externalNativeBuild {
          cmake {
            ...
            arguments "-DANDROID_UNIFIED_HEADERS=ON"
          }
        }
      }
    }

Standalone Toolchains

When creating your standalone toolchain, pass --unified-headers. Note that this option is not currently available in the legacy script, make-standalone-toolchain.sh, but only in make_standalone_toolchain.py.

Experimental Gradle Plugin

Coming soon! Follow along here.

Custom Build System?

We've got you covered. Instructions on adding support for unified headers to your build system can be found here.

For additional information about unified headers, see our docs and the tracking bug. If you're looking ahead to future releases, the most up-to-date version of the documentation is in the master branch.

21 Mar 2017 8:00pm GMT

16 Mar 2017

feedAndroid Developers Blog

Android Developer Story: LinkedIn uses Android Studio to build a performant app

Posted by Christopher Katsaros, Developer Marketing, Android


LinkedIn is the world's largest social network for professionals. LinkedIn has 10 apps on Google Play, including the flagship LinkedIn app, which provides all of the same features users find on the web, so users can do things like browse and send messages to their professional network with an improved user experience.

For LinkedIn, and other teams with a large number of developers adding code to a project, making sure that everyone pays attention to areas that affect performance is vital for the quality of their app. That's why the the LinkedIn mobile team uses Android Studio to build high quality Android apps.

Watch Pradeepta Dash, Engineering Manager for Infrastructure at LinkedIn, as well as Drew Hannay, Tech Lead for the Android Infrastructure team, talk about how Android Studio helps everyone on their team stay focused on these topics while getting new engineers quickly up and running:


The top Android developers use Android Studio to build powerful, successful apps for Google Play; you can learn more about the official IDE for Android app development, and get started for yourself.

Get more tips and watch more success stories in the Playbook for Developers app.

How useful did you find this blogpost?


16 Mar 2017 5:00pm GMT

15 Mar 2017

feedAndroid Developers Blog

Grow your app or game business on Google Play with new best practices


Posted by Dom Elliott, Developer Marketing, Google Play


We've updated the Android Developers website with some useful information about Google Play and the Google Play Developer Console for new and existing developers alike.
Visit the site to understand more about:

The updated business guide to succeeding on Google Play is full of best practices and success stories from other developers grouped into five objectives. Here are a few new articles to check out:
Head to the best practice guide to check out more of the articles. We'll continue to post useful best practices and success stories here on the blog and to the guide so you can read them on the web or in the Playbook app. To stay up-to-date with our news and tips, opt in to emails from Google Play in the Developer Console (or subscribe here if you don't have a developer account).


How useful did you find this blogpost?


15 Mar 2017 9:13pm GMT

14 Mar 2017

feedAndroid Developers Blog

Future of Java 8 Language Feature Support on Android

Posted by James Lau, Product Manager

At Google, we always try to do the right thing. Sometimes this means adjusting our plans. We know how much our Android developer community cares about good support for Java 8 language features, and we're changing the way we support them.

We've decided to add support for Java 8 language features directly into the current javac and dx set of tools, and deprecate the Jack toolchain. With this new direction, existing tools and plugins dependent on the Java class file format should continue to work. Moving forward, Java 8 language features will be natively supported by the Android build system. We're aiming to launch this as part of Android Studio in the coming weeks, and we wanted to share this decision early with you.

We initially tested adding Java 8 support via the Jack toolchain. Over time, we realized the cost of switching to Jack was too high for our community when we considered the annotation processors, bytecode analyzers and rewriters impacted. Thank you for trying the Jack toolchain and giving us great feedback. You can continue using Jack to build your Java 8 code until we release the new support. Migrating from Jack should require little or no work.

We hope the new plan will pave a smooth path for everybody to take advantage of Java 8 language features on Android. We'll share more details when we release the new support in Android Studio.

14 Mar 2017 9:17pm GMT

13 Mar 2017

feedAndroid Developers Blog

Detecting and eliminating Chamois, a fraud botnet on Android

Posted by Security Software Engineers-Bernhard Grill, Megan Ruthven, and Xin Zhao



Google works hard to protect users across a variety of devices and environments. Part of this work involves defending users against Potentially Harmful Applications (PHAs), an effort that gives us the opportunity to observe various types of threats targeting our ecosystem. For example, our security teams recently discovered and defended users of our ads and Android systems against a new PHA family we've named Chamois.

Chamois is an Android PHA family capable of:
  • Generating invalid traffic through ad pop ups having deceptive graphics inside the ad
  • Performing artificial app promotion by automatically installing apps in the background
  • Performing telephony fraud by sending premium text messages
  • Downloading and executing additional plugins

Interference with the ads ecosystem

We detected Chamois during a routine ad traffic quality evaluation. We analyzed malicious apps based on Chamois, and found that they employed several methods to avoid detection and tried to trick users into clicking ads by displaying deceptive graphics. This sometimes resulted in downloading of other apps that commit SMS fraud. So we blocked the Chamois app family using Verify Apps and also kicked out bad actors who were trying to game our ad systems.
Our previous experience with ad fraud apps like this one enabled our teams to swiftly take action to protect both our advertisers and Android users. Because the malicious app didn't appear in the device's app list, most users wouldn't have seen or known to uninstall the unwanted app. This is why Google's Verify Apps is so valuable, as it helps users discover PHAs and delete them.

Under Chamois's hood

Chamois was one of the largest PHA families seen on Android to date and distributed through multiple channels. To the best of our knowledge Google is the first to publicly identify and track Chamois.
Chamois had a number of features that made it unusual, including:
  • Multi-staged payload: Its code is executed in 4 distinct stages using different file formats, as outlined in this diagram.

This multi-stage process makes it more complicated to immediately identify apps in this family as a PHA because the layers have to be peeled first to reach the malicious part. However, Google's pipelines weren't tricked as they are designed to tackle these scenarios properly.
  • Self-protection: Chamois tried to evade detection using obfuscation and anti-analysis techniques, but our systems were able to counter them and detect the apps accordingly.
  • Custom encrypted storage: The family uses a custom, encrypted file storage for its configuration files and additional code that required deeper analysis to understand the PHA.
  • Size: Our security teams sifted through more than 100K lines of sophisticated code written by seemingly professional developers. Due to the sheer size of the APK, it took some time to understand Chamois in detail.

Google's approach to fighting PHAs

Verify Apps protects users from known PHAs by warning them when they are downloading an app that is determined to be a PHA, and it also enables users to uninstall the app if it has already been installed. Additionally, Verify Apps monitors the state of the Android ecosystem for anomalies and investigates the ones that it finds. It also helps finding unknown PHAs through behavior analysis on devices. For example, many apps downloaded by Chamois were highly ranked by the DOI scorer. We have implemented rules in Verify Apps to protect users against Chamois.
Google continues to significantly invest in its counter-abuse technologies for Android and its ad systems, and we're proud of the work that many teams do behind the scenes to fight PHAs like Chamois.

We hope this summary provides insight into the growing complexity of Android botnets. To learn more about Google's anti-PHA efforts and further ameliorate the risks they pose to users, devices, and ad systems, keep an eye open for the upcoming "Android Security 2016 Year In Review" report.

13 Mar 2017 8:00pm GMT

02 Mar 2017

feedAndroid Developers Blog

Android Studio 2.3

By Jamal Eason, Product Manager, Android

Android Studio 2.3 is available to download today. The focus for this release is quality improvements across the IDE. We are grateful for all your feedback so far. We are committed to continuing to invest in making Android Studio fast & seamless for the millions of Android app developers across the world.

We are most excited about the quality improvements in Android Studio 2.3 but you will find a small set of new features in this release that integrate into each phase of your development flow. When designing your app, take advantage of the updated WebP support for your app images plus check out the updated ConstraintLayout library support and widget palette in the Layout Editor. As you are developing, Android Studio has a new App Link Assistant which helps you build and have a consolidated view of your URIs in your app. While building and deploying your app, use the updated run buttons for a more intuitive and reliable Instant Run experience. Lastly, while testing your app with the Android Emulator, you now have proper copy & paste text support.

What's new in Android Studio 2.3

For more detail about the features we added on top of the quality improvements Android Studio 2.3, check out the list of the new features below:
Build
  • Instant Run Improvements and UI Changes: As a part of our focus on quality, we have made some significant changes to Instant Run in Android Studio 2.3 to make the feature more reliable. The Run action will now always cause an application restart to reflect changes in your code that may require a restart, and the new Apply Changes action will attempt to swap the code while your app keeps running. The underlying implementation has changed significantly to improve on reliability, and we have also eliminated the startup lag for Instant Run enabled apps. Learn more.
New Instant Run Button Actions
  • Build Cache: Introduced but disabled by default in Android Studio 2.2, Build Cache is an underlying build optimization for faster builds in Android Studio. By caching exploded AARs and pre-dexed external libraries, the new build cached leads to faster clean builds. This is a user-wide build cache that is now turned on by default with Android Studio 2.3. Learn more.
Design
  • Chains and Ratios support in Constraint Layout: Android Studio 2.3 includes the stable release of ConstraintLayout With this release of ConstraintLayout, you can now chain two or more Android views bi-directionally together to form a group on one dimension. This is helpful when you want when you want to place two views close together but want to spread them across empty space. Learn more.
Constraint Layout Chains

ConstraintLayout also supports ratios, which is helpful when you want to maintain the aspect ratio of widget as the containing layout expands and contracts. Learn more about ratios. Additionally, both Chains and Ratios in ConstraintLayout can support programmatic creating with ConstraintSet APIs.

Constraint Layout Ratios

  • Layout Editor Palette: The updated widget palette in the Layout Editor allows you to search, sort and filter to find widgets for your layouts, plus gives you a preview of the widget before dragging on to the design surface. Learn more.

Layout Editor Widget Palette

  • Layout Favorites: You can now save your favorite attributes per widget in the updated Layout Editor properties panel. Simply star an attribute in the advanced panel and it will appear under the Favorites section. Learn more.

Favorites Attributes on Layout Editor Properties Panel
  • WebP Support: To help you save space in your APK, Android Studio can now generate WebP images from PNG assets in your project. The WebP lossless format is up to 25% smaller than a PNG. With Android Studio 2.3, you have a new wizard that converts PNG to lossless WebP and also allows you to inspect lossy WebP encoding as well. Right-click on any non-launcher PNG file to convert to WebP. And if you need to edit the image, you can also right-click on any WebP file in your project to convert back to PNG. Learn more.
WebP Image Conversion Wizard

  • Material Icon Wizard Update: The updated vector asset wizard supports search and filtering, plus it includes labels for each icon asset. Learn more.
Vector Asset Wizard

Develop
  • Lint Baseline: With Android Studio 2.3, you can set unresolved lint warnings as a baseline in your project. From that point forward, Lint will report only new issues. This is helpful if you have many legacy lint issues in your app, but just want to focus on fixing new issues. Learn more about Lint baseline and the new Lint checks & annotations added in this release.
Lint Baseline Support
  • App Links Assistant: Supporting Android App Links in your app is now easier with Android Studio. The new App Links Assistant allows you to easily create new intent filters for your URLs, declare your app's website association through a Digital Asset Links file, and test your Android App Links support. To access the App Link Assistant go to the following menu location: ToolsApp Link Assistant. Learn more.
App Links Assistant
  • Template Updates: By default, all templates in Android Studio 2.3 which use to contain RelativeLayout, now use ConstraintLayout. Learn more about templates and Constraint Layout. We have also added a new Bottom Navigation Activity template, which implements the Bottom Navigation Material Design guideline.

New Project Wizard Templates
  • IntelliJ Platform Update: Android Studio 2.3 includes the IntelliJ 2016.2 release, which has enhancements such as an updated inspection window and a notifications system. Learn more.
Test
  • Android Emulator Copy & Paste: Back by popular demand, we added back the Copy & Paste feature to the latest Emulator (v25.3.1). We have a shared clipboard between the Android Emulator and host operating system, which will allow you to copy text between both environments. Copy & Paste works with x86 Google API Emulator system images API Level 19 (Android 4.4 - Kitkat) and higher.

Copy & Paste support in Android Emulator

  • Android Emulator Command Line Tools: Starting with Android SDK Tools 25.3, we have moved the emulator from the SDK Tools folder into a separate emulator directory, and also deprecated and replaced the "android avd" command with a standalone avdmanager command. The previous command line parameters for emulator and "android avd" will work with the updated tools. We have also added location redirects for the emulator command. However, if you create Android Virtual Devices (AVDs) directly through the command line you should update any corresponding scripts. If you are using the Android Emulator through Android Studio 2.3, these change will not impact your workflow. Learn more.

To recap, Android Studio 2.3 includes these new features and more:

Develop
Build
Design
Test

Learn more about Android Studio 2.3 by reviewing the release notes.

Getting Started

Download
If you are using a previous version of Android Studio, you can check for updates on the Stable channel from the navigation menu (Help → Check for Update [Windows/Linux] , Android Studio → Check for Updates [OS X]). You can also download Android Studio 2.3 from the official download page. To take advantage of all the new features and improvements in Android Studio, you should also update to the Android Gradle plugin version to 2.3.0 in your current app project.
We appreciate any feedback on things you like, issues or features you would like to see. Connect with us -- the Android Studio development team -- on our Google+ page or on Twitter.

02 Mar 2017 10:12pm GMT

01 Mar 2017

feedAndroid Developers Blog

Getting Santa Tracker Into Shape


Posted by Sam Stern, Developer Programs Engineer

Santa Tracker is a holiday tradition at Google. In addition to bringing seasonal joy to millions of users around the world, it's a yearly testing ground for the latest APIs and techniques in app development. That's why the full source of the app is released on Github every year.


In 2016, the Santa team challenged itself to introduce new content to the app while also making it smaller and more efficient than ever before. In this post, you can read about the road to a more slimmer, faster Santa Tracker.

APK Bloat

Santa Tracker has grown over the years to include the visual and audio assets for over a dozen games and interactive scenes. In 2015, the Santa Tracker APK size was 66.1 MB.


The Android Studio APK analyzer is a great tool to investigate what made the 2015 app so large.

Screenshot from 2017-02-01 11:59:09.png


First, while the APK size is 66.1 MB, we see that the download size is 59.5MB! The majority of that size is in the resources folder, but assets and native libraries contribute a sizable piece.


The 2016 app contains everything that was in the 2015 app while adding four completely new games. At first, we assumed that making the app smaller while adding all of that would be impossible, but (spoiler alert!) here are the final results for 2016:

Screenshot from 2017-02-01 12:06:23.png


The download size for the app is now nearly 10MB smaller despite the addition of four new games and a visual refresh. The rest of this section will explore how we got there.

Multiple APK Support on Google Play with APK Splits

The 2015 app added the "Snowdown" game by Google's Fun Propulsion Labs team. This game is written in C++, so it's included in Santa Tracker as a native library. The team gave us compiled libraries for armv5, armv7, and x86 architectures. Each version was about 3.5MB, which adds up to the 10.5MB you see in the lib entry for the 2015 APK.


Since each device is only using one of these architectures, two thirds of the native libraries could be removed to save space - the tradeoff here is that we'll publish multiple APKs. The Android gradle build system has native support for building an APK for each architecture (ABI) with only a few lines of configuration in the app's build.gradle file:

ext.abiList = ['armeabi', 'armeabi-v7a', 'x86']
android {
// ...
splits {
abi {
// Enable ABI splits
enable true
// Include the three architectures that we support for snowdown
reset()
include(*abiList)
// Also build a "universal" APK that will run on any device
universalApk true
}
}
}


Once splits are enabled, each split needs to be given a unique version code so that they can co-exist in the Play Store:

// Generate unique versionCodes for each APK variant: ZXYYSSSSS
// Z is the Major version number
// X is the Minor version number
// YY is the Patch version number
// SSSS is information about the split (default to 0000)
// Any new variations get added to the front
import com.android.build.OutputFile;
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
// Shift abi over by 8 digits
def abiFilter = output.getFilter(OutputFile.ABI)
int abiVersionCode = (abiList.indexOf(abiFilter) + 1)
// Merge all version codes
output.versionCodeOverride = variant.mergedFlavor.versionCode + abiVersionCode
}
}


In the most recent version of Santa Tracker, we published versions for armv5, armv7, and x86 respectively. With this change in place, 10.5MB of native libraries was reduced to about 4MB per variant without losing any functionality.

Optimize Images

The majority of the Santa Tracker APK is image resources. Each game has hundreds of images, and each image comes in multiple sizes for different screen densities. Almost all of these images are PNGs, so in past years we ran PNGCrush on all of the files and figured our job was done. We learned in 2016 that there have been advancements in lossless PNG compression, and Google's zopfli tool is currently the state of the art.


By running zopflipng on all PNG assets we losslessly reduced the size of most images by 10% and some by as much as 30%. This resulted in almost a 5MB size reduction across the app without sacrificing any quality. For instance this image of Santa was losslessly reduced from 10KB to only 7KB. Don't bother trying to spot the differences, there are none!


Before (10.2KB)
After (7.4KB)
santa-before.png
santa-before-zopfli.png


Unused Resources

When working on Santa Tracker engineers are constantly refactoring the app, adding and removing pieces of logic and UI from previous years. While code review and linting help to find unused code, unused resources are much more likely to slip by unnoticed. Plus there is no ProGuard for resources, so we can't be saved by our toolchain and unused images and other resources often sneak into the app.


Android Studio can help to find resources that are not being used and are therefore bloating the APK. By clicking Analyze > Run Inspection by Name > Unused Resources Android Studio will identify resources that are not used by any known codepaths. It's important to first eliminate all unused code, as resources that are "used" by dead code will not be detected as unused.


After a few cycles of analysis with Android Studio's helpful tools, we were able to find dozens of unused files and eliminate a few more MB of resources from the app.

Memory Usage

Santa Tracker is popular all around the world and has users on thousands of unique Android devices. Many of these devices are a few years old and have 512MB RAM or less, so we have historically run into OutOfMemoryErrors in our games.


While the optimizations above made our PNGs smaller on disk, when loaded into a Bitmap their memory footprint is unchanged. Since each game in Santa Tracker loads dozens of images, we quickly get into dangerous memory territory.


In 2015 six of our top ten crashes were memory related. Due to the optimizations below (and others) we moved memory crashes out of the top ten altogether.

Image Loading Backoff

When initializing a game in Santa Tracker we often load all of the Bitmaps needed for the first scene into memory so that the game can run smoothly. The naive approach looks like this:


private LruCache<Integer, Drawable> mMemoryCache;
private BitmapFactory.Options mOptions;
public void init() {
// Initialize the cache
mMemoryCache = new LruCache<Integer, Drawable>(240);
// Start with no Bitmap sampling
mOptions = new BitmapFactory.Options();
mOptions.inSampleSize = 1;
}
public void loadBitmap(@DrawableRes int id) {
// Load bitmap
Bitmap bmp = BitmapFactory.decodeResource(getResources(), id, mOptions);
BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bmp);
// Add to cache
mMemoryCache.put(id, bitmapDrawable);
}


However the decodeResource function will throw an OutOfMemoryError if we don't have enough RAM to load the Bitmap into memory. To combat this, we catch these errors and then try to reload all of the images with a higher sampling ratio (scaling by a factor of 2 each time):

private static final int MAX_DOWNSAMPLING_ATTEMPTS = 3;
private int mDownsamplingAttempts = 0;
private Bitmap tryLoadBitmap(@DrawableRes int id) throws Exception {
try {
return BitmapFactory.decodeResource(getResources(), id, mOptions);
} catch (OutOfMemoryError oom) {
if (mDownSamplingAttempts < MAX_DOWNSAMPLING_ATTEMPTS) {
// Increase our sampling by a factor of 2
mOptions.inSampleSize *= 2;
mDownSamplingAttempts++;
}
}
throw new Exception("Failed to load resource ID: " + resourceId);
}


With this technique low-memory devices will now see more pixelated graphics, but by making this tradeoff we almost completely eliminated memory errors from Bitmap loading.

Transparent Pixels

As mentioned above, an image's size on disk is not a good indicator of how much memory it will use. One glaring example is images with large transparent regions. PNG can compress these regions to near-zero disk size but each transparent pixel still demands the same RAM.


For example in the "Dasher Dancer" game, animations were represented by a series of 1280x720 PNG frames. Many of these frames were dominated by transparency as the animated object left the screen. We wrote a script to trim all of the transparent space away and record an "offset" for displaying each frame so that it would still appear to be 1280x720 overall. In one test this reduced runtime RAM usage of the game by 60MB! And now that we were not wasting memory on transparent pixels, we needed less downscaling and could use higher-resolution images on low-memory devices.

Additional Explorations

In addition to the major optimizations described above, we explored a few other avenues for making the app smaller and faster with varying degrees of success.

Splash Screens

The 2015 app moved to a Material Design aesthetic where games were launched from a central list of 'cards'. We noticed that half of the games would cause the card 'ripple' effect to be janky on launch, but we couldn't find the root cause and were unable to fix the issue.


When work on the 2016 version of the app we were determined to fix the game jank launch. After hours of investigation, we realized it was only the games fixed to the landscape orientation that caused jank when launched. The dropped frames were due to the forced orientation change. To create a smooth user experience, we introduced splash screens in between the launcher Activity and game Activities. The splash screen would detect the current device orientation and the orientation needed to play the game being loaded and rotate itself at runtime to match. This immediately removed any noticeable jank from game launches and made the whole app feel smoother.

SVG

When we originally took on the task of reducing the size of our resources, using SVG images seemed like an obvious optimization. Vector images are dramatically smaller and only need to be included once to support multiple densities. Due to the 'flat' aesthetic in Santa Tracker, we were even able to convert many of our PNGs to tiny SVGs without much quality loss. However loading these SVGs was completely impractical on slower devices, where they would be tens or hundreds of times slower than a PNG depending on the path complexity.


In the end we decided to follow the recommendation limiting vector image sizes at 200x200 dp and only used SVG for small icons in the app rather than large graphics or game assets.

Conclusions

When we started building Santa Tracker 2016 we were faced with a daunting problem: how can we make the app smaller and faster while adding exciting new content? The optimizations above were discovered by constantly challenging each other to do more with less and considering resource constraints with every change we made. In the end we were able to incrementally make the Santa Tracker app as healthy as it has ever been ... our next job will be helping Mr. Claus work off all that extra cookie weight.

01 Mar 2017 9:56pm GMT

27 Feb 2017

feedAndroid Developers Blog

Welcome to Google Developer Day at Game Developer Conference 2017

Posted by Paul Bankhead, Director, Product Management, Google Play

Mobile gaming is more popular than ever. Over the past year, we saw breakout hits, including Pokemon GO, Star Wars: Galaxy of Heroes, Clash Royale and Reigns introduce new, high quality gaming experiences on Google Play. Gamers around the world were also able to access Google Play more easily than ever before, helping developers reach a larger audience and grow their businesses. In 2016, nearly 300 million new (30 day active) users adopted Android devices from emerging markets such as India, Brazil, and Indonesia. And last year, more than 100 million new users were able to access locally relevant forms of payments (such as direct carrier billing or gift cards) helping more people globally access and buy their favorite apps and games on Google Play.

We've also focused heavily on polishing our software and hardware offerings to improve the overall gaming experience on Android. The release of Nougat delivered high-performance realtime 3D graphics with the Vulkan API and the launch of Pixel phones provided the first Daydream-ready devices tailored for immersive mobile VR. Elsewhere, the expansion of Firebase provided the tools and infrastructure to support developers throughout the lifecycle of their game with features like real-time analytics, push notifications, storage, and ads. To streamline the integration, Firebase is now completely available for C++ and Unity developers.
NEW FEATURES TO HELP YOU SUCCEED ON GOOGLE PLAY

Today, during our annual Developer Day at the Game Developers Conference, we introduced new tools to improve the overall discovery on Google Play, especially supporting developers who build high quality and engaging games.

  • Promoting high quality experiences based on engagement, not just installs: With the enormous variety of games available on Google Play, there are many instances when great games don't get the visibility and attention they deserve. Recently, we've begun tuning our algorithms to optimize for user engagement, not just downloads. This is one of our ways to reward quality, which for games means promoting titles with stickiness (strong engagement and retention metrics) as well as a more traditional measure like a high star rating.

  • Offer sales and increase purchases of premium games with strikethrough pricing: Available in the Google Play Developer Console starting today, strikethrough pricing allows developers to run their own price promotions on paid apps and games leading to greater awareness and conversion. During our pilot phase, developers not only saw a 3x-20x lift in installs during their promotions, they also maintained a nice lift once the sales ended.


  • More curation of high quality games through editorial pages: One more way we'll highlight quality games is through new editorial pages on the Play store launching later this month. These pages allow our editors to hand-select games exemplifying optimal gaming experiences on Android. They allow users to explore different game styles and genres with editorial reviews on themes such as epic RPGs and top racing games.

UPCOMING GAMES ON GOOGLE PLAY

At our Developer Day, we also gave attendees a sneak peek at some high-fidelity games coming to Google Play later this year. Including titles from major studios to indies, and even two new VR titles, there's something for every gamer!

Available for pre-registration on Google Play
  • TRANSFORMERS: Forged to Fight by Kabam is a new high-definition, action-fighting mobile game set in an immersive world. The game will feature authentic Transformers "more than meets the eye" action, allowing players to engage with Optimus Prime, Megatron and many other popular Autobots and Decepticons in a stunning 3D environment. The game will be available worldwide on April 5, 2017.
  • Battle Breakers is a new frenetic tactical role-playing game from Epic Games, powered by Unreal Engine 4. A vibrant fantasy sci-fi cartoon adventure, Battle Breakers lets you recruit and build a dream team from hundreds of unique heroes to battle monsters as you take back the Kingdom, one break at a time!
  • Injustice 2 lets you guide your stable of Super Heroes and Villains to victory. Expanding on the hit game Injustice: Gods Among Us, Injustice 2 delivers brand new characters, tons of exciting new modes and the look and fighting style that NetherRealm Studios is known for. Injustice 2 will be available on Google Play for Android devices in May.
Coming soon
  • Virtual Rabbids is the first VR Rabbids experience on mobile developed by Ubisoft Montpellier in collaboration with Bucharest. Available this spring on Daydream, players will find themselves in some of the most precarious situations as they race to save the planet.
  • Beartopia is a cooperative multiplayer village game by Spry Fox. Make friends, work together and grow a thriving community.
Later this afternoon, we'll host a series of lightning talks to share what it takes to launch successful VR and AR games, build with Firebase, implement machine learning in your game, and so much more. Visit our site for more info and the Google Developer Day schedule. For those who can't make it in person, watch the live stream!

This is just the start of what we have planned for 2017. We hope you can make use of these tools to improve your games, engage your audience, and grow your business and revenue.


How useful did you find this blogpost?

27 Feb 2017 6:26pm GMT

23 Feb 2017

feedAndroid Developers Blog

Keeping up to Date with the Support Library

Posted by Agustin Fonts, Product Manager, Android Support Library

It's important to keep current when you're dealing with technology. That's why we're constantly working to improve the quality of our software, particularly libraries that are linked into your apps, such as the Support Library. The Support Library is a suite of libraries that provides backward compatibility along with additional features across many Android releases.


We have just released version 25.2 of the Support Library. If you're making use of the android.support.v7.media.MediaRouter class in revision 25.1.1 or 25.1.0, we strongly recommend that you update due to a known issue. If you haven't updated recently, you've missed out on some great bug fixes such as these:


25.2:
  • Corrected a severe mediarouter issue in which using an A2DP Bluetooth device and media routing APIs could cause the device to become unresponsive, requiring a reboot
  • Showing a slide presentation with screen mirroring no longer causes the device to disconnect from Wi-Fi
  • Media button now properly handles media apps that did not register themselves with setMediaButtonReceiver()
  • TextInputLayout correctly overlays hint and text if text is set by XML (AOSP issue 230171)
  • Corrected a memory leak in MediaControllerCompat (AOSP issue 231441)
  • RecyclerView no longer crashes when recycling view holders (AOSP issue 225762)

Reporting (and fixing) a Bug


The Support Library is developed by the Android Framework and Developer Relations teams, and, just like the Android platform, you can file bugs using the AOSP issue tracker, or submit fixes to our Git repository. Your feedback is critical in helping us to make the Support Library the most productive environment to use for developing Android applications.

23 Feb 2017 4:00pm GMT

22 Feb 2017

feedAndroid Developers Blog

Publish your app with confidence from the Google Play Developer Console

Posted by Kobi Glick, Product Manager, Google Play

Publishing a new app, or app update, is an important and exciting milestone for every developer. In order to make the process smoother and more trackable, we're announcing the launch of a new way to publish apps on Google Play with some new features. The changes will give you the ability to manage your app releases with more confidence via a new manage releases page in the Google Play Developer Console.




Manage your app updates with clarity and control

The new manage releases page is where you upload alpha, beta, and production releases of your app. From here, you can see important information and the status of all your releases across tracks.

The new manage releases page.
Easier access to existing and new publishing features

Publishing an app or update is a big step, and one that every developer wants to have confidence in taking. To help, we've added two new features.
First, we've added a validation step that highlights potential issues before you publish. The new "review and rollout" page will appear before you confirm the roll out of a new app and flag if there are validation errors or warnings. This new flow will make the app release process easier, especially for apps using multi-APK. It also provides new information; for example, in cases where you added new permissions to your app, the system will highlight it.


Second, it's now simpler to perform and track staged roll-outs during the publishing flow. With staged rollouts, you can release your update to a growing % of users, giving you a chance to catch and address any issues before affecting your whole audience.

If you want to review the history of your releases, it is now possible to track them granularly and download previous APKs.

Finally we've added a new artifacts library under manage releases where you can find all the files that help you manage a release.
Start using the new manage releases page today
You can access the new manage releases page in the Developer Console. Visit the Google Play Developer Help Center for more information. With these changes, we're helping you to publish, track and manage your app with confidence on Google Play.


How useful did you find this blogpost?

22 Feb 2017 5:41pm GMT

21 Feb 2017

feedAndroid Developers Blog

Build flexible layouts with FlexboxLayout

Posted by Takeshi Hagikura, Developer Programs Engineer

At Google I/O last year we announced ConstraintLayout, which enables you to build complex layouts while maintaining a flat view hierarchy. It is also fully supported in Android Studio's Visual Layout Editor.

At the same time, we open sourced FlexboxLayout to bring the same functionalities of the CSS Flexible Layout module to Android. Here are some cases where FlexboxLayout is particularly effective.

FlexboxLayout can be interpreted as an advanced LinearLayout because both layouts align their child views sequentially. The significant difference between LinearLayout and FlexboxLayout is that FlexboxLayout has a feature for wrapping.

That means if you add the flexWrap="wrap" attribute, FlexboxLayout puts a view to a new line if there is not enough space left in the current line as shown in the picture below.


One layout for various screen sizes

With that characteristic in mind, let's take a case where you want to put views sequentially but have them move to new lines if the available space changes (due to a device factor, orientation changes or the window resizing in the multi-window mode).


Nexus5X portrait


Nexus5X landscape

Pixel C with multi window mode enabled, divider line on the left.


Pixel C with multi window mode enabled, divider line on the middle.


Pixel C with multi window mode enabled, divider line on the right.

You would need to define multiple DP-bucket layouts (such as layout-600dp, layout-720dp, layout-1020dp) to handle various screen sizes with traditional layouts such as LinearLayout or RelativeLayout. But the dialog above is built with a single FlexboxLayout.

The technique used in the example is setting the flexWrap="wrap" as explained above,

<com .google.android.flexbox.flexboxlayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:flexwrap="wrap">
then you can get the following layout where child views are aligned to a new line instead of overflowing its parent.




Another technique I'd like to highlight is setting the layout_flexGrow attribute to an individual child. This helps improve the look of the final layout when free space is left over. The layout_flexGrow attribute works similar to the layout_weight attribute in LinearLayout. That means FlexboxLayout will distribute the remaining space according to the layout_flexGrow value set to each child in the same line.

In the example below, it assumes each child has the layout_flexGrow attribute set to 1, so free space will be evenly distributed to each of them.
 <android .support.design.widget.TextInputLayout
     android:layout_width="100dp"
     android:layout_height="wrap_content" 
     app:layout_flexgrow="1">



You can check out the complete layout xml file in the GitHub repository.

RecyclerView integration

Another advantage of FlexboxLayout is that it can be integrated with RecyclerView. With the latest release of the alpha version the new FlexboxLayoutManager extends RecyclerView.LayoutManager, now you can make use of the Flexbox functionalities in a scrollable container in much more memory-efficient way.

Note that you can still achieve a scrollable Flexbox container with FlexboxLayout wrapped with ScrollView. But, you will be likely to experience jankiness or even an OutOfMemoryError if the number of items contained in the layout is large, as FlexboxLayout doesn't take view recycling into account for the views that go off the screen as the user scrolls.

(If you would like to learn more about the RecyclerView in details, you can check out the videos from the Android UI toolkit team such as 1, 2)

A real world example where the RecyclerView integration is useful is for apps like the Google Photos app or News apps, both expect large number of items while needing to handle various width of items.

One example is found in the demo application in the FlexboxLayout repository. As you can see in the repository, each image shown in RecyclerView has a different width. But by setting the flexWrap setting to wrap,

FlexboxLayoutManager layoutManager = new FlexboxLayoutManager();
layoutManager.setFlexWrap(FlexWrap.WRAP);
and setting the flexGrow (as you can see, you can configure the attributes through FlexboxLayoutManager and FlexboxLayoutManager.LayoutParams for child attributes instead of configuring it from xml) attribute to a positive value for each child,
void bindTo(Drawable drawable) {
  mImageView.setImageDrawable(drawable);
  ViewGroup.LayoutParams lp = mImageView.getLayoutParams();
  if (lp instanceof FlexboxLayoutManager.LayoutParams) {
    FlexboxLayoutManager.LayoutParams flexboxLp = 
        (FlexboxLayoutManager.LayoutParams) mImageView.getLayoutParams();
    flexboxLp.setFlexGrow(1.0f);
  }
}
you can see every image fits within the layout nicely regardless of the screen orientation.



If you would like to see complete FlexboxLayout example, you can check:


What's next?

Check out the full documentation for other attributes to build flexible layouts tailored for your needs. We're very open to hear your feedback, if you find any issues or feature requests, please file an issue on the GitHub repository.



21 Feb 2017 6:48pm GMT

16 Feb 2017

feedAndroid Developers Blog

And the winners of the Google Play Indie Games Contest in Europe are...

Posted by Matteo Vallone, Google Play Games Business Development


Today, at Saatchi Gallery in London, we hosted the final event of the first Google Play Indie Games Contest in Europe. The 20 finalists, selected from nearly 1000 submissions, came from 12 countries to showcase their games to an excited room of gamers, industry experts and press. Selected based on the votes of the attendees and the Google Play team, the Top 10 pitched in front of a jury of industry experts who chose the top winners.



Stay tuned for more pictures and a video of the event.

Without further ado, join us in congratulating the winners!

Winner & Unity prize winner:

Reigns, by Nerial, from the United Kingdom

You are the King. For each decision, you only have two choices. Survive the exercise of power and the craziness of your advisors... as long as you can.

Runners up:


The Battle of Polytopia, by Midjiwan AB, from Sweden

A turn based strategic adventure. It's a game about ruling the world, fighting evil AI tribes, discovering new lands and mastering new technologies.
Causality, by Loju, from the United Kingdom

A puzzle about manipulating time, altering the sequence of events and changing the outcome of each level to help a group of astronauts find a route to safety.


The other top games selected by the event attendees and the Google Play team are:


Blind Drive, by Lo-Fi People, from Israel

You're driving blindfolded as a mysterious voice gives you suicidal commands on the phone. Survive on-rushing vehicles using only your hearing to guide you.
Gladiabots, by GFX47, from France

A competitive tactical game in which you design the AI of your robot squad. Use your own strategy, refine it online and fight for the top of the leaderboard.
Happy Hop: Kawaii Jump, by Platonic Games, from Spain

This isn't just an original one-tap endless hopper, it's also the cutest one. Ever wondered what's in the end of the rainbow? That would be Happy Hop.
Lost in Harmony, by Digixart Entertainment, from France

Experience music in a new way with the combination of rhythmic tapping and choreographic runner to go through two memorable journeys with Kaito and M.I.R.A.I.
Paper Wings, by Fil Games, from Turkey

A fast-paced arcade game which puts you in control of an origami bird. Avoid the hazards and collect the falling coins to keep your paper bird alive.
Pinout, by Mediocre, from Sweden

A breathtaking pinball arcade experience: race against time in a continuous journey through this canyon of pulsating lights and throbbing retro wave beats.
Rusty Lake: Roots, by Rusty Lake, from Netherlands

James Vanderboom's life drastically changes when he plants a special seed in the garden. Expand your bloodline by unlocking portraits in the tree of life.



Check out the prizes
The prizes of this contest were designed to help the winners showcase their art and grow their business on Android and Google Play, including:
  • YouTube influencer campaigns worth up to 100,000 EUR
  • Premium placements on Google Play
  • Tickets to Google I/O 2017 and other top industry events
  • Promotions on our channels
  • Special prizes for the best Unity game
  • And more!
What's next?
The week is not over just yet for Indie games developers. Tomorrow we are hosting the Indie Games Workshop for all indie games developers from across EMEA in the new Google office in Kings Cross.

It's been really inspiring to see the enthusiasm around this inaugural edition, and the quality and creativity of the indie games developed across the eligible European countries. We are looking forward to bringing a new edition of the contest to you in late 2017.

How useful did you find this blogpost?

16 Feb 2017 7:59pm GMT

15 Feb 2017

feedAndroid Developers Blog

Tips for building high-quality and accessible financial services apps

Posted by Joel Newman & Ashraf Hassan, Strategic Partnerships, Finance, Google Play

Millions of people around the globe have limited or no access to basic financial services to enable them to manage their day-to-day finances. Mobile technology can help bridge this gap by connecting historically underserved consumers with high-quality tools to help them improve their financial health.

Often faced with an uncertain regulatory environment and/or a highly fragmented financial marketplace, many developers struggle with building great app experiences while also navigating this complex financial space. That's why we recently worked with CFSI, the authority on consumer financial health, to create the FinTech App Development Compass, a six-step guide for building high quality mobile apps to make financial services more accessible on Google Play.

Below, we're sharing six tips to consider when building a financial services app. For more, read the complete FinTech App Development Compass.

Tip 1: Know Your User
Understand who your consumer is and what difference your product can make in their day-to-day life. What are their financial needs? How can your product improve their financial health? How does your product fit within the context of their financial lives?

Tip 2: Focus on Access
Responsibly expand access to your product. Consider how your product can fit seamlessly into your users' routines. Consider your users' circumstances, including that English may not be their first language and that they may be using older devices with limited data plans.

Tip 3: Establish and Maintain Trust
Trust is at a premium in the financial space. Make sure you are developing mutually beneficial financial solutions that deliver clear and consistent value. Similarly, make sure you are using the latest security tools available from the Android platform to secure your users' data.

Tip 4: Test and Iterate
Before releasing any product to the public, make sure it has been thoroughly tested. From a financial perspective, be sure to measure the actual impact of your product on users over time. From a technological perspective, be sure to leverage Google Play alpha and beta channels for distributing apps before their public release.

Tip 5: Drive Positive User Behavior
Drive positive consumer behavior through smart design and communication. Leverage the Android platform tools like Material Design and notifications to steer users toward positive action or take financial action at appropriate times.

Tip 6: Recognize the Value of Mutual Success
Remember that the best business models are win-win: If your users' financial health improves, your company profits. Consider embedding financial impact and technological tracking capabilities within your platform from the beginning.

For additional information, refer to the CFSI Compass Principles and get the Playbook for Developers app to stay up-to-date with more features and best practices that will help you grow a successful business on Google Play.

How useful did you find this blogpost?

15 Feb 2017 5:29pm GMT