Warning: Table './devblogsdb/cache_page' is marked as crashed and last (automatic?) repair failed query: SELECT data, created, headers, expire, serialized FROM cache_page WHERE cid = 'http://www.softdevblogs.com/?q=aggregator/sources/30' in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc on line 135

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 729

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 730

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 731

Warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/bootstrap.inc on line 732
Software Development Blogs: Programming, Software Testing, Agile, Project Management
Skip to content

Software Development Blogs: Programming, Software Testing, Agile Project Management

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Android Developers Blog
warning: Cannot modify header information - headers already sent by (output started at /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/database.mysql.inc:135) in /home/content/O/c/n/Ocnarfparking9/html/softdevblogs/includes/common.inc on line 153.
Syndicate content
An Open Handset Alliance Project.
Updated: 5 hours 50 min ago

Android Wear 2.0 Developer Preview 3: Play Store and More

10 hours 15 min ago

Posted by Hoi Lam, Developer Advocate

Today we’re launching the third developer preview of Android Wear 2.0 with a big new addition: Google Play on Android Wear. The Play Store app makes it easy for users to find and install apps directly on the watch, helping developers like you reach more users.

Play Store features

With Play Store for Android Wear, users can browse recommended apps in the home view and search for apps using voice, keyboard, handwriting, and recommended queries, so they can find apps more easily. Users can switch between multiple accounts, be part of alpha and beta tests, and update or uninstall apps in the “My apps” view on their watch, so they can manage apps more easily. Perhaps the coolest feature: If users want an app on their watch but not on their phone, they can install only the watch app. In fact, in Android Wear 2.0, phone apps are no longer necessary. You can now build and publish watch-only apps for users to discover on Google Play.

Why an on-watch store?

We asked developers like you what you wanted most out of Android Wear, and you told us you wanted to make it easier for users to discover apps. So we ran studies with users to find out where they expected and wanted to discover apps––and they repeatedly looked for and asked for a way to discover apps right on the watch itself. Along with improvements to app discovery on the phone and web, the Play Store on the watch helps users find apps right where they need them.

Publish your apps

To make your apps available on Play Store for Android Wear, just follow these steps. You’ll need to make sure your Android Wear 2.0 apps set minSdkVersion to 24 or higher, use the runtime permissions model, and are uploaded via multi-APK using the Play Developer Console. If your app supports Android Wear 1.0, the developer guide also covers the use of product flavors in Gradle.

Download the New Android Wear companion app

To set up Developer Preview 3, you’ll need to install a beta version of the Android Wear app on your phone, flash your watch to the latest preview release, and use the phone app to add a Google Account to your watch. These steps are detailed in Download and Test with a Device. If you don’t have a watch to test on, you can use the emulator as well.

Other additions in Developer Preview 3 Developer Preview 3 also includes:
  • Complications improvements: Starting with Developer Preview 3, watch face developers will need to request RECEIVE_COMPLICATION_DATA permission before the watch face can receive complication data. We have added ComplicationHelperActivity to make this easier. In addition, watch face developers can now set default complications, including a selection of system data complications which do not require special permission (e.g. battery level and step count), as well as data providers that have whitelisted the watch face. Lastly, there are behavior changes related to ComplicationData to 1) help better differentiate various scenarios leading to “empty data” and 2) ease development by returning a default value for fields not supported by a complication type instead of throwing a runtime exception.
  • New WearableRecyclerView: This new UI component helps developers display and manipulate vertical lists of items while optimizing for round displays.
  • Inline Action for Notifications: A new API makes it easy to take action on a notification right from the stream. Developers can specify which action is displayed inline at the bottom of the notification by calling setHintDisplayActionInline:
    NotificationCompat.Action replyAction =
        new NotificationCompat.Action.Builder(R.drawable.ic_message_white_24dp,
                "Reply", replyPendingIntent)
                .addRemoteInput(remoteInput)
                .extend(new NotificationCompat.Action.WearableExtender()
                        .setHintDisplayActionInline(true))
                .build(); 
  • Smart Reply: Android Wear now generates Smart Reply responses for MessagingStyle notifications. Smart Reply responses are generated by an entirely on-watch machine learning model using the context provided by the MessagingStyle notification, and no data is uploaded to the cloud to generate the responses.
  • And much more: Read about the complete list of changes in the Android Wear developer preview release notes. Timeline

    We’ve gotten tons of great feedback from the developer community about Android Wear 2.0––thank you! We’ve decided to continue the preview program into early 2017, at which point the first watches will receive Android Wear 2.0. Please keep the feedback coming by filing bugs or posting in our Android Wear Developers community, and stay tuned for Android Wear Developer Preview 4.

Categories: Programming

Announcing the winners of the Google Play Indie Games Festival in San Francisco; Indie Games Contest coming soon to Europe

Tue, 09/27/2016 - 18:03

Posted by Jamil Moledina, Google Play, Games Strategic Lead

Last Saturday, we hosted the first Google Play Indie Games Festival in North America, where we showcased 30 amazing games that celebrate the passion, innovation, and art of indies. After a competitive round of voting from fans and on-stage presentations to a jury of industry experts, we recognized seven finalists nominees and three winners.

Winners: bit bit blocks Presented by Greg Batha Bit Bit Blocks is a cute and action-packed competitive puzzle game. Play with your friends on a single screen, or challenge yourself in single player mode. Head-to-head puzzle play anytime, anywhere. Numbo Jumbo Presented by Kaveh Daryabeygi, Wombo Combo Numbo Jumbo is a casual mobile puzzle number game for iOS and Android. Players group numbers that add together: for example, [3, 5, 8] works because 3+5=8. Orbit - Playing with Gravity Presented by Chetan Surpur & Eric Rahman, Highkey Games ORBIT puts a gravity simulator at the heart of a puzzle game. Launch planets with a flick of your finger, and try to get them into orbit around black holes. ORBIT also features a sandbox where you can create your own universes, control time, and paint with gravity.
Finalist nominees:
Antihero [coming later in 2016] Presented by Tim Conkling Antihero is a "fast-paced strategy game with an (Oliver) Twist." Run a thieves' guild in a gas-lit, corrupt city. Recruit urchins, hire thugs, steal everything – and bribe, blackmail, and assassinate your opposition. Single-player and cross-platform multiplayer for desktops, tablets, and phones. Armajet [coming later in 2016] Presented by Nicola Geretti & Alexander Krivicich, Super Bit Machine Armajet is a free-to-play multiplayer shooter that pits teams of players against each other in fast-paced jetpack combat. Armajet is a best in class mobile game designed for spectator-friendly competitive gaming for tablets and smartphones. Players compete in a modern arena shooter that’s easy to learn, but hard to master. Norman's Night In: The Cave [coming later in 2016] Presented by Nick Iorfino & Alex Reed, Bactrian Games Norman's Night In is a 2D puzzle-platformer that tells the tale of Norman and his fateful fall into the world of cave. While test driving the latest model 3c Bowling Ball, Norman finds himself lost with nothing but his loaned bball and a weird feeling that somehow he was meant to be there. Parallyzed Presented by David Fox, Double Coconut Parallyzed is an atmospheric adventure platformer with unique gameplay, set in a dark and enchanting dreamscape. You play twin sisters who have been cast into separate dimensions. Red and Blue have different attributes and talents, are deeply connected, and have the ability to swap bodies at any time.

Finalists nominees and winners also received a range of prizes, including Google I/O 2017 tickets, a Tango Development kit, Google Cloud credits, an NVIDIA Android TV & K1 tablet, and a Razer Forge TV bundle.

Indie Games Contest coming to Europe

