26 Apr 2017

feedAndroid Community

Xiaomi smartphones not coming to the US or Europe anytime soon

Xiaomi used to be number one in the Chinese mobile market but was soon taken over by Huawei. The OEM has big potential because its smartphones and other smart products always sell wherever market they are sold. The company launches items with high-end specs but still with affordable prices. Unfortunately, the brand hasn't reached the United States […]

26 Apr 2017 12:00am GMT

25 Apr 2017

feedAndroid Community

Samsung Galaxy S8+ users report wireless charging woes

We have confidence the Galaxy S8 and S8+ will be successful this year. Consumer Reports already said the two are the best smartphones today despite that reddish tint on the display of some S8 units. So far, no complaints of explosion and overheating have been reported. We're not expecting anything at all except maybe for […]

25 Apr 2017 11:00pm GMT

ZTE Axon 7S announced as the latest affordable flagship phone

The Axon 7 has been ZTE's bestselling flagship phone for the past year that is offered with an affordable pricing despite the great specs. It recently received Android 7.1.1 Nougat after months of development and preview application and a bit of delay. Several variants of the Axon 7 were made available including the premium model […]

25 Apr 2017 10:00pm GMT

ZTE Blade Max 2 debuts with a 4000mAh batt, dual rear camera setup

ZTE recently introduced a new mid-range device in the form of the Blade Max 3 via US Cellular. This affordable phone is a follow-up to the ZTE Imperial also released by the mobile carrier last year. This one packs a 6-inch screen with 1080 x 1920 pixel resolution, 13MP dual rear camera, 5MP selfie shooter, […]

25 Apr 2017 9:00pm GMT

Verizon (finally) brings Nougat update to Galaxy S6, S6 edge

The Android 7.0 Nougat updates are finally coming fast and furious to various carriers and devices that are not last year's flagships. Day after day we get announcements about which smartphone and which carrier is now finally rolling out the latest major update from Google and it can't come soon enough since the developer preview […]

25 Apr 2017 8:00pm GMT


How to permanently delete pictures and videos from Google Photos

You have your reasons as to why a picture or video needs to be deleted. We don't judge, and we probably shouldn't know everything you snap and record in life. But we can help you throw away things you don't want anymore. Google Photos is a brilliant cloud storage solution for pictures and videos, but […]

Come comment on this article: How to permanently delete pictures and videos from Google Photos

Visit TalkAndroid

25 Apr 2017 7:45pm GMT

feedAndroid Community

Google Maps now shows local reviews in your default language

When you're visiting a new place and you don't know where to eat or where to go, you probably take a look at the reviews of restaurants or other places, and one of the apps where you can do that is Google Maps. But oftentimes, the reviews people put in the local places are probably […]

25 Apr 2017 7:00pm GMT


LG G6 review: One step forward, two steps back

Much of the world has been anticipating the LG G6, especially after the company promised to ditch modules and create something truly innovative. Despite all the hype LG has been building around the G6, it still doesn't quite feel up to par. Aside from a design refresh, it's much of the same we've been seeing […]

Come comment on this article: LG G6 review: One step forward, two steps back

Visit TalkAndroid

25 Apr 2017 6:34pm GMT

feedAndroid Community

Casio releases Pro Tek WSD-F20 smartwatch, appeals to hikers

There are a lot of smarwatches in the market that target runners or those who exercise and want to keep track of their fitness routines. But OEMs believe there's still room for more, especially if they want to appeal to a different segment. The Casio Pro Tek WSD-F20 was unveiled earlier this year at the […]

25 Apr 2017 6:00pm GMT


The all-new 6-inch ZTE Max XL is here and it’s super affordable

ZTE announced the Max XL today, an extremely affordable 6-inch phone with Android 7.1.1 Nougat already running out of the box. You get a 6-inch Full HD display, a 1.4GHz octa-core Qualcomm Snapdragon processor, 2GB of RAM, 16GB of internal storage with microSD support, a 13-megapixel rear camera and a 5-megapixel front shooter. It's also […]

Come comment on this article: The all-new 6-inch ZTE Max XL is here and it's super affordable

Visit TalkAndroid

25 Apr 2017 5:30pm GMT

‘Super Mario Run’ for Android gets updated with some small improvements

Nintendo's Super Mario Run is getting a new update, bringing with it a handful of changes and improvements. The new changes aren't anything huge, just some small improvements to the game. One of the more notable changes is that Nintendo is increasing the amount of toads that can live in your kingdom - that number is up […]

Come comment on this article: 'Super Mario Run' for Android gets updated with some small improvements

Visit TalkAndroid

25 Apr 2017 5:00pm GMT

[TA Deal] Now you can use TigerVPN for a lifetime for $29

Virtual private networks (or VPNs) are capable of allowing you to browse the web privately and securely. Even for those not paranoid about all of the potential risks floating around online today, a VPN can be extremely useful because it forgoes any geographical restrictions applied by many services. What do I mean by this? It's possible to […]

Come comment on this article: [TA Deal] Now you can use TigerVPN for a lifetime for $29

Visit TalkAndroid

25 Apr 2017 5:00pm GMT

feedAndroid Community

Learn to code using Python, Ruby, & JavaScript for under $50 [DEALS]

Want to learn a wide variety of programming languages? Then check out The Ultimate Learn to Code 2017 Bundle. This package of ten in depth courses is offered at more than 90% off the retail price, but only for a limited time to readers of Android Community. The field of information technology has many areas […]

25 Apr 2017 5:00pm GMT


Samsung announces record breaking Galaxy S8 preorders

There is no doubt how important the Galaxy S8 is to Samsung and it looks as though their hard work has paid off. Now that the phones are available for purchase everywhere, Samsung has just announced that during the preorder period they not only saw more orders than last year's Galaxy S7, but those numbers […]

Come comment on this article: Samsung announces record breaking Galaxy S8 preorders

Visit TalkAndroid

25 Apr 2017 4:23pm GMT

To start 2017, T-Mobile added 1.1 million customers and continued expanding

Still no signs of slowing down for the Un-carrier. This week, T-Mobile's results for the first quarter of the year were shared. And it turns out the carrier continues to see growth in multiple areas. Just in the in first three months of 2017, T-Mobile added 1.1 million customers. That keeps its streak of 1 […]

Come comment on this article: To start 2017, T-Mobile added 1.1 million customers and continued expanding

Visit TalkAndroid

25 Apr 2017 4:05pm GMT

feedAndroid Community

Spyware SMSVova pretended to be ‘System Update’ on Play Store, now removed from listings

There are people who just want to see the world burn, and then there are those who want to prey on the weak-minded and uninformed. We can't do anything about the former, but by the Android gods we will inform you about these malicious tricks. Like this SMSvova spyware posing as a "System Update" app […]

25 Apr 2017 4:00pm GMT

Consumer Reports says Galaxy S8’s red tint is present but not a dealbreaker

There are no reports of overheating and exploding batteries yet but the Samsung Galaxy S8 has been the subject of a few complaints mainly on the display. There seems to be a reddish tint on the screen according to some users. The South Korean tech giant is releasing a software update but is firm on […]

