Author Archives: Android Developers

Final Android Wear 2.0 Developer Preview: iOS support. Time to upload your apps to the Play Store!

Posted by Hoi Lam, Developer Advocate 

Cross platform support by Telegram Messenger

Today, we are releasing the fifth and final developer preview for Android Wear 2.0. In this release, we have added iOS support and included a number of bug fixes and enhancements. Apps compiled with this preview are now ready for final submission to the Google Play Store, so it's time to publish your apps. As Android Wear 2.0 approaches its final release in early February, we would like to thank you for your continued feedback during the developer preview program. Your input has helped us uncover bugs as well as drive critical product decisions. Thank you!

iOS Support


Since 2015, you've been able to pair Android Wear watches with iPhones, and now you can distribute your apps to iPhone-paired watches as well. To do so, just set the standalone=true flag in your watch app manifest. This lets the Play Store know that your watch app doesn't require an Android phone app, and therefore can appear in the Play Store on watches paired to iPhones. To pair your watch to an iPhone and test, just follow these steps.

The available network bandwidth for standalone apps can be lower than expected, as the platform balances battery savings vs network bandwidth. Make sure to check out these guidelines for accessing the network, including accessing Wi-Fi and cellular networks on watches paired with iPhones.

Also with this developer preview release, Android Wear apps running on watches paired with iOS devices will be able to perform phone hand-off flows such as OAuth and RemoteIntent for launching a web page on a paired iOS device.

Uploading Your App to the Google Play Store


The final developer preview includes an update to the Wearable Support Library. Apps compiled with API level 25 and this support library are considered ready for deployment in the Google Play Store. Please note that there are no updates to the preview watch image or emulator in this developer preview release.


Other Enhancement and Bug Fixes


  • Navigation Drawer: Flip a flag to toggle to the single-page, icon-only action drawer, which provides faster, more streamlined navigation to different views in your app.
  • NFC HCE support: NFC Host Card Emulation FEATURE_NFC_HOST_CARD_EMULATION is now supported.
  • ProGuard and Complication API: New ProGuard configuration means complication data container classes will no longer be obfuscated. This fixes a ClassNotFoundException when watch faces are trying to access data supplied by a complication data provider.

Countdown to Launch


Thank you for the fantastic level of feedback we have gotten from you as developers. Check out g.co/wearpreview for the latest builds and documentation, and be sure to publish your apps before the Android Wear 2.0 consumer launch in early February. As we work towards the consumer launch and beyond, please continue filing bugs or posting comments in our Android Wear Developers community. We can't wait to see your Android Wear 2.0 apps!

Android Instant Apps starts initial live testing

Posted by Aurash Mahbod, Software Engineer, Google Play

Android Instant Apps was previewed at Google I/O last year as a new way to run Android apps without requiring installation. Instant Apps is an important part of our effort to help users discover and run apps with minimal friction.

We’ve been working with a small number of developers to refine the user and developer experiences. Today, a few of these Instant Apps will be available to Android users for the first time in a limited test, including apps from BuzzFeed, Wish, Periscope, and Viki. By collecting user feedback and iterating on the product, we’ll be able to expand the experience to more apps and more users.

To develop an instant app, you’ll need to update your existing Android app to take advantage of Instant Apps functionality and then modularize your app so part of it can be downloaded and run on-the-fly. You’ll use the same Android APIs and Android Studio project. Today, you can also take some important steps to be ready for Instant Apps development. The full SDK will be available in the coming months.

There has already been a tremendous amount of interest in Instant Apps from thousands of developers. We can’t wait to hear your feedback and share more awesome experiences later this year. Stay tuned!


App Security Improvements: Looking back at 2016

Posted by Rahul Mishra, Android Security Program Manager
In April 2016, the Android Security team described how the Google Play App Security Improvement (ASI) program has helped developers fix security issues in 100,000 applications. Since then, we have detected and notified developers of 11 new security issues and provided developers with resources and guidance to update their apps. Because of this, over 90,000 developers have updated over 275,000 apps!
ASI now notifies developers of 26 potential security issues. To make this process more transparent, we introduced a new page where developers can find information about all these security issues in one place. This page includes links to help center articles containing instructions and additional support contacts. Developers can use this page as a resource to learn about new issues and keep track of all past issues.

Make sure to check out our new Security for Android Developers page, which highlights the latest security posts, security best practices documents and security checklist. These resources are all aimed at improving your understanding of general security concepts and giving you examples that can help you address app-specific issues.

How you can help:
For feedback or questions, please reach out to us through the Google PlayDeveloper Help Center.
To report potential security issues in apps, email us at [email protected].

Android Developer Story: Wallapop improves user conversions with store listing experiments on Google Play