We’re continuing our effort to help indie game developers thrive by highlighting innovative and fun games for fans around the world. Today, we are announcing the Indie Games Contest for developers based in European countries (specific list of countries coming soon!). This is a great opportunity for indie games developers to win prizes that will help you showcase your art to industry experts and grow your business and your community of players worldwide. Make sure you don’t miss out on hearing the details by signing up here for updates.

As we shared at the festival, it’s rewarding to see how Google Play has evolved over the years. We’re now reaching over 1 billion users every month and there’s literally something for everyone. From virtual reality to family indie games, developers like you continue to inspire, provoke, and innovate through beautiful, artistic games.

Categories: Programming

Extending Web Technology with Android

Wed, 09/21/2016 - 18:01

Developer guest post by Active Theory

Paper Planes started as a simple thought - “What if you could throw a paper plane from one screen to another?”

The heart of our concept was to bring people together from all over the world, using the power of the web - an instant connection to one another. Modern web technology, specifically JavaScript and WebGL, powered the experience on every screen.

Paper Planes was initially featured at Google I/O 2016, connecting attendees and outside viewers for 30 minutes preceding the keynote. For the public launch on International Peace Day 2016, we created an Android Experiment, which is also featured on Google Play, to augment the existing web technology with native Android Nougat features such as rich notifications when a plane is caught elsewhere in the world.

Introduction

Users create and fold their own plane while adding a stamp that is pre-filled with their location. A simple throwing gesture launches the plane into the virtual world. Users visiting the desktop website would see their planes flying into the screen.

Later, users can check back and see where their planes have been caught around the world. Each stamp on the plane reads like a passport, and a 3D Earth highlights flightpath and distance travelled.

In addition to making their own planes, users can gesture their phone like a net to catch a plane that has been thrown from elsewhere and pinch to open it, revealing where it has visited. Then they can add their own stamp, and throw it back into the flock.

WebView

We developed Paper Planes to work across devices ranging from the 50-foot screen on stage at Google I/O to desktop and mobile using the latest in web technology.

WebGL

From the stylized low-poly Earth to the flocking planes, WebGL is used to render the 3D elements that power the experience. We wrote custom GLSL shaders to light the Earth and morph targets to animate the paper as the user pinches to open or close.

WebSockets

When a user “throws” a plane a message is sent over websockets to the back-end servers where it is relayed to all desktop computers to visualize the plane taking off.

WebWorkers

The plane flocking simulation is calculated across multiple threads using WebWorkers that calculate the position of each plane and relay that information back to the main thread to be rendered by WebGL.

To create an experience that works great across platforms, we extended the web with native Android code. This enabled us to utilize the deep integration of Chromium within Android to make the view layer of the application with the web code that already existed, while adding deeper integration with the OS such as rich notifications and background services.

If you’re interested in learning more about how to bridge WebView and Java code, check out this GitHub repo for a tutorial.

Notifications

Firebase Cloud Messaging (FCM) was used to send push notifications to the Android app. When a user’s plane has been caught and thrown by someone else, a notification showing how many cities and miles it has travelled is sent to the device of the plane’s creator via FCM. Outgoing notifications are managed to ensure they are not sent too frequently to a device.

Background Service

We implemented a background service to run once a day which checks against local storage to determine when a user last visited the app. If the user hasn’t visited in over two weeks, the app sends a notification to invite the user back into the app to create a new plane.

The Communication Network

Our application runs on a network of servers on Google Cloud Platform. We used built-in geocoding headers to get approximate geographic locations for stamps and Socket.IO to connect all devices over WebSockets.

Users connect to the server nearest them, which relays messages to a single main server as well as to any desktop computers viewing the experience in that region.

Moving forward

This approach worked extremely well for us, enabling an experience that was smooth and captivating across platforms and form factors, connecting people from all over the world. Extending the web with native capabilities has proven to be a valuable avenue to deliver high quality experiences going forward. You can learn even more on the Android Experiments website.

Categories: Programming

Android Studio 2.2

Tue, 09/20/2016 - 23:38

By Jamal Eason, Product Manager, Android

Android Studio 2.2 is available to download today. Previewed at Google I/O 2016, Android Studio 2.2 is the latest release of our IDE used by millions of Android developers around the world.

Packed with enhancements, this release has three major themes: speed, smarts, and Android platform support. Develop faster with features such as the new Layout Editor, which makes creating an app user interface quick and intuitive. Develop smarter with our new APK analyzer, enhanced Layout Inspector, expanded code analysis, IntelliJ’s 2016.1.3 features and much more. Lastly, as the official IDE for Android app development, Android Studio 2.2 includes support for all the latest developer features in Android 7.0 Nougat, like code completion to help you add Android platform features like Multi-Window support, Quick Settings API, or the redesigned Notifications, and of course, the built-in Android Emulator to test them all out.

In this release, we evolved the Android Frameworks and the IDE together to create the Constraint Layout. This powerful new layout manager helps you design large and complex layouts in a flat and streamlined hierarchy. The ConstraintLayout integrates into your app like a standard Android support library, and was built in parallel with the new Layout Editor.

Android Studio 2.2 includes 20+ new features across every major phase of the development process: design, develop, build, & test. From designing UIs with the new ConstraintLayout, to developing C++ code with the Android NDK, to building with the latest Jack compliers, to creating Espresso test cases for your app, Android Studio 2.2 is the update you do not want to miss. Here’s more detail on some of the top highlights:

Design

  • Layout Editor: Creating Android app user interfaces is now easier with the new user interface designer. Quickly construct the structure of your app UI with the new blueprint mode and adjust the visual attributes of each widget with new properties panel. Learn more.

Layout Editor

  • Constraint Layout: This new layout is a flexible layout manager for your app that allows you to create dynamic user interfaces without nesting multiple layouts. It is backwards compatible all the way back to Android API level 9 (Gingerbread). ConstraintLayout works best with the new Layout Editor in Android Studio 2.2. Learn more.

ConstraintLayout

Develop

  • Improved C++ Support: You can now use CMake or ndk-build to compile your C++ projects from Gradle. Migrating projects from CMake build systems to Android Studio is now seamless. You will also find C++ support in the new project wizard in Android Studio, plus a number of bug fixes to the C++ edit and debug experience. Learn more.

C++ Code Editing & CMake Support

  • Samples Browser: Referencing Android sample code is now even easier with Android Studio 2.2. Within the code editor window, find occurrences of your app code in Google Android sample code to help jump start your app development. Learn more.

Sample Code Menu

Build

  • Instant Run Improvements: Introduced in Android Studio 2.0, Instant Run is our major, long-term investment to make Android development as fast and lightweight. Since launch, it has significantly improved the edit, build, run iteration cycles for many developers. In this release, we have made many stability and reliability improvements to Instant Run. If you have previously disabled Instant Run, we encourage you to re-enable it and let us know if you come across further issues. (Settings → Build, Execution, Deployment → Instant Run [Windows/Linux] , Preferences → Build, Execution, Deployment → Instant Run [OS X]). For details on the fixes that we have made, see the Android Studio 2.2 release notes.

Enable Instant Run

  • APK Analyzer: Easily inspect the contents of your APKs to understand the size contribution of each component. This feature can be helpful when debugging multi-dex issues. Plus, with the APK Analyzer you can compare two versions of an APK. Learn more.

APK Analyzer

  • Build cache (Experimental): We are continuing our investments to improve build speeds with the introduction of a new experimental build cache that will help reduce both full and incremental build times. Just add android.enableBuildCache=true to your gradle.properties file. Learn more.

Build Cache Setting

Test

  • Virtual Sensors in the Android Emulator: The Android Emulator now includes a new set of virtual sensors controls. With the new UI controls, you can now test Android Sensors such as Accelerometer, Ambient Temperature, Magnetometer and more. Learn more.