25 Apr 2017 3:00pm GMT

Sennheiser partnering with Samsung on AMBEO ecosystem for Android

If you love watching videos and playing games on your mobile device, then you're probably always on the lookout for the best headphones that will help you make the best out of your experience. Sennheiser is one of the leading brands when it comes to audio equipment and it seems that they are partnering with […]

25 Apr 2017 2:00pm GMT

Android TV Nougat ROM now available for Raspberry Pi 3

The Raspberry Pi 3 is the third generation single-board computer (SBC), popular with modders and DIY tech enthusiasts all around because it is pretty easy to use and modify. One of the more popular uses is to turn the board into a media center - you can use an AOSP Android TV build to be […]

25 Apr 2017 1:00pm GMT

Xperia XZ Premium to get a Bronze Pink variant in June

One of the trends for the past couple of years for smartphones is to have special edition variants after their initial release, mostly with "unusual" colors. And by unusual we mean other than the usual black, white, or gray. Gold versions were all the rage, but now it looks like pink is the new gold. […]

25 Apr 2017 12:00pm GMT

Google announces YI HALO VR Camera, opens Jump Start program

Google has just introduced the next-gen Jump camera that will allow you to easily make virtual reality videos. The YI HALO VR Camera is the tech giant's newest camera rig that may help usher the mobile consumers into the age of VR. You see, virtual reality has been around for some time now but it […]

25 Apr 2017 11:00am GMT

More Galaxy S8 pre-orders were made compared to the Galaxy S7

Samsung and most of its fans have been been worrying about the state of the company, no thanks to the Note 7 debacle that ended earlier this year. Battery was the main cause and so the suppliers were at fault. Most of the Android community were probably thinking of sales would suffer but looks like […]

25 Apr 2017 9:00am GMT

Sony Xperia XA1 now listed for pre-order on Amazon, starts shipping May 1

The Sony Xperia XA1 has been available in the United Kingdom since April 10 complete with a beautiful screen and big cameras. Unveiled during the Mobile World Congress back in February, this smartphone boasts of a 5-inch borderless display screen, 23MP camera with fast Hybrid Autofocus, 32GB internal storage, microSD card slot for memory expansion […]

25 Apr 2017 7:00am GMT


Spotify to move into hardware space?

Some new jobs listing combined with some anonymous sources suggest Spotify may look to join another app developer, Snapchat, and move into the hardware space. The information is quite vague though about what kind of form such hardware may take and it is a challenge to imagine a Spotify-oriented product that would be commercially viable. […]

Come comment on this article: Spotify to move into hardware space?

Visit TalkAndroid

25 Apr 2017 1:34am GMT

Samsung preparing red tint, Wi-Fi updates for Galaxy S8 devices

Samsung appears to have pulled off most of what they were hoping for with the launch of the Galaxy S8 and Galaxy S8+ this spring. The devices have been noted for nudging smartphone design in a slightly new direction with the sleek look and near bezel-less face and consumer interest has been high. The launch […]

Come comment on this article: Samsung preparing red tint, Wi-Fi updates for Galaxy S8 devices

Visit TalkAndroid

25 Apr 2017 12:37am GMT

24 Apr 2017


Google announces next-generation Jump virtual reality cameras

Virtual reality is the next big thing for several companies, but if you can't help content creators capture VR footage, you're going to be at a disadvantage. That's where Google's Jump program came from. Originally launched in 2015, Jump was designed to simplify VR video production. There are several high-end professional cameras that were built […]

Come comment on this article: Google announces next-generation Jump virtual reality cameras

Visit TalkAndroid

24 Apr 2017 8:30pm GMT

Xiaomi phones still aren’t coming to the US anytime soon

Xiaomi has said for years they were working out how to finally bring their extremely popular mobile devices to the United States. It's a huge market, after all, and it's rare to see a smartphone company succeed without a US presence. Xiaomi's made it this far, though, and we're still some time away from that […]

Come comment on this article: Xiaomi phones still aren't coming to the US anytime soon

Visit TalkAndroid

24 Apr 2017 7:34pm GMT

Nominees for the 2017 Google Play Awards are out!

The Google Play Awards debuted last year, and the ceremony is coming back in 2017. It'll be held during Google I/O 2017, week-long developer conference, in Mountain View that attracts thousands of attendees from all different backgrounds. Today Google announced the nominees. And the nominees (for every category) are… Standout Indie: Causality Kingdom: New Lands […]

Come comment on this article: Nominees for the 2017 Google Play Awards are out!

Visit TalkAndroid

24 Apr 2017 5:31pm GMT

feedAndroid Developers Blog

The Google Play Awards are returning to Google I/O

Posted by Purnima Kochikar, Director, Apps and Games Business Development, Google Play

Drum roll please! The Google Play Awards are back again this year and will take place Thursday, May 18th at 6:30pm (Pacific Time) during Google I/O, our annual developer festival.

The annual ceremony is a great opportunity for the industry to recognize outstanding developers that continue to set the bar for quality apps and games showing a passion for driving innovation and adoption of new platforms and user experiences.

This year we'll be honoring partners across 12 award categories, some familiar and some new. Nominees were selected much like last year by cross-functional teams throughout Google who work hand-in-hand with the relevant categories and product areas. While category specific criteria can be found below, the common requirements across all categories focused on high star rating, technical performance and freshness, requiring a launch or major update since April 2016. The winners of each category will be announced at Google I/O in May.

The full list of categories and nominees are below and can also be found at g.co/play/GPA2017:

Standout Indie

Games from indie developers that focus on artistic design, gameplay mechanics and overall polish. And the nominees are……

Standout Startup

Apps from new developers that offer a unique experience while achieving strong organic install growth. And the nominees are……

Best Android Wear Experience

New wear 2.0 apps offering great design, user delight and functionality. And the nominees are…

Best TV Experience

Apps or games leveraging innovative features for the large-screen format while providing an immersive and intuitive experience. And the nominees are…

Best VR Experience

Highly engaging and immersive experience with optimal use of Daydream UI. And the nominees are…

Best AR Experience

Apps or games harnessing the creative and imaginative technology of AR. And the nominees are…

Best App for Kids

Apps or games with family friendly design that encourage creativity, exploration and education. And the nominees are…

Best Multiplayer Game

Games built to connect gamers in competitive and engaging multiplayer experiences. And the nominees are…

Best App

A true representation of beautiful design, intuitive UX and high user appeal. And the nominees are…

Best Game

Games with strong mechanics, stellar graphics and strong engagement and retention tactics. And the nominees are...

Best Accessibility Experience

Apps or games enabling device interaction in an innovative way that serves people with disabilities or special needs. And the nominees are…

Best Social Impact

Apps that creates meaningful social impact for a broad spectrum of people around the world. And the nominees are…

Join us live at the ceremony May 18th at 6:30 pm PDT at Google I/O or via the live stream to see who wins.

How useful did you find this blogpost?

24 Apr 2017 5:07pm GMT