Posted by Lily Sheringham, Developer Marketing, Google Play
Wallapop is a mobile app developer based in Barcelona, Spain. The app provides a platform to users for selling and buying things to others nearby in a virtual flea market by using geolocalization. Wallapop now has over 70% of their user base on Android.

Watch Agus Gomez, Co-Founder & CEO, and Marta Gui, Growth Hacking Manager, explain how using store listing experiments has increased their conversion rate by 17%, and has allowed them to optimize organic installs.


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


How useful did you find this blogpost?
                                                                              

Tips from developers Peak and Soundcloud on how to grow your startup on Google Play


Posted by Francesca Di Felice, Developer Marketing at Google Play

At Playtime 2016, Google Play's series of developer events, we met with top app and game developers from around the world to share learnings on how to build successful businesses on Google Play. Several startups, including game developer Peaklabs and audio platform SoundCloud, presented on stage their own best practices for growth, which you might find helpful.

Testing for growth, by Peak

Hear from Kevin Shanahan, Product Manager from Peak, a brain training app, on how to grow sustainably.



  • Test lots of ideas: You can't be sure of what will work and what won't, so you need to test lots of ideas. Peak ran four different tests to try to increase conversions to Pro (their subscriber offering):
  1. Made the ability to replay games a Pro feature
  2. Reduced price of Pro by 25% in top 2 markets
  3. Bundled add-on modules from partners into Pro
  4. Showed a preview of Pro-only content
          One of these tests resulted in a 50% increase in conversions.

  • Get the basics right: Start with a great product and have a data-informed culture. Don't only test app features, experimenting your store listing using store listing experiments is also important.
  • Build a robust A/B testing process: Having a well-defined A/B testing process and a system for tracking your experiments is key to testing quickly and effectively.

Improving user retention, by SoundCloud

Andy Carvell, former Product Manager at SoundCloud, an online audio distribution platform that enables its users to upload, record, promote, and share their originally-created sounds, explains how they focus on retention to improve growth.

 

  • Design your retention strategy: Apps with poor retention grow slowly. To increase your retention you should:
    • Convert new users to repeat visitors by providing a strong onboarding experience for new users and taking a high-touch approach during the first days and weeks.
    • Increase visit frequency within this group by providing frequent, timely, and relevant messaging about content or activity on the platform.
    • Target returning users who were not seen over the last period, who are 'at risk of churn' users, by giving them reasons to come back for another session before losing them.
    • Re-activate lapsed (long-term churned) users with campaigns to remind them about your app and offer an incentive to return.
  • Build 'growth machines': Create repeatable processes that testing has proven to positively impact retention, retaining users, and preventing churn.
  • Use activity notifications in a personalised and effective way: At SoundCloud there are plenty of things that happen when users are not in the app that might be relevant to them, for example new content releases or social interactions. They tested 5 new notification types, always keeping a control group to better keep track of the impact, and managed to increase retention in a 5%. Watch the video above for more of Andy's tips on making better use of notifications.

Other speakers, such as Silicon Valley VC Greylock, have also shared their tips for startup growth. Watch more sessions from this year's Playtime events to learn best practices from other apps and game partners, and the Google Play team. Get the Playbook for Developers app to stay up to date with news and tips to help you grow a successful business on Google Play.

How useful did you find this blogpost?
   

Southeast Asian indie game developers find success on Google Play

Posted by Vineet Tanwar, Business Development Manager, Google Play

Indie game developers bring high quality, artistic, and innovative content to Google Play and raise the bar for all developers in the process. In fact, they also make up a large portion of our 'Editor's Choice' recommended titles.
Southeast Asia, in particular, has a vibrant indie game developer ecosystem, and we've been working closely with them to provide tools that help them build successful businesses on Google Play. Today, we're sharing stories from three Indie developers based in Singapore, Vietnam, and Indonesia, who joined us at our 'Indie Game Developers Day' workshops in May 2016 and all of whom have experienced significant growth since.

Inzen studios from Singapore learned how to use store listing experiments and has improved the conversion rate of their newly launched game Dark Dot by 25%. Indonesia based studio, Niji Games, creator of Cute Munchies, implemented 'Saved Games' and 'Events and Quests' from Google Play games services to significantly improve user retention, and also earned an 'Editor's Choice' badge in the process. Ho Chi Minh City based developer, VGames, optimized monetization and introduced new paid products for their game Gungun online, and grew revenue by over 100%.


Indie game developers who are interested in meeting members of Google Play and who would like to work closer with us are invited to join our next round of SEA workshops in March 2017. To apply for these events, just fill in this form and we will reach out to you.

How useful did you find this blogpost?

Silence speaks louder than words when finding malware

Posted by Megan Ruthven, Software Engineer

In Android Security, we're constantly working to better understand how to make Android devices operate more smoothly and securely. One security solution included on all devices with Google Play is Verify apps. Verify apps checks if there are Potentially Harmful Apps (PHAs) on your device. If a PHA is found, Verify apps warns the user and enables them to uninstall the app.