Android Emulator Virtual Sensors

  • Espresso Test Recorder (Beta): The Espresso Test Recorder lets you easily create UI tests by recording interactions with your app; it then outputs the UI test code for you. You record your interactions with a device and add assertions to verify UI elements in particular snapshots of your app. Espresso Test Recorder then takes the saved recording and automatically generates a corresponding UI test. You can run the test locally, on your continuous integration server, or using Firebase Test Lab for Android. Learn more.
Espresso Test Recorder
  • GPU Debugger (Beta): The GPU Debugger is now in Beta. You can now capture a stream of OpenGL ES commands on your Android device and then replay it from inside Android Studio for analysis. You can also fully inspect the GPU state of any given OpenGL ES command to better understand and debug your graphical output. Lean more.
GPU Debugger

To recap, Android Studio 2.2 includes these major features and more:

Design

Develop

Build

Test

Learn more about Android Studio 2.2 by reviewing the release notes and the preview blog post.

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.2 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.2.0 in your current app project.

Next Release

We would like to thank all of you in the Android Developer community for your work on this release. We are grateful for your contributions, your ongoing feedback which inspired the new features in this release, and your highly active use on canary and beta builds filing bugs. We all wanted to make Android Studio 2.2 our best release yet, with many stability and performance fixes in addition to the many new features. For our next release, look for even more; we want to work hard to address feedback and keep driving up quality and stability on existing features to make you productive.

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.


What's New in Android Studio 2.2
Categories: Programming

Android Studio 2.2

Mon, 09/19/2016 - 20:05

By Jamal Eason, Product Manager, Android

Android Studio 2.2 is available to download today. Previewed at Google I/O 2016, Android Studio 2.2 is the latest release of our IDE used by millions of Android developers around the world.

Packed with enhancements, this release has three major themes: speed, smarts, and Android platform support. Develop faster with features such as the new Layout Editor, which makes creating an app user interface quick and intuitive. Develop smarter with our new APK analyzer, enhanced Layout Inspector, expanded code analysis, IntelliJ’s 2016.1.3 features and much more. Lastly, as the official IDE for Android app development, Android Studio 2.2 includes support for all the latest developer features in Android 7.0 Nougat, like code completion to help you add Android platform features like Multi-Window support, Quick Settings API, or the redesigned Notifications, and of course, the built-in Android Emulator to test them all out.

In this release, we evolved the Android Frameworks and the IDE together to create the Constraint Layout. This powerful new layout manager helps you design large and complex layouts in a flat and streamlined hierarchy. The ConstraintLayout integrates into your app like a standard Android support library, and was built in parallel with the new Layout Editor.

Android Studio 2.2 includes 20+ new features across every major phase of the development process: design, develop, build, & test. From designing UIs with the new ConstraintLayout, to developing C++ code with the Android NDK, to building with the latest Jack compliers, to creating Espresso test cases for your app, Android Studio 2.2 is the update you do not want to miss. Here’s more detail on some of the top highlights:

Design

  • Layout Editor: Creating Android app user interfaces is now easier with the new user interface designer. Quickly construct the structure of your app UI with the new blueprint mode and adjust the visual attributes of each widget with new properties panel. Learn more.

Layout Editor

  • Constraint Layout: This new layout is a flexible layout manager for your app that allows you to create dynamic user interfaces without nesting multiple layouts. It is backwards compatible all the way back to Android API level 9 (Gingerbread). ConstraintLayout works best with the new Layout Editor in Android Studio 2.2. Learn more.

ConstraintLayout

Develop

  • Improved C++ Support: You can now use CMake or ndk-build to compile your C++ projects from Gradle. Migrating projects from CMake build systems to Android Studio is now seamless. You will also find C++ support in the new project wizard in Android Studio, plus a number of bug fixes to the C++ edit and debug experience. Learn more.

C++ Code Editing & CMake Support

  • Samples Browser: Referencing Android sample code is now even easier with Android Studio 2.2. Within the code editor window, find occurrences of your app code in Google Android sample code to help jump start your app development.

Sample Code Menu

Build

  • Instant Run Improvements: Introduced in Android Studio 2.0, Instant Run is our major, long-term investment to make Android development as fast and lightweight. Since launch, it has significantly improved the edit, build, run iteration cycles for many developers. In this release, we have made many stability and reliability improvements to Instant Run. If you have previously disabled Instant Run, we encourage you to re-enable it and let us know if you come across further issues. (Settings → Build, Execution, Deployment → Instant Run [Windows/Linux] , Preferences → Build, Execution, Deployment → Instant Run [OS X]). For details on the fixes that we have made, see the Android Studio 2.2 release notes.

Enable Instant Run

  • APK Analyzer: Easily inspect the contents of your APKs to understand the size contribution of each component. This feature can be helpful when debugging multi-dex issues. Plus, with the APK Analyzer you can compare two versions of an APK. Learn more.

APK Analyzer

  • Build cache (Experimental): We are continuing our investments to improve build speeds with the introduction of a new experimental build cache that will help reduce both full and incremental build times. Just add android.enableBuildCache=true to your gradle.properties file. Learn more.

Build Cache Setting

Test

  • Virtual Sensors in the Android Emulator: The Android Emulator now includes a new set of virtual sensors controls. With the new UI controls, you can now test Android Sensors such as Accelerometer, Ambient Temperature, Magnetometer and more. Learn more.

Android Emulator Virtual Sensors

  • Espresso Test Recorder (Beta): The Espresso Test Recorder lets you easily create UI tests by recording interactions with your app; it then outputs the UI test code for you. You record your interactions with a device and add assertions to verify UI elements in particular snapshots of your app. Espresso Test Recorder then takes the saved recording and automatically generates a corresponding UI test. You can run the test locally, on your continuous integration server, or using Firebase Test Lab for Android. Learn more.
Espresso Test Recorder
  • GPU Debugger (Beta): The GPU Debugger is now in Beta. You can now capture a stream of OpenGL ES commands on your Android device and then replay it from inside Android Studio for analysis. You can also fully inspect the GPU state of any given OpenGL ES command to better understand and debug your graphical output. Lean more.
GPU Debugger

To recap, Android Studio 2.2 includes these major features and more:

Design

Develop

Build

Test

Learn more about Android Studio 2.2 by reviewing the release notes and the preview blog post.

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.2 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.2.0 in your current app project.

Next Release

We would like to thank all of you in the Android Developer community for your work on this release. We are grateful for your contributions, your ongoing feedback which inspired the new features in this release, and your highly active use on canary and beta builds filing bugs. We all wanted to make Android Studio 2.2 our best release yet, with many stability and performance fixes in addition to the many new features. For our next release, look for even more; we want to work hard to address feedback and keep driving up quality and stability on existing features to make you productive.

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.


What's New in Android Studio 2.2
Categories: Programming

Android Developer Story: Hutch improves player engagement with A/B testing on Google Play

Thu, 09/15/2016 - 22:31
Posted by Lily Sheringham, Google Play team

Hutch is a London based mobile studio focusing entirely on racing games, with more than 10 million players on Google Play. For their latest game, MMX Hill Climb, they used A/B testing and game analytics to improve the game design and experience resulting in more than 48 mins daily active usage per user.

Watch Shaun Rutland, CEO, and Robin Scannell, Games Analyst, explain how they were able to deliver a more engaging user experience in this video.

Learn more about A/B testing and get the Playbook for Developers app to stay up-to-date on new features and learn best practices that will help you grow a successful business on Google Play.

Categories: Programming

Keeping Android safe: Security enhancements in Nougat

Thu, 09/15/2016 - 22:31

Posted by Xiaowen Xin, Android Security Team

Over the course of the summer, we previewed a variety of security enhancements in Android 7.0 Nougat: an increased focus on security with our vulnerability rewards program, a new Direct Boot mode, re-architected mediaserver and hardened media stack, apps that are protected from accidental regressions to cleartext traffic, an update to the way Android handles trusted certificate authorities, strict enforcement of verified boot with error correction, and updates to the Linux kernel to reduce the attack surface and increase memory protection. Phew!