Best Samsung Galaxy S8 and Galaxy S8+ screen protectors

If you put your phone in your pocket, screen protectors can be a life saver. Change or car keys dangling in your pocket can very quickly scratch up and damage your screen. You definitely don't want that happening on your brand new Galaxy S8 or Galaxy S8+, so a screen protector is definitely the way […]

Come comment on this article: Best Samsung Galaxy S8 and Galaxy S8+ screen protectors

Visit TalkAndroid

24 Apr 2017 4:55pm GMT

Lenovo acknowledges the Moto G5 Plus on Verizon struggles to call 911, fix rolling out now

Update (4/24/17 @ 12:30PM ET): Lenovo just reached out to confirm that the software update started rolling out on Friday, April 21. If you own the Moto G5 Plus, please download that software update immediately. You do not want to be stuck in a situation in which you cannot reach emergency services. Original Story (4/20/17): […]

Come comment on this article: Lenovo acknowledges the Moto G5 Plus on Verizon struggles to call 911, fix rolling out now

Visit TalkAndroid

24 Apr 2017 4:30pm GMT

Qualcomm and Samsung already working on the Galaxy S9’s processor

Many people might still be focused on how great the Galaxy S8 is, but Samsung and Qualcomm have already moved past that. A new report from Korea's The Investor says that the duo are now hard at work for the next processor for next year's flagship, which presumably will be called the Galaxy S9. This news […]

Come comment on this article: Qualcomm and Samsung already working on the Galaxy S9's processor

Visit TalkAndroid

24 Apr 2017 2:15pm GMT

20 Apr 2017

feedAndroid Developers Blog

App onboarding for kids: how Budge Studios creates a more engaging experience for families

Posted by Josh Solt (Partner Developer Manager, Kids Apps at Google Play) and Noemie Dupuy (Founder & Co-CEO at Budge Studios)

Developers spend a considerable amount of resources driving users to download their apps, but what happens next is often the most critical part of the user journey. User onboarding is especially nuanced in the kids space since developers must consider two audiences: parents and children. When done correctly, a compelling onboarding experience will meet the needs of both parents and kids while also accounting for unique considerations, such as a child's attention span.

Budge Studios has successfully grown their catalog of children's titles by making onboarding a focal point of their business. Their target demographic is three to eight-year olds, and their portfolio of games include top titles featuring Strawberry Shortcake, Hello Kitty, Crayola, Caillou and The Smurfs.

"First impressions matter, as do users' first experience with your app. In fact, 70%1 of users who delete an app will do so within a day of having downloaded it, leaving little time for second chances. As an expert in kids' content, Budge tapped into our knowledge of kids to improve and optimize the onboarding experience, leading to increased initial game-loop completion and retention." - Noemie, Founder & Co-CEO at Budge Studios

Three key ways Budge Studios designs better onboarding experiences:

1. Make sure your game is tailor-made for kids

When Budge released their app Crayola Colorful Creatures, they looked at data to identify opportunities to create a smoother onboarding flow for kids. At launch, only 25% of first-time users were completing the initial game loop. Budge analyzed data against gameplay and realized the last activity was causing a drastic drop-off. It required kids to use the device's microphone, and that proved too challenging for very young kids. Budge was able to adjust the initial game loop so that all the activities were accessible to the youngest players. These adjustments almost tripled the initial loop completion, resulting in 74% of first-time users progressing to see additional activities.

2. Earn parents trust by providing real value upfront

Budge has a large of portfolio of apps. Earning parents' trust by providing valuable and engaging experiences for kids is important for retaining users in their ecosystem and achieving long term success.

With every new app, Budge identifies what content is playable for free, and what content must be purchased. Early on, Budge greatly limited the amount of free content they offered, but over time has realized providing high quality free content enhances the first-time user experience. Parents are more willing to spend on an app if their child has shown a real interest in a title.

Working with top kids' brands means that Budge can tap into brand loyalty of popular kids characters to provide value. To launch Strawberry Shortcake Dreams, Budge decided to offer Strawberry Shortcake, the most popular character in the series, as a free character. Dress Up Dreams is among the highest converting apps in the Budge portfolio, indicating that giving away the most popular character for free helped conversions rather than hurting it.

3. Test with real users

Budge knows there is no substitute for direct feedback from its end-users, so Budge involves kids every step of the way. Budge Playgroup is a playtesting program that invites families to try out apps at the alpha, beta and first-playable development stages.

The benefits from early testing can be as basic as understanding how the size and coordination of kids' hands affect their ability to complete certain actions or even hold the device, and as specific as pinpointing a less-than-effective button.

In the testing stages of Strawberry Shortcake Holiday Hair, Budge caught an issue with the main menu of the app, which would not have been evident without observing kids using the app.

Prior to Playtesting:

After Playtesting:

In the original design, users were prompted to start gameplay by audio cues. During testing, it was clear that the voiceover was not sufficient in guiding kids to initiate play, and that additional visual clues would significantly improve the experience. A simple design change resulted in a greatly enhanced user experience.

The onboarding experience is just one component of an app, but just like first impressions, it has a disproportionate impact on your users' perception of your app. As Budge has experienced, involving users in testing your app, using data to flag issues and providing real value to your users upfront, creates a smoother, more accessible onboarding experience and leads to better results.

For more best practices on developing family apps and games, please check out The Family Playbook for developers. And 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?

20 Apr 2017 4:26pm GMT

14 Apr 2017

feedAndroid Developers Blog

Java 8 Language Features Support Update

Posted by James Lau, Product Manager

Yesterday, we released Android Studio 2.4 Preview 6. Java 8 language features are now supported by the Android build system in the javac/dx compilation path. Android Studio's Gradle plugin now desugars Java 8 class files to Java 7-compatible class files, so you can use lambdas, method references and other features of Java 8.

For those of you who tried the Jack compiler, we now support the same set of Java 8 language features but with faster build speed. You can use Java 8 language features together with tools that rely on bytecode, including Instant Run. Using libraries written with Java 8 is also supported.

We first added Java 8 desugaring in Android Studio 2.4 Preview 4. Preview 6 includes important bug fixes related to Java 8 language features support. Many of these fixes were made in response to bug reports you filed. We really appreciate your help in improving Android development tools for the community!

It's easy to try using Java 8 language features in your Android project. Just download Android Studio 2.4 Preview 6, and update your project's target and source compatibility to Java version 1.8. You can find more information in our preview documentation.

Happy lambda'ing!

14 Apr 2017 8:00pm GMT

A New Issue Tracker for our AOSP Developers

Posted by Sandie Gong, Developer Relations Program Manager & Chris Iremonger, Android Technical Program Manager

Like many other issue trackers at Google, we're upgrading our Android Open Source Project (AOSP) issue tracking system to Issue Tracker. We are hoping to facilitate a better collaboration between our developers and our Android product teams by using a tool we use internally at Google to track bugs and feature requests during product development.

Starting today, all issues formerly at code.google.com/p/android/issues will migrate to Issue Tracker under the Android Public Tracker component. You may have noticed that we are already using the new tool to collect feedback on the O Developer Preview!