But, sometimes devices stop checking up with Verify apps. This may happen for a non-security related reason, like buying a new phone, or, it could mean something more concerning is going on. When a device stops checking up with Verify apps, it is considered Dead or Insecure (DOI). An app with a high enough percentage of DOI devices downloading it, is considered a DOI app. We use the DOI metric, along with the other security systems to help determine if an app is a PHA to protect Android users. Additionally, when we discover vulnerabilities, we patch Android devices with our security update system.

This blog post explores the Android Security team's research to identify the security-related reasons that devices stop working and prevent it from happening in the future.
Flagging DOI Apps

To understand this problem more deeply, the Android Security team correlates app install attempts and DOI devices to find apps that harm the device in order to protect our users.
With these factors in mind, we then focus on 'retention'. A device is considered retained if it continues to perform periodic Verify apps security check ups after an app download. If it doesn't, it's considered potentially dead or insecure (DOI). An app's retention rate is the percentage of all retained devices that downloaded the app in one day. Because retention is a strong indicator of device health, we work to maximize the ecosystem's retention rate.

Therefore, we use an app DOI scorer, which assumes that all apps should have a similar device retention rate. If an app's retention rate is a couple of standard deviations lower than average, the DOI scorer flags it. A common way to calculate the number of standard deviations from the average is called a Z-score. The equation for the Z-score is below.

  • N = Number of devices that downloaded the app.
  • x = Number of retained devices that downloaded the app.
  • p = Probability of a device downloading any app will be retained.

In this context, we call the Z-score of an app's retention rate a DOI score. The DOI score indicates an app has a statistically significant lower retention rate if the Z-score is much less than -3.7. This means that if the null hypothesis is true, there is much less than a 0.01% chance the magnitude of the Z-score being as high. In this case, the null hypothesis means the app accidentally correlated with lower retention rate independent of what the app does.
This allows for percolation of extreme apps (with low retention rate and high number of downloads) to the top of the DOI list. From there, we combine the DOI score with other information to determine whether to classify the app as a PHA. We then use Verify apps to remove existing installs of the app and prevent future installs of the app.

Difference between a regular and DOI app download on the same device.


Results in the wild
Among others, the DOI score flagged many apps in three well known malware families— Hummingbad, Ghost Push, and Gooligan. Although they behave differently, the DOI scorer flagged over 25,000 apps in these three families of malware because they can degrade the Android experience to such an extent that a non-negligible amount of users factory reset or abandon their devices. This approach provides us with another perspective to discover PHAs and block them before they gain popularity. Without the DOI scorer, many of these apps would have escaped the extra scrutiny of a manual review.
The DOI scorer and all of Android's anti-malware work is one of multiple layers protecting users and developers on Android. For an overview of Android's security and transparency efforts, check out our page.


Manage paid orders and payments settings from the Google Play Developer Console

Posted by Suzanne van Tienen, Product Manager, Google Play

Today we are simplifying and improving the merchant experience for developers who have paid apps, in-app purchases, or subscriptions based on the feedback we've heard from the community.

First, we're moving order management from the Google Payments Center to the Google Play Developer Console and adding some improved features. Second, payments settings will now be accessible from the Developer Console in addition to continuing to be available on payments.google.com. The new features come with appropriate access control settings so you can be sure users only have access to the tools they need.



The new order management tab in the Google Play Developer Console

You can perform the same tasks in the Developer Console which you previously would have performed in the Google Payments Center. We've also made some improvements:
  • Bulk refunds: You can now select multiple orders for simultaneous refund, instead of issuing them individually.
  • Subscription cancellations: You can now refund and revoke subscriptions directly from the order management tab (without going to a separate UI).
  • Permissions: We've added a new user access permission to the Developer Console called "Manage orders". This permission will allow a user to find orders, issue refunds, and cancel subscriptions. Other features will be read-only for these users and financial reports will be hidden (only users with "View financial reports" can see financial data). Payments settings are restricted to the account owner when accessed from Developer Console.

Order management migration to the Developer Console

Order management is now available in the Developer Console. Starting January 23, order management will cease being available in Payments Center. User permissions are not automatically carried over from the Payments Center so, as the account owner, you will need to add all users who need access to refunds and any other order management features to your Developer Console account with the new 'Manage orders' permission by January 22 for them to have continued access.
Here's how you can add new users to your Developer Console account:
  1. Log on to Google Payments Center and review all existing users.
  2. Sign in to your Developer Console and add one or both of the following permissions for all users that need access to Order Management in the Developer Console.
    1. View financial reports: Gives the right to access and view financial reports.
    2. Manage orders: Gives the right to view and refund orders but not to view aggregate financial statistics or download sales & payout reports.
  3. Let your users know about the new location for order management.