Now that Nougat has begun to roll out, we wanted to recap these updates in a single overview and highlight a few new improvements.

Direct Boot and encryption

In previous versions of Android, users with encrypted devices would have to enter their PIN/pattern/password by default during the boot process to decrypt their storage area and finish booting. With Android 7.0 Nougat, we’ve updated the underlying encryption scheme and streamlined the boot process to speed up rebooting your phone. Now your phone’s main features, like the phone app and your alarm clock, are ready right away before you even type your PIN, so people can call you and your alarm clock can wake you up. We call this feature Direct Boot.

Under the hood, file-based encryption enables this improved user experience. With this new encryption scheme, the system storage area, as well as each user profile storage area, are all encrypted separately. Unlike with full-disk encryption, where all data was encrypted as a single unit, per-profile-based encryption enables the system to reboot normally into a functional state using just device keys. Essential apps can opt-in to run in a limited state after reboot, and when you enter your lock screen credential, these apps then get access your user data to provide full functionality.

File-based encryption better isolates and protects individual users and profiles on a device by encrypting data at a finer granularity. Each profile is encrypted using a unique key that can only be unlocked by your PIN or password, so that your data can only be decrypted by you.

Encryption support is getting stronger across the Android ecosystem as well. Starting with Marshmallow, all capable devices were required to support encryption. Many devices, like Nexus 5X and 6P also use unique keys that are accessible only with trusted hardware, such as the ARM TrustZone. Now with 7.0 Nougat, all new capable Android devices must also have this kind of hardware support for key storage and provide brute force protection while verifying your lock screen credential before these keys can be used. This way, all of your data can only be decrypted on that exact device and only by you.

The media stack and platform hardening

In Android Nougat, we’ve both hardened and re-architected mediaserver, one of the main system services that processes untrusted input. First, by incorporating integer overflow sanitization, part of Clang’s UndefinedBehaviorSanitizer, we prevent an entire class of vulnerabilities, which comprise the majority of reported libstagefright bugs. As soon as an integer overflow is detected, we shut down the process so an attack is stopped. Second, we’ve modularized the media stack to put different components into individual sandboxes and tightened the privileges of each sandbox to have the minimum privileges required to perform its job. With this containment technique, a compromise in many parts of the stack grants the attacker access to significantly fewer permissions and significantly reduced exposed kernel attack surface.

In addition to hardening the mediaserver, we’ve added a large list of protections for the platform, including:

App security improvements

Android Nougat is the safest and easiest version of Android for application developers to use.

  • Apps that want to share data with other apps now must explicitly opt-in by offering their files through a Content Provider, like FileProvider. The application private directory (usually /data/data/) is now set to Linux permission 0700 for apps targeting API Level 24+.
  • To make it easier for apps to control access to their secure network traffic, user-installed certificate authorities and those installed through Device Admin APIs are no longer trusted by default for apps targeting API Level 24+. Additionally, all new Android devices must ship with the same trusted CA store.
  • With Network Security Config, developers can more easily configure network security policy through a declarative configuration file. This includes blocking cleartext traffic, configuring the set of trusted CAs and certificates, and setting up a separate debug configuration.

We’ve also continued to refine app permissions and capabilities to protect you from potentially harmful apps.

  • To improve device privacy, we have further restricted and removed access to persistent device identifiers such as MAC addresses.
  • User interface overlays can no longer be displayed on top of permissions dialogs. This “clickjacking” technique was used by some apps to attempt to gain permissions improperly.
  • We’ve reduced the power of device admin applications so they can no longer change your lockscreen if you have a lockscreen set, and device admin will no longer be notified of impending disable via onDisableRequested(). These were tactics used by some ransomware to gain control of a device.
System Updates

Lastly, we've made significant enhancements to the OTA update system to keep your device up-to-date much more easily with the latest system software and security patches. We've made the install time for OTAs faster, and the OTA size smaller for security updates. You no longer have to wait for the optimizing apps step, which was one of the slowest parts of the update process, because the new JIT compiler has been optimized to make installs and updates lightning fast.

The update experience is even faster for new Android devices running Nougat with updated firmware. Like they do with Chromebooks, updates are applied in the background while the device continues to run normally. These updates are applied to a different system partition, and when you reboot, it will seamlessly switch to that new partition running the new system software version.


We’re constantly working to improve Android security and Android Nougat brings significant security improvements across all fronts. As always, we appreciate feedback on our work and welcome suggestions for how we can improve Android. Contact us at security@android.com.

Categories: Programming

The Power Of “Early Access”

Thu, 09/01/2016 - 17:59

By Karolis Balciunas, VC & Startups Business Development Manager, Google Play

If you have ever launched a mobile app, you know full well that launching your app into the world successfully requires more than publishing it and hoping for the best.

It’s the diligent testing, constant user feedback loop and incremental tweaks leading up to that special launch moment that truly count.

The Google Play Developer Console gives developers robust tools to do beta tests or experiment with how they market their apps to users through the Play store listing. Getting this critical early feedback from users requires just that — users. And as a developer working on a new product that isn’t fully launched yet, how do you find people to try your new app and take the time to give you feedback?

1 Million Tester Installs And Counting

At Google I/O in May, we unveiled a new destination on Google Play to address this dilemma head on. Together with 29 app and game partners, we launched an “Early Access” collection that made select new Android titles that are running an open beta available for anyone to try before they officially launch. It was an immediate hit. Early-adopter users were eager and willing to send developers actionable, private feedback in exchange for an opportunity to get their hands onto the latest exciting apps and games. Most importantly, the feedback was objective and candid as it did not come from their friends and family who are often afraid to hurt their feelings. In just over a month since the collection became available to all users, open beta titles have been installed over 1 million times and demand is only growing.

3 Powerful Stories

Our launch partners experienced the power of Early Access in various ways. Peer-based language practice developer Lingbe was eager to validate the concept of their app connecting natives with language learners via voice conversations, which meant they needed to connect with a critical mass of possible users around the world from different language and cultural backgrounds. In just a few weeks, "the surge in users in addition to our current fan base meant that we've had Brazilians practicing with Spanish users and talking about their hobby in photography, Mexicans making friends with people from India, and Filipinos talking to Moroccans!"

Readfeed, one of the first online book clubs on Android, relied on Early Access to solicit feature requests, identify bugs, locate new and optimize existing target markets as well as build a sizable reader community. They stated that "early access confirmed that our target market exists and that we have something that they need. I don't think we'd be in the same place right now without it. It enabled us to validate and effectively iterate on our idea from day one."

Finally, Drippler participated in Early Access to test their new "Wiz" app and understand their beta title's appeal to their target demographic. Their performance in the Early Access collection as well as private feedback from thousands of newly acquired beta testers allowed them to polish the app before the launch and gave them confidence that their users will enjoy it."

These three developers’ stories show us just a few ways that Early Access can help developers build great new apps and games, and it shows the value of getting early feedback from beta testers before launching more broadly.

Get Involved

If you are a developer getting ready to launch on Google Play, you can nominate your app or game to be part of Early Access. Learn more here.

New titles are added weekly and thousands of users are looking to experiment with new and exciting ideas.

Categories: Programming

Improvements for smaller app downloads on Google Play

Tue, 08/30/2016 - 19:09

Posted by Anthony Morris, SWE Google Play and Andrew Hayden, software engineer

Google Play continues to grow rapidly, as Android users installed over 65 billion apps in the last year from the Google Play Store. We’re also seeing developers move to update their apps more frequently to push great new content, patch security vulnerabilities, and iterate quickly on user feedback.