What has been migrated

Getting started with Issue Tracker

You can learn more about navigating our Issue Tracker from our developer documentation. By default, Issue Tracker displays only the issues assigned to you. You can easily change that to show a hotlist of your choice, a bookmark group, or a saved search. You can also adjust notification settings by clicking the gear icon in the top right corner and selecting Settings.

The mappings in Issue Tracker are also slightly different than code.google.com so make sure to check out Life of a Bug to learn more about what the various statuses mean.

Searching for component specific issues

Opening a code.google.com issue link will automatically redirect you to the new system. We've cleaned up some of the spam, but you'll be able to find all of the other issues from code.google.com in Issue Tracker, including any issue you've reported, commented on, or starred.

You can view all reported Android issues in the Android Public Tracker component and drill down to see reported issues for specific categories of issues, such as Tools and Support Libraries, by searching for specific components.

Filing a bug or feature request

Before filing a new issue, please check if it is already reported in the issues list. Let us know what issues are important to you by starring an existing issue.

Submitting a new issue is easy. Once you click "Create Issue", search for the appropriate component for your issue. Alternatively, you can just follow the correct issue creation link for each component listed in Report Bugs.

Here's some helpful links to get you started!

Relevant Links
Navigating and creating issues in the Android component
Navigating Google Issue Tracker
Google Issue Tracker announcements for other products

14 Apr 2017 4:33pm GMT

13 Apr 2017

feedAndroid Developers Blog

FORTIFY in Android

Posted by George Burgess, Software Engineer

FORTIFY is an important security feature that's been available in Android since mid-2012. After migrating from GCC to clang as the default C/C++ compiler early last year, we invested a lot of time and effort to ensure that FORTIFY on clang is of comparable quality. To accomplish this, we redesigned how some key FORTIFY features worked, which we'll discuss below.

Before we get into some of the details of our new FORTIFY, let's go through a brief overview of what FORTIFY does, and how it's used.

What is FORTIFY?

FORTIFY is a set of extensions to the C standard library that tries to catch the incorrect use of standard functions, such as memset, sprintf, open, and others. It has three primary features:

  • If FORTIFY detects a bad call to a standard library function at compile-time, it won't allow your code to compile until the bug is fixed.
  • If FORTIFY doesn't have enough information, or if the code is definitely safe, FORTIFY compiles away into nothing. This means that FORTIFY has 0 runtime overhead when used in a context where it can't find a bug.
  • Otherwise, FORTIFY adds checks to dynamically determine if the questionable code is buggy. If it detects bugs, FORTIFY will print out some debugging information and abort the program.

Consider the following example, which is a bug that FORTIFY caught in real-world code:

struct Foo {
    int val;
    struct Foo *next;
void initFoo(struct Foo *f) {
    memset(&f, 0, sizeof(struct Foo));
FORTIFY caught that we erroneously passed &f as the first argument to memset, instead of f. Ordinarily, this kind of bug can be difficult to track down: it manifests as potentially writing 8 bytes extra of 0s into a random part of your stack, and not actually doing anything to *f. So, depending on your compiler optimization settings, how initFoo is used, and your project's testing standards, this could slip by unnoticed for quite a while. With FORTIFY, you get a compile-time error that looks like:

/path/to/file.c: call to unavailable function 'memset': memset called with size bigger than buffer
    memset(&f, 0, sizeof(struct Foo));
For an example of how run-time checks work, consider the following function:

// 2147483648 == pow(2, 31). Use sizeof so we get the nul terminator,
// as well.
#define MAX_INT_STR_SIZE sizeof("2147483648")
struct IntAsStr {
    char asStr[MAX_INT_STR_SIZE];
    int num;
void initAsStr(struct IntAsStr *ias) {
    sprintf(ias->asStr, "%d", ias->num);
This code works fine for all positive numbers. However, when you pass in an IntAsStr with num <= -1000000, the sprintf will write MAX_INT_STR_SIZE+1 bytes to ias->asStr. Without FORTIFY, this off-by-one error (that ends up clearing one of the bytes in num) may go silently unnoticed. With it, the program prints out a stack trace, a memory map, and will abort with a core dump.

FORTIFY also performs a handful of other checks, such as ensuring calls to open have the proper arguments, but it's primarily used for catching memory-related errors like the ones mentioned above.
However, FORTIFY can't catch every memory-related bug that exists. For example, consider the following code:

__attribute__((noinline)) // Tell the compiler to never inline this function.
inline void intToStr(int i, char *asStr) { sprintf(asStr, "%d", num); }

char *intToDupedStr(int i) {
    const int MAX_INT_STR_SIZE = sizeof("2147483648");
    char buf[MAX_INT_STR_SIZE];
    intToStr(i, buf);
    return strdup(buf);
Because FORTIFY determines the size of a buffer based on the buffer's type and-if visible-its allocation site, it can't catch this bug. In this case, FORTIFY gives up because:

  • the pointer is not a type with a pointee size we can determine with confidence because char * can point to a variable amount of bytes
  • FORTIFY can't see where the pointer was allocated, because asStr could point to anything.

If you're wondering why we have a noinline attribute there, it's because FORTIFY may be able to catch this bug if intToStr gets inlined into intToDupedStr. This is because it would let the compiler see that asStr points to the same memory as buf, which is a region of sizeof(buf) bytes of memory.

How FORTIFY works

FORTIFY works by intercepting all direct calls to standard library functions at compile-time, and redirecting those calls to special FORTIFY'ed versions of said library functions. Each library function is composed of parts that emit run-time diagnostics, and-if applicable-parts that emit compile-time diagnostics. Here is a simplified example of the run-time parts of a FORTIFY'ed memset (taken from string.h). An actual FORTIFY implementation may include a few extra optimizations or checks.

inline void *memset(void *dest, int ch, size_t count) {
    size_t dest_size = __builtin_object_size(dest);
    if (dest_size == (size_t)-1)
        return __memset_real(dest, ch, count);
    return __memset_chk(dest, ch, count, dest_size);
In this example:

  • _FORTIFY_FUNCTION expands to a handful of compiler-specific attributes to make all direct calls to memset call this special wrapper.
  • __memset_real is used to bypass FORTIFY to call the "regular" memset function.
  • __memset_chk is the special FORTIFY'ed memset. If count > dest_size, __memset_chk aborts the program. Otherwise, it simply calls through to __memset_real.
  • __builtin_object_size is where the magic happens: it's a lot like size sizeof, but instead of telling you the size of a type, it tries to figure out how many bytes exist at the given pointer during compilation. If it fails, it hands back (size_t)-1.

The __builtin_object_size might seem sketchy. After all, how can the compiler figure out how many bytes exist at an unknown pointer? Well... It can't. :) This is why _FORTIFY_FUNCTION requires inlining for all of these functions: inlining the memset call might make an allocation that the pointer points to (e.g. a local variable, result of calling malloc, …) visible. If it does, we can often determine an accurate result for __builtin_object_size.

The compile-time diagnostic bits are heavily centered around __builtin_object_size, as well. Essentially, if your compiler has a way to emit diagnostics if an expression can be proven to be true, then you can add that to the wrapper. This is possible on both GCC and clang with compiler-specific attributes, so adding diagnostics is as simple as tacking on the correct attributes.

Why not Sanitize?

If you're familiar with C/C++ memory checking tools, you may be wondering why FORTIFY is useful when things like clang's AddressSanitizer exist. The sanitizers are excellent for catching and tracking down memory-related errors, and can catch many issues that FORTIFY can't, but we recommend FORTIFY for two reasons:

  • In addition to checking your code for bugs while it's running, FORTIFY can emit compile-time errors for code that's obviously incorrect, whereas the sanitizers only abort your program when a problem occurs. Since it's generally accepted that catching issues as early as possible is good, we'd like to give compile-time errors when we can.
  • FORTIFY is lightweight enough to enable in production. Enabling it on parts of our own code showed a maximum CPU performance degradation of ~1.5% (average 0.1%), virtually no memory overhead, and a very small increase in binary size. On the other hand, sanitizers can slow code down by well over 2x, and often eat up a lot of memory and storage space.

Because of this, we enable FORTIFY in production builds of Android to mitigate the amount of damage that some bugs can cause. In particular, FORTIFY can turn potential remote code execution bugs into bugs that simply abort the broken application. Again, sanitizers are capable of detecting more bugs than FORTIFY, so we absolutely encourage their use in development/debugging builds. But the cost of running them for binaries shipped to users is simply way too high to leave them enabled for production builds.

FORTIFY redesign

FORTIFY's initial implementation used a handful of tricks from the world of C89, with a few GCC-specific attributes and language extensions sprinkled in. Because Clang cannot emulate how GCC works to fully support the original FORTIFY implementation, we redesigned large parts of it to make it as effective as possible on clang. In particular, our clang-style FORTIFY implementation makes use of clang-specific attributes and language extensions, as well as some function overloading (clang will happily apply C++ overloading rules to your C functions if you use its overloadable attribute).

We tested hundreds of millions of lines of code with this new FORTIFY, including all of Android, all of Chrome OS (which needed its own reimplementation of FORTIFY), our internal codebase, and many popular open source projects.

This testing revealed that our approach broke existing code in a variety of exciting ways, like:
template <typename OpenFunc>
bool writeOutputFile(OpenFunc &&openFile, const char *data, size_t len) {}

bool writeOutputFile(const char *data, int len) {
    // Error: Can't deduce type for the newly-overloaded `open` function.
    return writeOutputFile(&::open, data, len);
struct Foo { void *(*fn)(void *, const void *, size_t); }
void runFoo(struct Foo f) {
    // Error: Which overload of memcpy do we want to take the address of?
    if (f.fn == memcpy) {
    // [snip]

There was also an open-source project that tried to parse system headers like stdio.h in order to determine what functions it has. Adding the clang FORTIFY bits greatly confused the parser, which caused its build to fail.

Despite these large changes, we saw a fairly low amount of breakage. For example, when compiling Chrome OS, fewer than 2% of our packages saw compile-time errors, all of which were trivial fixes in a couple of files. And while that may be "good enough," it is not ideal, so we refined our approach to further reduce incompatibilities. Some of these iterations even required changing how clang worked, but the clang+LLVM community was very helpful and receptive to our proposed adjustments and additions, such as:

We recently pushed it to AOSP, and starting in Android O, the Android platform will be protected by clang FORTIFY. We're still putting some finishing touches on the NDK, so developers should expect to see our upgraded FORTIFY implementation there in the near future. In addition, as we alluded to above, Chrome OS also has a similar FORTIFY implementation now, and we hope to work with the open-source community in the coming months to get a similar implementation* into glibc, the GNU C library.

* For those who are interested, this will look very different than the Chrome OS patch. Clang recently gained an attribute called diagnose_if, which ends up allowing for a much cleaner FORTIFY implementation than our original approach for glibc, and produces far prettier errors/warnings than we currently can. We expect to have a similar diagnose_if-powered implementation in a later version of Android.

13 Apr 2017 8:43pm GMT

11 Apr 2017

feedAndroid Developers Blog

Android O to drop insecure TLS version fallback in HttpsURLConnection

Posted by Tobias Thierer, Software Engineer

To improve security, insecure TLS version fallback has been removed from HttpsURLConnection in Android O.

What is changing and why?

TLS version fallback is a compatibility workaround in the HTTPS stack to connect to servers that do not implement TLS protocol version negotiation correctly. In previous versions of Android, if the initial TLS handshake fails in a particular way, HttpsURLConnection retries the handshake with newer TLS protocol versions disabled. In Android O, it will no longer attempt those retries. Connections to servers that correctly implement TLS protocol version negotiation are not affected.

We are removing this workaround because it weakens TLS by disabling TLS protocol version downgrade protections. The workaround is no longer needed, because fewer than 0.01% of web servers relied on it as of late 2015.

Will my app be affected?

Most apps will not be affected by this change. The easiest way to be sure is to build and test your app with the Android O Developer Preview. Your app's HTTPS connections in Android O will not be affected if they:

  • Target web servers that work with recent versions of Chrome or Firefox, because those servers have correctly implemented TLS protocol version negotiation. Support for TLS version fallback was removed in Firefox 37 (Mar 2015) and Chrome 50 (Apr 2016).
  • Use a third-party HTTP library not built on top of HttpsURLConnection. We suggest you disable protocol fallback if you're using a third-party library. For example, in OkHttp versions up to 3.6, you may want to configure your OkHttpClient to only use ConnectionSpec.MODERN_TLS.

My app is affected. What now?

If your app relies on TLS version fallback, its HTTPS connections are vulnerable to downgrade attacks. To fix this, you should contact whoever operates the server. If this is not possible right away, then as a workaround you could use a third-party HTTP library that offers TLS version fallback. Be aware that using this method weakens your app's TLS security. To discover any compatibility issues, please test your app against the Android O Developer Preview.

11 Apr 2017 7:00pm GMT

10 Apr 2017

feedAndroid Developers Blog

Changes to Device Identifiers in Android O

Posted by Giles Hogben, Privacy Engineer

Android O introduces some improvements to help provide user control over the use of identifiers. These improvements include:

  • limiting the use of device-scoped identifiers that are not resettable
  • updating the Android O Wi-Fi stack in conjunction with changes to the Wi-Fi chipset firmware used by Pixel, Pixel XL and Nexus 5x phones to randomize MAC addresses in probe requests
  • updating the way that applications request account information and providing more user-facing control

Device identifier changes

Here are some of the device identifier changes for Android O:

Android ID

In O, Android ID (Settings.Secure.ANDROID_ID or SSAID) has a different value for each app and each user on the device. Developers requiring a device-scoped identifier, should instead use a resettable identifier, such as Advertising ID, giving users more control. Advertising ID also provides a user-facing setting to limit ad tracking.

Additionally in Android O:

  • The ANDROID_ID value won't change on package uninstall/reinstall, as long as the package name and signing key are the same. Apps can rely on this value to maintain state across reinstalls.
  • If an app was installed on a device running an earlier version of Android, the Android ID remains the same when the device is updated to Android O, unless the app is uninstalled and reinstalled.
  • The Android ID value only changes if the device is factory reset or if the signing key rotates between uninstall and reinstall events.
  • This change is only required for device manufacturers shipping with Google Play services and Advertising ID. Other device manufacturers may provide an alternative resettable ID or continue to provide ANDROID ID.


To be consistent with runtime permissions required for access to IMEI, use of android.os.Build.SERIAL is deprecated for apps that target Android O or newer. Instead, they can use a new Android O API, Build.getSerial(), which returns the actual serial number, as long as the caller holds the PHONE permission. In a future version of Android, apps targeting Android O will see Build.SERIAL as "UNKNOWN". To avoid breaking legacy app functionality, apps targeting prior versions of Android will continue see the device's serial number, as before.


Net.Hostname provides the network hostname of the device. In previous versions of Android, the default value of the network hostname and the value of the DHCP hostname option contained Settings.Secure.ANDROID_ID. In Android O, net.hostname is empty and the DHCP client no longer sends a hostname, following IETF RFC 7844 (anonymity profile).

Widevine ID

For new devices shipping with O, the Widevine Client ID returns a different value for each app package name and web origin (for web browser apps).

Unique system and settings properties

In addition to Build.SERIAL, there are other settings and system properties that aren't available in Android O. These include:

  • ro.runtime.firstboot: Millisecond-precise timestamp of first boot after last wipe or most recent boot
  • htc.camera.sensor.front_SN: Camera serial number (available on some HTC devices)
  • persist.service.bdroid.bdaddr: Bluetooth MAC address property
  • Settings.Secure.bluetooth_address: Device Bluetooth MAC address. In O, this is only available to apps holding the LOCAL_MAC_ADDRESS permission.

MAC address randomization in Wi-Fi probe requests

We collaborated with security researchers1 to design robust MAC address randomization for Wi-Fi scan traffic produced by the chipset firmware in Google Pixel and Nexus 5X devices. The Android Connectivity team then worked with manufacturers to update the Wi-Fi chipset firmware used by these devices.

Android O integrates these firmware changes into the Android Wi-Fi stack, so that devices using these chipsets with updated firmware and running Android O or above can take advantage of them.

Here are some of the changes that we've made to Pixel, Pixel XL and Nexus 5x firmware when running O+:

  • For each Wi-Fi scan while it is disconnected from an access point, the phone uses a new random MAC address (whether or not the device is in standby).
  • The initial packet sequence number for each scan is also randomized.
  • Unnecessary Probe Request Information Elements have been removed: Information Elements are limited to the SSID and DS parameter sets.

Changes in the getAccounts API

In Android O and above, the GET_ACCOUNTS permission is no longer sufficient to gain access to the list of accounts registered on the device. Applications must use an API provided by the app managing the specific account type or the user must grant permission to access the account via an account chooser activity. For example, Gmail can access Google accounts registered on the device because Google owns the Gmail application, but the user would need to grant Gmail access to information about other accounts registered on the device.

Apps targeting Android O or later should either use AccountManager#newChooseAccountIntent() or an authenticator-specific method to gain access to an account. Applications with a lower target SDK can still use the current flow.

In Android O, apps can also use the AccountManager.setAccountVisibility()/ getVisibility() methods to manage visibility policies of accounts owned by those apps.

In addition, the LOGIN_ACCOUNTS_CHANGED_ACTION broadcast is deprecated, but still works in Android O. Applications should use addOnAccountsUpdatedListener() to get updates about accounts at runtime for a list of account types that they specify.

Check out Best Practices for Unique Identifiers for more information.


  1. Glenn Wilkinson and team at Sensepost, UK, Célestin Matte, Mathieu Cunche: University of Lyon, INSA-Lyon, CITI Lab, Inria Privatics, Mathy Vanhoef, KU Leuven

10 Apr 2017 8:10pm GMT

06 Apr 2017

feedAndroid Developers Blog

Android Things Developer Preview 3

Posted by Wayne Piekarski, Developer Advocate for IoT

Today, we are releasing the Developer Preview 3 (DP3) of Android Things, bringing new features and bug fixes to the platform. This preview is part of our commitment to provide regular updates to developers who are building Internet of Things (IoT) products with our platform. Android developers can quickly build smart devices using Android APIs and Google services, while staying secure with updates directly from Google. The System-on-Module (SoM) architecture supports prototyping with development boards, and then scaling them to large production runs while using the same Board Support Package (BSP) from Google.

Android Bluetooth APIs

DP3 now includes support for all Android Bluetooth APIs in android.bluetooth and android.bluetooth.le, across all Android Things supported hardware. You can now write code that interacts with both Bluetooth classic and low energy (LE) devices just like a regular Android phone. Existing samples such as Bluetooth LE advertisements and scanning and Bluetooth LE GATT can be used unmodified on Android Things. We have also provided two new samples, Bluetooth LE GATT server and Bluetooth audio sink.

USB Host support

Android version 3.1 and later supports USB Host, which allows a regular user space application to communicate with USB devices without root privileges or support needed from the Linux kernel. This functionality is now supported in Android Things, to enable interfacing with custom USB devices. Any existing code supporting USB Host will work on Android Things, and an extra sample USB Enumerator is available that demonstrates how to iterate over and print the interfaces and endpoints for each USB device.


Once again, thank you to all the developers who submitted feedback for the previous developer previews. Please continue to send us your feedback by filing bug reports and feature requests, and ask any questions on stackoverflow. To download images for Developer Preview 3, visit the Android Things download page, and find the changes in the release notes. You can also join Google's IoT Developers Community on Google+, a great resource to keep up to date and discuss ideas, with over 4100 new members.

06 Apr 2017 5:00pm GMT

05 Apr 2017

feedAndroid Developers Blog

Android Developer Story: Robinhood uses Android Studio to quickly build and test new features

Posted by Christopher Katsaros, Developer Marketing, Android

Robinhood allows users to buy and sell stocks commission-free* in the US. It is designed to make financial investment easy for all users, even if you've never traded before.

With a team of two Android developers, the company has relied on fast tools like Android Studio to build rich new features, which have helped make Robinhood the highest-rated stock brokerage app on Google Play.

Watch Robinhood's Joe Binney, VP of Product Engineering, and Dan Hill, Android Developer, talk about how Android Studio is helping them achieve strong growth on Android.

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

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

*Free trading refers to $0 commissions for Robinhood Financial self-directed individual cash or margin brokerage accounts that trade U.S. listed securities via mobile devices. SEC & FINRA regulatory fees may apply.

How useful did you find this blogpost?

05 Apr 2017 4:00pm GMT

Focusing our Google Play games services efforts

Posted By James Smith, Product Manager, Google Play

In order to help developers make great games and build their businesses, we offer Google Play Games Services (GPGS). GPGS provides powerful tools to build, analyze and retain your audience and optimize your game. After listening to developer feedback and examining usage, we have decided to remove some of the features so we can focus on making our offering more useful.

In December, we announced the end of support for the creation of new iOS accounts given the low usage of GPGS on iOS. Additionally, our latest Native SDK release (2.3) will no longer support integration with iOS and going forward we will not be supporting or updating the iOS SDK.

We've also examined the features that GPGS offers. While developers use engagement and reporting tools extensively, there is lower usage for Gifts, Requests, and Quests. We therefore plan to stop supporting Gifts, Requests, and Quests. In order to help developers that do use these features plan for their removal, we will leave them open for 12 months, deactivating them by 31st March 2018. We'll be continuing support for other features such as Sign-in, Achievements, Leaderboards and Multiplayer.

Play games services remains an important part of the tools we provide developers, and we're working hard on future GPGS updates. We continue to be strongly committed to providing high quality services for Games, including new tools such as official Firebase support for Unity and C++ developers, and integration with Firebase Analytics. These changes allow us to focus our efforts on the services developers value most to build high quality, engaging games.

How useful did you find this blogpost?

05 Apr 2017 3:19pm GMT

03 Apr 2017

feedAndroid Developers Blog

An investigation of Chrysaor Malware on Android

Posted by Rich Cannings, Jason Woloz, Neel Mehta, Ken Bodzak, Wentao Chang, Megan Ruthven

Google is constantly working to improve our systems that protect users from Potentially Harmful Applications (PHAs). Usually, PHA authors attempt to install their harmful apps on as many devices as possible. However, a few PHA authors spend substantial effort, time, and money to create and install their harmful app on one or a very small number of devices. This is known as a targeted attack.

In this blog post, we describe Chrysaor, a newly discovered family of spyware that was used in a targeted attack on a small number of Android devices, and how investigations like this help Google protect Android users from a variety of threats.

What is Chrysaor?

Chrysaor is spyware believed to be created by NSO Group Technologies, specializing in the creation and sale of software and infrastructure for targeted attacks. Chrysaor is believed to be related to the Pegasus spyware that was first identified on iOS and analyzed by Citizen Lab and Lookout.

Late last year, after receiving a list of suspicious package names from Lookout, we discovered that a few dozen Android devices may have installed an application related to Pegasus, which we named Chrysaor. Although the applications were never available in Google Play, we immediately identified the scope of the problem by using Verify Apps. We gathered information from affected devices, and concurrently, attempted to acquire Chrysaor apps to better understand its impact on users. We've contacted the potentially affected users, disabled the applications on affected devices, and implemented changes in Verify Apps to protect all users.

What is the scope of Chrysaor?

Chrysaor was never available in Google Play and had a very low volume of installs outside of Google Play. Among the over 1.4 billion devices protected by Verify Apps, we observed fewer than 3 dozen installs of Chrysaor on victim devices. These devices were located in the following countries:

How we protect you

To protect Android devices and users, Google Play provides a complete set of security services that update outside of platform releases. Users don't have to install any additional security services to keep their devices safe. In 2016, these services protected over 1.4 billion devices, making Google one of the largest providers of on-device security services in the world:
Additionally, we are providing detailed technical information to help the security industry in our collective work against PHAs.

What do I need to do?

It is extremely unlikely you or someone you know was affected by Chrysaor malware. Through our investigation, we identified less than 3 dozen devices affected by Chrysaor, we have disabled Chrysaor on those devices, and we have notified users of all known affected devices. Additionally, the improvements we made to our protections have been enabled for all users of our security services.
To ensure you are fully protected against PHAs and other threats, we recommend these 5 basic steps:
  • Install apps only from reputable sources: Install apps from a reputable source, such as Google Play. No Chrysaor apps were on Google Play.
  • Enable a secure lock screen: Pick a PIN, pattern, or password that is easy for you to remember and hard for others to guess.
  • Update your device: Keep your device up-to-date with the latest security patches.
  • Verify Apps: Ensure Verify Apps is enabled.
  • Locate your device: Practice finding your device with Android Device Manager because you are far more likely to lose your device than install a PHA.

How does Chrysaor work?

To install Chrysaor, we believe an attacker coaxed specifically targeted individuals to download the malicious software onto their device. Once Chrysaor is installed, a remote operator is able to surveil the victim's activities on the device and within the vicinity, leveraging microphone, camera, data collection, and logging and tracking application activities on communication apps such as phone and SMS.

One representative sample Chrysaor app that we analyzed was tailored to devices running Jellybean (4.3) or earlier. The following is a review of scope and impact of the Chrysaor app named com.network.android tailored for a Samsung device target, with SHA256 digest:

Upon installation, the app uses known framaroot exploits to escalate privileges and break Android's application sandbox. If the targeted device is not vulnerable to these exploits, then the app attempts to use a superuser binary pre-positioned at /system/csk to elevate privileges.

After escalating privileges, the app immediately protects itself and starts to collect data, by:
  • Installing itself on the /system partition to persist across factory resets
  • Removing Samsung's system update app (com.sec.android.fotaclient) and disabling auto-updates to maintain persistence (sets Settings.System.SOFTWARE_UPDATE_AUTO_UPDATE to 0)
  • Deleting WAP push messages and changing WAP message settings, possibly for anti-forensic purpose.
  • Starting content observers and the main task loop to receive remote commands and exfiltrate data

The app uses six techniques to collect user data:

  • Repeated commands: use alarms to periodically repeat actions on the device to expose data, including gathering location data.
  • Data collectors: dump all existing content on the device into a queue. Data collectors are used in conjunction with repeated commands to collect user data including, SMS settings, SMS messages, Call logs, Browser History, Calendar, Contacts, Emails, and messages from selected messaging apps, including WhatsApp, Twitter, Facebook, Kakoa, Viber, and Skype by making /data/data directories of the apps world readable.
  • Content observers: use Android's ContentObserver framework to gather changes in SMS, Calendar, Contacts, Cell info, Email, WhatsApp, Facebook, Twitter, Kakao, Viber, and Skype.
  • Screenshots: captures an image of the current screen via the raw frame buffer.
  • Keylogging: record input events by hooking IPCThreadState::Transact from /system/lib/libbinder.so, and intercepting android::parcel with the interface com.android.internal.view.IInputContext.
  • RoomTap: silently answers a telephone call and stays connected in the background, allowing the caller to hear conversations within the range of the phone's microphone. If the user unlocks their device, they will see a black screen while the app drops the call, resets call settings and prepares for the user to interact with the device normally.

Finally, the app can remove itself through three ways:

  • Via a command from the server
  • Autoremove if the device has not been able to check in to the server after 60 days
  • Via an antidote file. If /sdcard/MemosForNotes was present on the device, the Chrysaor app removes itself from the device.

Samples uploaded to VirusTotal

To encourage further research in the security community, we've uploaded these sample Chrysaor apps to Virus Total.

Package Name
SHA256 digest
SHA1 certificate

Additional digests with links to Chrysaor

As a result of our investigation we have identified these additional Chrysaor-related apps.

Package Name
SHA256 digest
SHA1 certificate

Lookout has completed their own independent analysis of the samples we acquired, their report can be viewed here.

03 Apr 2017 7:54pm GMT

31 Mar 2017

feedAndroid Developers Blog

5 tips for indie game success, from indie game developers

Posted by Sarah Thomson, BD Partnerships Lead, Indies, Google Play Games

Mobile gaming is a fun place to be right now. It's a landscape seeing tremendous success year after year with great potential for additional growth and innovation. It's also a space where developers can express themselves with creative game styles, mechanics, design and more. This is what the indie community does best.

Here are 5 tips for indies by indies, shared by our gaming partners at 505 Games, About Fun, Disruptor Beam, Klei Entertainment, and Schell Games.

1. Embrace being indie

Indies are inherently smaller operations and should embrace their agility and ability to take risks. Petr Vodak, CEO at About Fun, recommends getting your product out there so you can start taking feedback and apply your learnings to future projects. Don't be afraid to fail! Remaining flexible and building in modularity so you can evolve with the business needs is a strategy embraced by Pete Arden, CMO at Disruptor Beam. For instance, with their game Star Trek Timelines, the initial user experience was tailored to avid Star Trek fans. Over time, as user acquisition costs increased, they've changed the new player experience to appeal to their evolving user base of gamers looking for a fun entertainment experience and less the specific Star Trek IP.

2. Find a way to stand out

To help stand out in the ultra competitive mobile space, Jesse Schell, CEO of Schell Games, recommends doing something clever or very different. This strategy has led them to explore the growth areas of new platforms such as AR & VR. While new platforms present a field for opportunity and creativity, they're best to be approached with the long term in mind allowing you to sustain the business until critical mass is reached.

3. Build a community

There are many ways to build communities. If you have an existing fan base on other platforms, cross-promote to drive awareness of your mobile offerings. You can also look at porting titles over, but be aware of the differences in mobile gaming habits and ensure you adapt your game accordingly.

4. Engage after install

Both 505 Games and Klei Entertainment recommend running your premium titles as a service. Through monitoring user reviews you can gain invaluable feedback and trends helping you better understand user pain points and desires. In addition, by releasing regular content updates and in-game events you create reason for users to get back in the game. This not only drives reengagement, but 505 Games also sees strong spikes in new installs aligned with major game updates.

5. Monetize in different ways

Similar strategy to above, dropping regular content refreshes and game updates while offering a variety of monetization options gives users more ways to engage with your game. Keeping your games fresh gives users reason to come back and builds loyalty so you can cross-promote to your users with future game launches.

If you're looking for a fun new game to play, check out the great selection on Indie Corner on Google Play. And if you're working on a new indie game of your own, nominate your title for inclusion.

Watch more sessions from Google Developer Day at GDC17 on the Android Developers YouTube channel to learn tips for success. 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?

31 Mar 2017 3:11pm GMT

29 Mar 2017

feedAndroid Developers Blog

Update your app to take advantage of the larger aspect ratio on new Android flagship devices

Posted by Neto Marin, Developer Advocate, Google Play

To deliver more engaging viewing experiences to their users, many Android OEMs are experimenting with new, super widescreen smartphones. Samsung has just announced a new flagship device, the Samsung Galaxy S8, featuring a new display format with an aspect ratio of 18.5:9. At the Mobile World Congress earlier this year, LG also launched their new flagship device, the LG G6, with an expanded screen aspect ratio of 18:9.
(Left) An app with a maximum aspect ratio set at 16:9 on an 18.5:9 device
(Right) An app with a maximum aspect ratio set at or over 18.5:9 on an 18.5:9 device

In order to take full advantage of the larger display formats on these devices, you should consider increasing your app's maximum supported aspect ratio. To do so, simply declare an android.max_aspect <meta-data> element in the app's <application> element:

<meta-data android:name="android.max_aspect"
Where ratio_float is the maximum aspect ratio your app can support, expressed as (longer dimension / shorter dimension) in decimal form.

We recommend that you design your app to support aspect ratios of 2.1 or higher. For this, you would add the following to the <application> element:

<meta-data android:name="android.max_aspect" android:value="2.1" />
Note: if you don't set a value, and android:resizeableActivity is not true, then the maximum aspect ratio defaults to 1.86 (roughly 16:9) and your app will not take advantage of the extra screen space.

As more super widescreen Android devices, like the Samsung Galaxy S8 and the LG G6, become available, you'll have more opportunities to display more content and create more engaging experiences with your app.

For more details about how to support multiple screens on Android, please visit the page Supporting Multiple Screens.

29 Mar 2017 5:09pm GMT

28 Mar 2017

feedAndroid Developers Blog

Calling all early adopters for Android Studio previews

Posted by Scott Main, Technical Writer

If you love trying out all of the newest features in Android Studio and helping us make it a better IDE, we're making it even easier to download early preview builds with a new website. Here, you can download and stay up to date on all the latest Android Studio previews and other tools announcements.

Android Studio previews give you early access to new features in all aspects of the IDE, plus early versions of other tools such as the Android Emulator and platform SDK previews. You can install multiple versions of Android Studio side-by-side, so if a bug in the preview build blocks your app development, you can keep working on the same project from the stable version.

The latest preview for Android Studio 2.4 just came out last week, and it includes new features to support development with the Android O Developer Preview. You can download and set up the O preview SDK from inside Android Studio, and then use Android O's XML font resources and autosizing TextView in the Layout Editor.

By building your apps with the Android Studio preview, you're also helping us create a better version of Android Studio. We want to hear from you if you encounter any bugs.

28 Mar 2017 4:00pm GMT

27 Mar 2017

feedAndroid Developers Blog

5 tips for building communities on mobile

Posted by Dave Geffon, Partnerships Manager, Google Play Games

The most successful games usually have the strongest communities. They are a powerful force in driving additional engagement and increasing awareness for your titles. At GDC 2017, we spoke with a few game developers about best practices for successfully building their own communities. Watch the panel session below to hear advice from Seriously, Social Point, and Super Evil MegaCorp.

1. Be authentic

Community is a mindset; be honest, transparent & patient with your communications. Loyal users are extremely valuable, thus the folks at Super Evil Megacorp say that you should act like you have to earn every player.

2. Start small

Build a plan and start today. Launch your social media channels, look into influencers, and create a strategy. Whether it's sharing one piece of fan art a week across your network, or running a closed beta to gather feedback from your most valued users, take action and learn what works best for you and your users.

3. Play match-maker

When finding influencers to support your game, ensure they're a genuine match. Make sure the influencer's audience is a good fit with your game and existing community.

4. Seek feedback

Communities are passionate. Use feedback to understand what kind of game and features your users want. Be flexible and iterative so you can react and evolve your game with the needs and desires of your community. However, don't be afraid to stay true to what you stand for as sometimes you'll need to agree to disagree with some players.

5. Build for the long-term

The lifespan of games is continuing to grow. Plan your business strategy, update cycles and community efforts to roll out over time and expand with your growing experiences and user-base.
Watch more 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?

27 Mar 2017 4:01pm 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