How useful did you find this blogpost?

Introducing the ExifInterface Support Library

With the release of the 25.1.0 Support Library, there's a new entry in the family: the ExifInterface Support Library. With significant improvements introduced in Android 7.1 to the framework's ExifInterface, it only made sense to make those available to all API 9+ devices via the Support Library's ExifInterface.

The basics are still the same: the ability to read and write Exif tags embedded within image files: now with 140 different attributes (almost 100 of them new to Android 7.1/this Support Library!) including information about the camera itself, the camera settings, orientation, and GPS coordinates.

Camera Apps: Writing Exif Attributes

For Camera apps, the writing is probably the most important - writing attributes is still limited to JPEG image files. Now, normally you wouldn't need to use this during the actual camera capturing itself - you'd instead be calling the Camera2 API CaptureRequest.Builder.set() with JPEG_ORIENTATION, JPEG_GPS_LOCATION or the equivalents in the Camera1 Camera.Parameters. However, using ExifInterface allows you to make changes to the file after the fact (say, removing the location information on the user's request).

Reading Exif Attributes

For the rest of us though, reading those attributes is going to be our bread-and-butter; this is where we see the biggest improvements.

Firstly, you can read Exif data from JPEG and raw images (specifically, DNG, CR2, NEF, NRW, ARW, RW2, ORF, PEF, SRW and RAF files). Under the hood, this was a major restructuring, removing all native dependencies and building an extensive test suite to ensure that everything actually works.

For apps that receive images from other apps with a content:// URI (such as those sent by apps that target API 24 or higher), ExifInterface now works directly off of an InputStream; this allows you to easily extract Exif information directly out of content:// URIs you receive without having to create a temporary file.

Uri uri; // the URI you've received from the other app
InputStream in;
try {
  in = getContentResolver().openInputStream(uri);
  ExifInterface exifInterface = new ExifInterface(in);
  // Now you can extract any Exif tag you want
  // Assuming the image is a JPEG or supported raw format
} catch (IOException e) {
  // Handle any errors
} finally {
  if (in != null) {
    try {
      in.close();
    } catch (IOException ignored) {}
  }
}

Note: ExifInterface will not work with remote InputStreams, such as those returned from a HttpURLConnection. It is strongly recommended to only use them with content:// or file:// URIs.

For most attributes, you'd simply use the getAttributeInt(), getAttributeDouble(), or getAttribute() (for Strings) methods as appropriate.

One of the most important attributes when it comes to displaying images is the image orientation, stored in the aptly-named TAG_ORIENTATION, which returns one of the ORIENTATION_ constants. To convert this to a rotation angle, you can post-process the value.

int rotation = 0;
int orientation = exifInterface.getAttributeInt(
    ExifInterface.TAG_ORIENTATION,
    ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
  case ExifInterface.ORIENTATION_ROTATE_90:
    rotation = 90;
    break;
  case ExifInterface.ORIENTATION_ROTATE_180:
    rotation = 180;
    break;
  case ExifInterface.ORIENTATION_ROTATE_270:
    rotation = 270;
    break;
}

There are some helper methods to extract values from specific Exif tags. For location data, the getLatLong() method gives you the latitude and longitude as floats and getAltitude() will give you the altitude in meters. Some images also embed a small thumbnail. You can check for its existence with hasThumbnail() and then extract the byte[] representation of the thumbnail with getThumbnail() - perfect to pass to BitmapFactory.decodeByteArray().

Working with Exif: Everything is optional

One thing that is important to understand with Exif data is that there are no required tags: each and every tag is optional - some services even specifically strip Exif data. Therefore throughout your code, you should always handle cases where there is no Exif data, either due to no data for a specific attribute or an image format that doesn't support Exif data at all (say, the ubiquitous PNGs or WebP images).

Add the ExifInterface Support Library to your project with the following dependency:

compile "com.android.support:exifinterface:25.1.0"

But when an Exif attribute is exactly what you need to prevent a mis-rotated image in your app, the ExifInterface Support Library is just what you need to #BuildBetterApps

Get the guide to finding success in new markets on Google Play

Posted by Lily Sheringham, Developer Marketing at Google Play

With just a few clicks, you can publish an app to Google Play and access a global audience of more than 1 billion 30 days active users. Finding success in global markets means considering how each market differs, planning for high quality localization, and tailoring your activity to the local audience. The new Going Global Playbook provides best practices and tips, with advice from developers who've successfully gone global.

This guide includes advice to help you plan your approach to going global, prepare your app for new markets, take your app to market, and also include data and insights for key countries and other useful resources.

This ebook joins others that we've recently published including The Building for Billions Playbook and The News Publisher Playbook. All of our ebooks are promoted in the Playbook for Developers app, which is where you can stay up to date with all the news and best practices you need to find success on Google Play.


How useful did you find this blogpost?