However, many users are sensitive to the amount of data they use, especially if they are not on Wi-Fi. Google Play is investing in improvements to reduce the data that needs to be transferred for app installs and updates, while making data cost more transparent to users.

Read on to understand the updates and learn some tips for ways to optimize the size of your APK.

New Delta algorithm to reduce the size of app updates

For approximately 98% of app updates from the Play Store, only changes (deltas) to APK files are downloaded and merged with the existing files, reducing the size of updates. Google Play has used delta algorithms since 2012, and we recently rolled out an additional delta algorithm, bsdiff (created by Colin Percival1), that our experimentation shows can reduce delta size by up to 50% or more compared to the previous algorithm for some APKs. Bsdiff is specifically targeted to produce more efficient deltas of native libraries by taking advantage of the specific ways in which compiled native code changes between versions. To be most effective, native libraries should be stored uncompressed (compression interferes with delta algorithms).

An example from Chrome: Patch Description Previous patch size Bsdiff Size M46 to M47 major update 22.8 MB 12.9 MB M47 minor update 15.3 MB 3.6 MB

Apps that don’t have uncompressed native libraries can see a 5% decrease in size on average, compared to the previous delta algorithm.

Applying the delta algorithm to APK Expansion Files to further reduce update size

APK Expansion Files allow you to include additional large files up to 2GB in size (e.g. high resolution graphics or media files) with your app, which is especially popular with games. We have recently expanded our delta and compression algorithms to apply to these APK Expansion Files in addition to APKs, reducing the download size of initial installs by 12%, and updates by 65% on average. APK Expansion file patches use the xdelta algorithm.

Clearer size information in the Play Store

Alongside the improvements to reduce download size, we also made information displayed about data used and download sizes in the Play Store clearer. You can now see actual download sizes, not the APK file size, in the Play Store. If you already have an app, you will only see the update size. These changes are rolling out now.

  1. Colin Percival, Naive differences of executable code, http://www.daemonology.net/bsdiff/, 2003. 

Example 1: Showing new “Download size” of APK

Example 2: Showing new “Update size” of APK

Tips to reduce your download sizes

1. Optimize for the right size measurements: Users care about download size (i.e. how many bytes are transferred when installing/updating an app), and they care about disk size (i.e. how much space the app takes up on disk). It’s important to note that neither of these are the same as the original APK file size nor necessarily correlated.


Chrome example: Compressed Native Library Uncompressed Native Library APK Size 39MB 52MB (+25%) Download size (install) 29MB 29MB (no change) Download size (update) 29MB 21MB (-29%) Disk size 71MB 52MB (-26%)

Chrome found that initial download size remained the same by not compressing the native library in their APK, while the APK size increased, because Google Play already performs compression for downloads. They also found that the update size decreased, as deltas are more effective with uncompressed files, and disk size decreased as you no longer need an compressed copy of the native library. However, please note, native libraries should only be uncompressed when the minimum SDK version for an APK is 23 (Marshmallow) or later.

2. Reduce your APK size: Remove unnecessary data from the APK like unused resources and code.

3. Optimize parts of your APK to make them smaller: Using more efficient file formats, for example by using WebP instead of JPEG, or by using Proguard to remove unused code.

Read more about reducing APK sizes and watch the I/O 2016 session ‘Putting Your App on a Diet’ to learn from Wojtek Kaliciński, about how to reduce the size of your APK.

Categories: Programming

Announcing Open Registration and Exhibitors for Google Play Indie Games Festival in San Francisco, Sept. 24

Mon, 08/29/2016 - 18:03

Posted by Jamil Moledina, Google Play, Games Strategic Lead

To celebrate the art of the latest innovative indie games, we’re hosting the first Google Play Indie Games Festival in North America on September 24th in San Francisco. At the festival, Android fans and gamers will have a unique opportunity to play new and unreleased indie games from some of the most innovative developers in the US and Canada, as well as vote for their favorite ones.

Registration is now open and the event is free for everyone to enjoy.

We’re also excited to announce the games selected to exhibit and compete at the event. From over 200 submissions, we carefully picked 30 games that promise the most fun and engaging experiences to attendees. Fans will have a chance to play a variety of indie games not yet available publicly.

Check out the full list of games selected here and below.


A Matter of Murder
Antihero (coming soon)
AR Zombie (coming soon)
Armajet (coming soon)
Armor Blitz (coming soon)
Bit Bit Blocks (coming soon)
1979 Revolution: Black Friday (coming soon) Coffee Pot Terrarium (coming soon) Crayola® Worlds for Tango (coming soon) Dog Sled Saga (coming soon)
Endless Mine

Futurable 1. Summer City (coming soon) Gunhouse (coming soon)
HoloGrid: Monster Battle (coming soon) Hovercraft: Takedown
HOVR (coming soon)
Maruta 279 (coming soon)
Norman's Night In: The Cave (coming soon) Numeris

Orbit - Playing with Gravity
Parallyzed

Psychic (coming soon)
Riptide GP: Renegade
Roofbot

Sand Stories (coming soon)
SmashWars VR: Drone Racing
ThreeSwipes

Rainmaker: Ultimate Trading
Zombie Rollerz (coming soon)
Coming soon

Fans will also have the opportunity to vote for their favorite games at the festival, along with an authoritative panel of judges from Google Play and the game industry. They include:

  • Ron Carmel, Co-founder of Indie Fund; co-creator of World of Goo
  • Hyunse Chang, Business Development Manager at Google Play
  • Lina Chen, Co-founder & CEO of Nix Hydra
  • David Edery, CEO of Spry Fox
  • Maria Essig, Partner Manager, Indies at Google Play
  • Noah Falstein, Chief Game Designer at Google
  • Dan Fiden, Chief Strategy Officer of Funplus
  • Emily Greer, CEO of Kongregate
  • Alex Lee, Producer, Program Manager, Daydream & Project Tango at Google
  • Jordan Maron, Gamer and independent YouTuber “CaptainSparklez”

We are also thrilled to announce that veteran game designer and professor Richard Lemarchand will be the emcee for the event. He was lead designer at Crystal Dynamics and Naughty Dog, and is now Associate Chair and Associate Professor at the University of Southern California, School of Cinematic Arts, Interactive Media and Games Division.

The winning developers will receive prizes, such Google Cloud credits, NVIDIA SHIELD Android TVs and K1 tablets, Razer Forge TV bundles, and more, to recognize their efforts.

Join us for an exciting opportunity to connect with fellow game fans, get inspired, and celebrate the art of indie games. Learn more about the event on the event website.

Categories: Programming

Taking the final wrapper off of Android 7.0 Nougat

Tue, 08/23/2016 - 00:24

Posted by Dave Burke, VP of Engineering

Android Nougat

Android 7.0 Nougat

Today, Android 7.0 Nougat will begin rolling out to users, starting with Nexus devices. At the same time, we’re pushing the Android 7.0 source code to the Android Open Source Project (AOSP), extending public availability of this new version of Android to the broader ecosystem.

We’ve been working together with you over the past several months to get your feedback on this release, and also to make sure your apps are ready for the users who will run them on Nougat devices.

What’s inside Nougat

Android Nougat reflects input from thousands of fans and developers like you, all around the world. There are over 250 major features in Android Nougat, including VR Mode in Android. We’ve worked at all levels of the Android stack in Nougat — from how the operating system reads sensor data to how it sends pixels to the display — to make it especially built to provide high quality mobile VR experiences.

Plus, Nougat brings a number of new features to help make Android more powerful, more productive and more secure. It introduces a brand new JIT/AOT compiler to improve software performance, make app installs faster, and take up less storage. It also adds platform support for Vulkan, a low-overhead, cross-platform API for high-performance, 3D graphics. Multi-Window support lets users run two apps at the same time, and Direct Reply so users can reply directly to notifications without having to open the app. As always, Android is built with powerful layers of security and encryption to keep your private data private, so Nougat brings new features like File-based encryption, seamless updates, and Direct Boot.

You can find all of the Nougat developer resources here, including details on behavior changes and new features you can use in your apps. An overview of what's new for developers is available here, and you can explore all of the new user features in Nougat here.

Multi-window mode in Android Nougat

Multi-window mode in Android Nougat

The next wave of users

Starting today and rolling out over the next several weeks, the Nexus 6, Nexus 5X, Nexus 6P, Nexus 9, Nexus Player, Pixel C, and General Mobile 4G (Android One) will get an over-the-air software update to Android 7.0 Nougat. Devices enrolled in the Android Beta Program will also receive this final version.

And there are many tasty devices coming from our partners running Android Nougat, including the upcoming LG V20, which will be the first new smartphone that ships with Android Nougat, right out of the box.

With all of these new devices beginning to run Nougat, now is the time to publish your app updates to Google Play. We recommend compiling against, and ideally targeting, API 24. If you’re still testing some last minute changes, a great strategy to do this is using Google Play’s beta testing feature to get early feedback from a small group of users — including those using Android 7.0 Nougat — and then doing a staged rollout as you release the updated app to all users.

What’s next for Nougat?

We’re moving Nougat into a new regular maintenance schedule over the coming quarters. In fact, we’ve already started work on the first Nougat maintenance release, that will bring continued refinements and polish, and we’re planning to bring that to you this fall as a developer preview. Stay tuned!

We’ll be closing open bugs logged against Developer Preview builds soon, but please keep the feedback coming! If you still see an issue that you filed in the preview tracker, just file a new issue against Android 7.0 in the AOSP issue tracker.

Thanks for being part of the preview, which we shared earlier this year with an eye towards giving everyone the opportunity to make the next release of Android stronger. Your continued feedback has been extremely beneficial in shaping this final release, not just for users, but for the entire Android ecosystem.

Categories: Programming

Protecting Android with more Linux kernel defenses

Sun, 08/21/2016 - 21:53

Posted by Jeff Vander Stoep, Android Security team

Android relies heavily on the Linux kernel for enforcement of its security model. To better protect the kernel, we’ve enabled a number of mechanisms within Android. At a high level these protections are grouped into two categories—memory protections and attack surface reduction.

Memory protections

One of the major security features provided by the kernel is memory protection for userspace processes in the form of address space separation. Unlike userspace processes, the kernel’s various tasks live within one address space and a vulnerability anywhere in the kernel can potentially impact unrelated portions of the system’s memory. Kernel memory protections are designed to maintain the integrity of the kernel in spite of vulnerabilities.

Mark memory as read-only/no-execute

This feature segments kernel memory into logical sections and sets restrictive page access permissions on each section. Code is marked as read only + execute. Data sections are marked as no-execute and further segmented into read-only and read-write sections. This feature is enabled with config option CONFIG_DEBUG_RODATA. It was put together by Kees Cook and is based on a subset of Grsecurity’s KERNEXEC feature by Brad Spengler and Qualcomm’s CONFIG_STRICT_MEMORY_RWX feature by Larry Bassel and Laura Abbott. CONFIG_DEBUG_RODATA landed in the upstream kernel for arm/arm64 and has been backported to Android’s 3.18+ arm/arm64 common kernel.

Restrict kernel access to userspace

This feature improves protection of the kernel by preventing it from directly accessing userspace memory. This can make a number of attacks more difficult because attackers have significantly less control over kernel memory that is executable, particularly with CONFIG_DEBUG_RODATA enabled. Similar features were already in existence, the earliest being Grsecurity’s UDEREF. This feature is enabled with config option CONFIG_CPU_SW_DOMAIN_PAN and was implemented by Russell King for ARMv7 and backported to Android’s 4.1 kernel by Kees Cook.

Improve protection against stack buffer overflows

Much like its predecessor, stack-protector, stack-protector-strong protects against stack buffer overflows, but additionally provides coverage for more array types, as the original only protected character arrays. Stack-protector-strong was implemented by Han Shen and added to the gcc 4.9 compiler.

Attack surface reduction

Attack surface reduction attempts to expose fewer entry points to the kernel without breaking legitimate functionality. Reducing attack surface can include removing code, removing access to entry points, or selectively exposing features.

Remove default access to debug features

The kernel’s perf system provides infrastructure for performance measurement and can be used for analyzing both the kernel and userspace applications. Perf is a valuable tool for developers, but adds unnecessary attack surface for the vast majority of Android users. In Android Nougat, access to perf will be blocked by default. Developers may still access perf by enabling developer settings and using adb to set a property: “adb shell setprop security.perf_harden 0”.

The patchset for blocking access to perf may be broken down into kernel and userspace sections. The kernel patch is by Ben Hutchings and is derived from Grsecurity’s CONFIG_GRKERNSEC_PERF_HARDEN by Brad Spengler. The userspace changes were contributed by Daniel Micay. Thanks to Wish Wu and others for responsibly disclosing security vulnerabilities in perf.

Restrict app access to ioctl commands

Much of Android security model is described and enforced by SELinux. The ioctl() syscall represented a major gap in the granularity of enforcement via SELinux. Ioctl command whitelisting with SELinux was added as a means to provide per-command control over the ioctl syscall by SELinux.

Most of the kernel vulnerabilities reported on Android occur in drivers and are reached using the ioctl syscall, for example CVE-2016-0820. Some ioctl commands are needed by third-party applications, however most are not and access can be restricted without breaking legitimate functionality. In Android Nougat, only a small whitelist of socket ioctl commands are available to applications. For select devices, applications’ access to GPU ioctls has been similarly restricted.

Require seccomp-bpf

Seccomp provides an additional sandboxing mechanism allowing a process to restrict the syscalls and syscall arguments available using a configurable filter. Restricting the availability of syscalls can dramatically cut down on the exposed attack surface of the kernel. Since seccomp was first introduced on Nexus devices in Lollipop, its availability across the Android ecosystem has steadily improved. With Android Nougat, seccomp support is a requirement for all devices. On Android Nougat we are using seccomp on the mediaextractor and mediacodec processes as part of the media hardening effort.

Ongoing efforts

There are other projects underway aimed at protecting the kernel:

  • The Kernel Self Protection Project is developing runtime and compiler defenses for the upstream kernel.
  • Further sandbox tightening and attack surface reduction with SELinux is ongoing in AOSP.
  • Minijail provides a convenient mechanism for applying many containment and sandboxing features offered by the kernel, including seccomp filters and namespaces.
  • Projects like kasan and kcov help fuzzers discover the root cause of crashes and to intelligently construct test cases that increase code coverage—ultimately resulting in a more efficient bug hunting process.

Due to these efforts and others, we expect the security of the kernel to continue improving. As always, we appreciate feedback on our work and welcome suggestions for how we can improve Android. Contact us at security@android.com.

Categories: Programming

New features for reviews and experiments in Google Play Developer Console app

Wed, 08/10/2016 - 20:07

Posted by Kobi Glick, Google Play team

With over one million apps published through the Google Play Developer Console, we know how important it is to publish with confidence, acquire users, learn about them, and manage your business. Whether reacting to a critical performance issue or responding to a negative review, checking on your apps when and where you need to is invaluable.

The Google Play Developer Console app, launched in May, has already helped thousands of developers stay informed of crucial business updates on the go.

We’re excited to tell you about new features, available today:

Receive notifications about new reviews

Use filters to find the reviews you want

Review and apply store listing experiment results

Increase the percent of a staged rollout or halt a bad staged rollout

Download the Developer Console app on Google Play and stay on top of your apps and games, wherever you are! Also, 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.

Categories: Programming

Android Developer Story: Hole19 improves user retention with Android Wear

Wed, 08/10/2016 - 18:48

Posted by Lily Sheringham, Google Play team

Based in Lisbon, Portugal, Hole19 is a golfing app which assists golfers before, during, and after their golfing journey with GPS and a digital scorecard. The app connects the golfing community with shared statistics for performance and golf courses, and now has close to 1 million users across all platforms.

Watch Anthony Douglas, Founder & CEO, and Fábio Carballo, Head Android Developer, explain how Hole19 doubled its number of Android Wear users in 6 months, and improved user engagement and retention on the platform. Also, hear how they are using APIs and the latest Wear 2.0 features to connect users to their golfing data and improve the user experience.


Learn more how to get started with Android Wear 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.

Categories: Programming

Expand Your Global Reach on Google Play With New Language and Country Analytics

Tue, 08/09/2016 - 18:35

Posted by Rahim Nathwani Product Manager, App Translation Service

With users in 190 countries around the world, Google Play offers you a truly global audience for your apps and games. Localization is one of the most powerful ways to connect with people in different places, which is why we launched translation support for in-app purchase and Universal App Campaigns earlier this year. With over 30 language translation options available via the Developer Console, we updated our app translation service to help you select the most relevant languages, making it quick and easy to get started.

With the launch of new language and country analytics, you gain access to app install analysis on Google Play, including:

  • Information on the top languages and countries where apps have been installed, broken down to the level of your app’s category
  • The percentage of installs that come from users of those languages
  • Further information to help inform your go-to-market plans for these countries

To make ordering translations easier, we show language bundles that you can add to your order in a single click.

To get started, select Manage translations -> Purchase translations from the Store Listing page in the Google Play Developer Console.

Categories: Programming

5 Tips to help you improve game-as-a-service monetization

Tue, 08/02/2016 - 20:26

Posted by Moonlit Wang, Partner Development Manager at Google Play Games, & Tammy Levy, Director of Product for Mobile at Kongregate

In today’s world of game-as-a-service on mobile, the lifetime value of a player is a lot more complex, where revenue is now the sum of many micro transactions instead of a single purchase with traditional console games.

Of course you don’t need a sophisticated statistical model to understand that the more time a player invests in your game, and the more money they spend, the greater their LTV. But how can you design and improve monetization as a mobile game developer? Here are 5 tips to help you improve game-as-a-service monetization, with best practice examples from mobile games publisher, Kongregate:

1. Track player behavior metrics that have a strong and positive correlation with LTV

  • D1, D7, D30 retention indicates how well a casual player can be converted into a committed fan.
  • Session length and frequency measures user engagement and how fun your game is.
  • Completion rate at important milestones can measure and pinpoint churn.
  • Buyer and repeated buyer conversion, represents your most valuable user segment.

2. Optimize for long-term engagement and delight your best players

Retention is the first metric that can distinguish great games from mediocre ones. Games with higher retention rates throughout the user’ lifecycle, monetize better consistently. Retention is king, and more importantly, long-term retention should be prioritized. Therefore, when designing your game, aim to create a sophisticated and engaging experience to delight your most committed fans.

[This chart shows the retention of top games / apps over time]
  • When considering long term retention, focus on achieving a strong D30, but also look beyond the first 30 days. Measure long term retention by assessing the following rates: D30 to D60, D30 to D90, and D30 to D180. The higher the rate, the stickier your game is in the long term, which will increase your LTV.
  • Players are willing to pay a fixed amount of money per hour of “fun”, so think about updates when designing your game, to make the content rich and fun for those who will play at very high levels and spend the most time within your game, don’t gate your players or hinder their in-game progression.
  • Use the Google Play Games Services - Funnel Report to help you track different milestone completion rates in your games, so you can identify drop off points and reduce churn
.
3. Increase buyer conversion through targeted offers

First-time buyer conversion is the most important as player churn rate drops significantly after the first purchase, but stays relatively flat regardless of the amount spent. Also, past purchase behavior is the best predictor of future purchases. Find your first-time and repeated buyer conversion rate directly in the Developer Console.

  • Use A/B testing to find the price that will maximize your total revenue. Different people have different willingness to pay for a given product and the tradeoff between price and quantity is different for different products, so don’t decrease prices blindly.
  • Tailor your in-game experience as well as in-app purchase offers based on the player’s predicted probability to spend using the Player Stats API, which predicts players churn and spend.

For example, in Kongregate’s game Spellstone, testing two pricing points for a promotion called Shard Bot, which provides players with a daily “drip” of Shards (the premium currency) for 30 days, showed players had a much stronger preference for the higher priced pack. The first pack, Shard Bot, priced at $4, granted players 5 daily shards, and the second pack, the Super Shard Bot, was priced at $8 and granted players 10 daily shards.

[Two week test results showing preference for the more expensive pack, which also generated more revenue]

Kongregate decided to keep the higher priced Super Shard Bot in the store, although both packs resulted in very similar retention rates:

4. As well as what monetization features to implement, take into consideration why, when and how to do so

  • Why: “Buyer intent” is most important. Any item with a price tag should serve to enhance your players in-game experience. For example, a new map, a new power, something exciting and additional to the free experience. Don’t gate your players with a purchase-only item as happy users means more time spent with your game, which will lead to higher revenue. Educate users by gifting some free premium goods and currency during the tutorial, and let users experience the benefit first.
  • When: Time offers based on when users may need it. If your IAP is to continue gameplay after timeout, then you should surface it right when the timer ends. If your IAP is to offer premium equipment, then you should surface it when users gear up their characters. The offer should be contextually relevant, such that the content should cater to the player’s current status and needs in-game.

    In particular, Starter Packs or New Buyer Promos need to be well timed. Players need to understand the value and importance of all the items before they are shown the promotion. If surfaced too early, players will not feel compelled to purchase. If surfaced too late, the offer will not be compelling enough. The Starter Pack should appear within 3 to 5 sessions since install, depending on your game. Additionally, limiting its availability to 3 to 5 days will urge players to make a quicker purchase decision.

    For example, BattleHand’s starter pack is surfaced around the 4th session, it is available for 36hrs and contains the following items to aid players in all areas of the game:

  • Powerful cards that have an immediate effect in battle
  • High rarity upgrade materials to upgrade your card deck
  • A generous amount of soft currency that can be used in all areas of the game
  • A generous amount of hard currency so players can purchase premium store items
  • Rare upgrade materials for Heroes
[Example starter pack offer in Battle Hands] Thanks to the strength of the promotion over 50% of players choose the Starter Pack instead of the regular gems offerings:
  • How: There are many ways you can implement premium content and goods in your game, such as power-ups, characters, equipment, maps, hints, chapters etc. The two most impactful monetization designs are:
      Gacha - There are many ways to design, present and balance gacha but the key is to have randomized rewards, which allows you to sell extremely powerful items that players want without having to charge really high prices per purchase.
[Example of randomized rewards in Raid Brigade’s boxes]
      LiveOps - Limited time content on a regular cadence will also create really compelling opportunities for the players to both engage further with the game and invest in the game. For instance, Adventure Capitalist has been releasing regular limited themed time events with their spin on the permanent content, their own progression, achievements and IAP promotions.
[Example timed event for Adventure Capitalist]

Through this initiative, the game has seen regular increases in both engagement and revenue during event times without affecting the non-event periods:

[Timed events drastically increase engagement and revenue without lowering the baseline average over time]

5. Take into account local prices and pricing models

Just like different people have different willingness-to-pay, different markets have different purchasing powers.

    • Test what price points make sense for local consumers in each major market. Don’t just apply an umbrella discount, find the price points that maximize total revenue.
    • Consider charm pricing but remember it doesn’t work everywhere. For example, in the United States, prices always end in $x.99, but that’s not the case in Japan and Korea, where rounded numbers are used. Pricing in accordance to the local norm signals to the customers that you care and designed the game with them in mind. The Google Developer Console now automatically applies local pricing conventions of each currency for you.

Check out the Android Developer Story from games developer, Divmob, who improved their game’s monetization threefold simply by adopting sub-dollar pricing strategies. Also, learn more best practices about building for billions to get more tips on monetization.

Get the Playbook for Developers app and stay up-to-date with more features and best practices that will help you grow a successful business on Google Play.

Categories: Programming

Connecting your App to a Wi-Fi Device

Fri, 07/29/2016 - 00:13

Posted by Rich Hyndman, Android Developer Advocate

With the growth of the Internet of Things, connecting Android applications to Wi-Fi enabled devices is becoming more and more common. Whether you’re building an app for a remote viewfinder, to set up a connected light bulb, or to control a quadcopter, if it’s Wi-Fi based you will need to connect to a hotspot that may not have Internet connectivity.

From Lollipop onwards the OS became a little more intelligent, allowing multiple network connections and not routing data to networks that don’t have Internet connectivity. That’s very useful for users as they don’t lose connectivity when they’re near Wi-Fis with captive portals. Data routing APIs were added for developers, so you can ensure that only the appropriate app traffic is routed over the Wi-Fi connection to the external device.

To make the APIs easier to understand, it is good to know that there are 3 sets of networks available to developers:

  • WiFiManager#startScan returns a list of available Wi-Fi networks. They are primarily identified by SSID.
  • WiFiManager#getConfiguredNetworks returns a list of the Wi-Fi networks configured on the device, also indexed by SSID, but they are not necessarily currently available.
  • ConnectivityManager#getAllNetworks returns a list of networks that are being interacted with by the phone. This is necessary as from Lollipop onwards a device may be connected to multiple networks at once, Wi-Fi, LTE, Bluetooth, etc… The current state of each is available by calling ConnectivityManager#getNetworkInfo and is identified by a network ID.

In all versions of Android you start by scanning for available Wi-Fi networks with WiFiManager#startScan, iterate through the ScanResults looking for the SSID of your external Wi-Fi device. Once you’ve found it you can check if it is already a configured network using WifiManager#getConfiguredNetworks and iterating through the WifiConfigurations returned, matching on SSID. It’s worth noting that the SSIDs of the configured networks are enclosed in double quotes, whilst the SSIDs returned in ScanResults are not.

If your network is configured you can obtain the network ID from the WifiConfiguration object. Otherwise you can configure it using WifiManager#addNetwork and keep track of the network id that is returned.

To connect to the Wi-Fi network, register a BroadcastReceiver that listens for WifiManager.NETWORK_STATE_CHANGED_ACTION and then call WifiManager.enableNetwork (int netId, boolean disableOthers), passing in your network ID. The enableNetwork call disables all the other Wi-Fi access points for the next scan, locates the one you’ve requested and connects to it. When you receive the network broadcasts you can check with WifiManager#getConnectionInfo that you’re successfully connected to the correct network. But, on Lollipop and above, if that network doesn’t have internet connectivity network, requests will not be routed to it.

Routing network requests

To direct all the network requests from your app to an external Wi-Fi device, call ConnectivityManager#setProcessDefaultNetwork on Lollipop devices, and on Marshmallow call ConnectivityManager#bindProcessToNetwork instead, which is a direct API replacement. Note that these calls require android.permission.INTERNET; otherwise they will just return false.

Alternatively, if you’d like to route some of your app traffic to the Wi-Fi device and some to the Internet over the mobile network:

Now you can keep your users connected whilst they benefit from your innovative Wi-Fi enabled products.

Categories: Programming

Introducing new app categories -- From Art to Autos to Dating -- to help users better find your apps

Fri, 07/29/2016 - 00:11

Posted by By Sarah Karam, Google Play Apps Business Development

With more than 1 billion active users in 190 countries around the world, Google Play continues to be an important distribution platform for you to build a global audience. To help you get your apps in front of more users, it’s important to make them more quickly and easily discoverable in Google Play. That’s why we rolled out major features, such as Search Ads, Indie Corner, store listing experiments, and more, over the past year.

To improve the overall search experience, we’re introducing new app categories and renaming a few existing ones, making them more comprehensive and relevant to what users are looking for today.

The new categories include:

  • Art & Design
  • Auto & Vehicles
  • Beauty
  • Dating
  • Events
  • Food & Drink
  • House & Home
  • Parenting

In addition, the “Transportation” category will be renamed “Maps & Navigation,” and the “Media & Video” category will be renamed “Video Players & Editors.”

To select a new category for your app or game

  1. Sign in to your Google Play Developer Console.
  2. Select an app.
  3. On the left menu, click Store Listing.
  4. Under "Categorization," select an application type and category.
  5. Near the top of the page, click Save draft (new apps) or Submit update (existing apps).

Newly added categories will be available on Google Play within 60 days. If you choose a newly added category for an app before the category is available for users, your current app category may change. See additional details and view our full list of categories in the Help Center.

Categories: Programming

Announcing Android add-ons for Docs and Sheets

Thu, 07/28/2016 - 18:34
Posted by By Saurabh Gupta, Product Manager, Google Apps

We know many of you consider your mobile device as your primary tool to consume business information, but what if you could use it to get more work done, from anywhere? We’re excited to introduce Android add-ons for Docs and Sheets, a new way for you to do just that—whether it’s readying a contract you have for e-signature from your phone, or pulling in CRM data on your tablet for some quick analysis while waiting for your morning coffee, Android add-ons can help you accomplish more.

Get more done with your favorite third-party apps, no matter where you are We’ve worked with eight integration partners who have created seamless integrations for Docs and Sheets. Here’s a preview of just a few of them:
  • DocuSign - Trigger or complete a signing process from Docs or Sheets, and save the executed document to Drive. Read more here.
DocuSign lets you easily create signature envelopes right from Google Docs
  • ProsperWorks - Import your CRM data to create and update advanced dashboards, reports and graphs on Sheets, right from your device. Read more here.
  • AppSheet - Create powerful mobile apps directly from your data in Sheets instantly — no coding required. Read more here.
  • Scanbot - Scan your business documents using built-in OCR, and insert their contents into Docs as editable text. Read more here.


You can find these add-ons and many more, including PandaDoc, ZohoCRM, Teacher Aide, EasyBib and Classroom in our Google Play collection as well as directly from the add-on menus in Docs or Sheets.

Try them out today, and see how much more you can do.

Calling all developers: try our developer preview today!

As you can see from above, Android add-ons offer a great opportunity to build innovative integrations and reach Docs and Sheets users around the world. They’re basically Android apps that connect with Google Apps Script projects on the server-side, allowing them to access and manipulate data from Google Docs or Sheets using standard Apps Script techniques. Check out our documentation which includes UI guidelines as well as sample code to get you started. We’ve also made it easy for you to publish your apps with the Apps Script editor.

Android add-ons are available today as a developer preview. We look forward to seeing what you build!

Categories: Programming

Android Developer Story: Culture Alley reaches millions of English learners on Google Play

Wed, 07/27/2016 - 17:38
Posted by Lily Sheringham, Google Play team

Culture Alley developed the app Hello English to help Indians learn English through gamification, supporting over 15 dialects. More than 13 million people now use Hello English in India and around the world.

Hear Nishant Patni, Founder & CEO and Pranshu Bhandari, Co-Founder, explain how they optimized the app to address challenges faced by emerging markets. Learn how they used various Google Play tools to address varying levels of connectivity and device capabilities, and improve user retention.

Learn more best practices about building for billions and watch the ‘10 tips to build an app for billions of users’ video to get more tips. Also, get the Playbook for Developers app and stay up-to-date with more features and best practices that will help you grow a successful business on Google Play.

Categories: Programming