Core app quality guidelines

To provide a solid foundation for a quality app, follow the core app quality guidelines.

The guidelines define the minimum quality that all apps should meet.

Adaptive app quality

Android apps run on a wide variety of devices—everything from compact phones to tablets, foldables, desktops, connected displays, car infotainment systems, TV, and XR. Windowing modes like split‑screen and desktop windowing enable apps to run in resizable portions of a screen.

Follow the adaptive app quality guidelines—in conjunction with the core app quality guidelines—to:

  • Create apps optimized for all form factors and display sizes
  • Get your apps ranked higher in Google Play listings and search
  • Acquire more users and increase user retention

Guidelines

The following core guidelines help you build a basic, high‑quality app.

User experience

Standard Android visual design and interaction patterns provide a consistent and intuitive user experience.

Use Material design components to create your app's user interface in place of Android platform components where possible. Material Design provides a modern Android look and feel along with UI consistency across Android versions.

Usability

ID Tests Description
Consistent_UX T-Consistent_UX,
T-SD_Card
App provides a consistent user experience for all app use cases on all form factors.
App_Switcher T-App_Switcher,
T-SD_Card
App goes into the background when focus switches to another app. App returns to the foreground when reactivated from the Recents app switcher.
Sleep_Resume T-Sleep_Resume,
T-SD_Card
When the app is the foreground app, it pauses when the device goes to sleep and resumes when the device wakes up.
Lock_Resume T-Lock_Resume,
T-SD_Card
When the app is the foreground app, it pauses when the device is locked and resumes when the device is unlocked.

User interface

ID Tests Description
Display_State_Parity T-Orientation_Transitions

Display orientations and fold states expose essentially the same features and actions and preserve functional parity.

Fullscreen_Display T-Orientation_Transitions

App fills the app window in both orientations and is not letterboxed because of configuration changes, including device folding and unfolding.

Minor letterboxing to compensate for small variations in screen geometry is acceptable.

Orientation_Transitions T-Orientation_Transitions App handles rapid transitions between display orientations and device folding and unfolding with no display rendering problems and without losing state.

Visual quality

ID Tests Description
Graphic_Quality T-Graphic_Quality

App displays graphics, text, images, and other UI elements without noticeable distortion, blurring, or pixelation.

  • App uses vector drawables where possible
  • App uses high-quality graphics for all targeted screen sizes and form factors
  • No aliasing at the edges of menus, buttons, and other UI elements
Line_Length T-Line_Length App ensures readability of text and text blocks by limiting line length to 45-75 characters (including spaces) for each of the app's supported languages.
Theme_Support T-Theme_Support The app's content, and all web content accessed by the app, support both light and dark themes.
ID Tests Description
Back_Button_Nav T-Back_Nav App supports standard back button navigation and does not make use of any custom, onscreen back button prompts.
Back_Gesture_Nav T-Back_Nav App supports gesture navigation for going back and going to the home screen.
State_Preservation T-State_Preservation,
T-Back_Nav

The app preserves user or app state when leaving the foreground and prevents accidental data loss due to back navigation and other state changes.

When returning to the foreground, the app restores the preserved state and any pending stateful transactions. Examples include changes to editable fields, game progress, menus, videos, and other sections of the app.

  • When the app is resumed from the Recents app switcher, the app returns the user to the exact state in which the app was last used.
  • When the app is resumed after the device wakes from the sleep (locked) state, the app returns the user to the exact state in which the app was last used.
  • When the app is relaunched from Home or All Apps, it should do one of the following, depending on how much time has passed since the app was last used:
    • If the app was last used a short time ago (minutes), restore the app state as closely as possible to its previous state.
    • If more time has passed since the app was last used, try to restore the app as closely as possible to its previous state or start the app from its home screen or some other default state.

Notifications

ID Tests Description
Notification_Quality T-Notification_Quality

Notifications provide relevant information related to your app.

  • Don't use notifications for cross-promotion or advertising of another product, as this is strictly prohibited by the Play Store.
  • Notification channels are defined according to best practices, rather than serving all notifications from one channel.
  • Select the correct notification priority.
  • Stack multiple notifications into a single notification group when possible.
  • Set timeouts for notifications where appropriate.
  • Notifications are persistent only if related to ongoing events, such as music playback or a phone call. For more information, see the Functionality section.
Conversation_Quality T-Notification_Quality

For messaging apps, social apps and conversations:

Accessibility

ID Tests Description
Touch_Target_Size T-Touch_Target_Size Touch targets are least 48 dp. See the Material Design Layout and typography guidelines.
Visual_Contrast T-Visual_Contrast

App text and foreground content maintain the following contrast ratios with the app background:

  • 3:1 for large text and graphics
  • 4.5:1 for small text (less than 18 pt or less than 14 pt if text is bold)

Learn more about color and contrast.

Content_Description T-Content_Description Describe each UI element, except for TextView, using contentDescription.

Functionality

Your app should implement the following functional behavior.

Audio

ID Tests Description
Audio_Playback_Start T-Audio_Playback_Start

When the user initiates audio playback, the app should do one of the following within one second:

  • Start playing the audio
  • Provide a visual indicator that the audio data is being prepared
Audio_Focus_Request T-Audio_Focus_Request App should request audio focus when audio starts playing and abandon audio focus when playback stops.
Audio_Focus_Change T-Audio_Focus_Change App should handle other apps' requests for audio focus. For example, an app might reduce playback volume when another app plays speech.
Audio_Playback_Background T-Audio_Playback_Background

App should support background playback.

App must use a foreground service to prevent the system from killing the app process once the app is no longer visible. The app must also display a persistent, non‑dismissible notification in the status bar or on the lock screen to inform the user that the app is running.

Users should be able to control playback using the notification or lock screen controls or the controls on a connected accessory.

Audio_Notification_Style T-Audio_Notification_Style When the app plays audio in the background, app must create a notification styled with MediaStyle.
Audio_Playback_Resume T-Audio_Playback_Resume If the app is in the background and audio is paused, audio resumes when the app returns to the foreground, or the app must indicate to the user that playback is in a paused state.

Video

ID Tests Description
Video_PiP T-Video_PiP If the app plays video, app should support picture-in-picture playback.
Video_Encoding T-Video_Encoding If the app encodes video, app should do so using the HEVC video compression standard.
Video_Playback_Background T-Video_Playback_Background

App supports background playback of video when the app is not the topmost app, including when the app window is:

  • Minimized
  • Behind other windows or system UI (for example, notification shade or home/lock screen)
  • Off the visible desktop screen

Sharing

ID Tests Description
System_Sharesheet T-System_Sharesheet App should use the Android Sharesheet when sharing content. App can suggest targets that are unavailable to custom solutions.

Background services

ID Tests Description
Background_Service_Optimization T-Background_Service_Optimization

App avoids running unnecessarily long services in the background to ensure the smooth running of the user's device.

Note: The system applies various restrictions on background services.

The following are poor uses of background services:

  • Maintaining a network connection for notifications
  • Maintaining a Bluetooth connection
  • Keeping the GPS powered on

For more information, see Background tasks overview.

Performance and stability

Your app should provide optimal performance, stability, compatibility, and responsiveness.

Performance

ID Tests Description
App_Startup_Time T-App_Startup_Time App loads quickly or provides onscreen feedback to the user (a progress indicator or similar cue) if the app takes longer than two seconds to load.
Rendering_Performance T-Rendering_Performance App renders frames every 16 (or fewer) milliseconds to display at least 60 frames per second. For help with rendering issues, see Slow rendering.
StrictMode_Compliance T-StrictMode_Compliance With StrictMode enabled (see the StrictMode testing section), no red flashes (performance warnings from StrictMode) are visible when testing the app.

Stability

ID Tests Description
Stability_ANR T-Stability_ANR App does not crash or block the UI thread causingANR (Android Not Responding) errors. Use the Google Play pre-launch report to identify potential stability issues. After deployment, monitor the Android Vitals page in the Google Play console.

SDK

ID Tests Description
Android_Platform_Compatibility T-Android_Platform_Compatibility App runs on the latest public version of the Android platform without crashing or severely impacting core functionality.
Target_SDK_Version T-Target_SDK_Version App targets the latest Android SDK needed to align with Google Play requirements by setting the targetSdk value in the app's module build.gradle file.
Compile_SDK_Version T-Target_SDK_Version App is built with the latest Android SDK by setting the compileSdk value in the app's module build.gradle file.
SDK_Maintenance T-SDK_Maintenance,
T-Non_SDK_Interfaces

Any Google or third-party SDKs used are up to date. Any improvements to these SDKs related to stability, compatibility, or security should be available to users in a timely manner.

For Google SDKs, use SDKs powered by Google Play services when available. These SDKs are backward compatible, receive automatic updates, reduce your app package size, and make efficient use of on-device resources.

Non_SDK_Interfaces T-Non_SDK_Interfaces App does not use non-SDK interfaces.
Production_Build_Quality T-Production_Build_Quality No debug libraries are included in the production app. Debug libraries included in the app can cause performance as well as security issues.

Battery

ID Tests Description
Power_Management T-Power_Management

App properly supports power management features Doze and App Standby.

Apps can request a power maintenance exemption. See Support for other use cases in Optimize for Doze and App Standby.

Privacy and security

App handles user data and personal information safely and provides appropriate levels of permission.

Applications published on the Google Play Store must also follow the Google Play User Data policies to protect user privacy.

Permissions

ID Tests Description
Minimize_Permissions T-Minimize_Permissions App requests only the absolute minimum permissions needed to support the current use case. For some permissions, such as location, app uses a coarse specification in place of fine if possible. See Minimize your permission requests.
Sensitive_Permissions T-Sensitive_Permissions

App requests permission to access sensitive data (such as SMS or Call Log permission groups or location) or services that cost money (such as Dialer or SMS) only when directly related to the app's core use cases. Implications related to these permissions must be prominently disclosed to the user.

Depending on how your app uses the permissions, an alternative way of fulfilling your app's use case might be possible without relying on access to sensitive information. For example, instead of requesting permissions related to a user's contacts, use an implicit intent to request access.

Runtime_Permissions T-Runtime_Permissions App requests runtime permissions when the functionality is requested, rather than during app startup.
Permission_Rationale T-Permission_Rationale App clearly explains why permissions are needed.
Graceful_Degradation T-Graceful_Degradation App gracefully degrades when users deny or revoke a permission. App shouldn't prevent user access altogether.

Data and files

ID Tests Description
Sensitive_Data_Storage T-Sensitive_Data_Storage,
T-Sensitive_Data_Handling
All sensitive data is stored in the app's internal storage.
Sensitive_Data_Logging T-Sensitive_Data_Logging No personal or sensitive user data is logged to the system log or an app-specific log.
Hardware_IDs T-Hardware_IDs App does not use any non-resettable hardware IDs, such as the IMEI, for identification purposes.

Identity

ID Tests Description
Autofill_Hints T-Autofill_Hints App provides hints to autofill account credentials and other sensitive information, such as credit card info, physical address, and phone number.
Credential_Manager T-Credential_Manager App integrates Credential Manager for Android for a seamless sign-in experience that unifies support for passkeys, federated identity, and passwords.
Biometric_Authentication T-Biometric_Authentication App supports biometric authentication to protect financial transactions or sensitive information, such as important user documents.

App components

ID Tests Description
Component_Export T-Component_Export

App sets the android:exported attribute explicitly for all activities, services, broadcast receivers, and especially content providers.

Only application components that share data with other apps, or components that should be invoked by other apps, are exported.

Component_Permissions T-Component_Permissions

All intents and broadcasts follow best practices:

Component_Protection T-Component_Protection

All components that share content between apps use android:protectionLevel="signature" for custom permissions. This includes activities, services, broadcast receivers, and especially content providers.

Apps shouldn't rely on accessing a list of installed packages.

Networking

ID Tests Description
Network_Security_Traffic T-Network_Security_Traffic All network traffic is sent over SSL.
Network_Security_Configuration T-Network_Security_Configuration App declares a network security configuration.
Security_Provider_Initialization T-Security_Provider_Initialization If the app uses Google Play services, the security provider is initialized at application startup.

WebViews

ID Tests Description
WebView_Asset_Loader T-WebView_Asset_Loader,
T-WebView_Navigation
Don't use setAllowUniversalAccessFromFileURLs() for accessing local content. Instead, use WebViewAssetLoader.
WebView_JavaScript T-WebView_JavaScript,
T-WebView_Navigation

Web views don't use addJavaScriptInterface() with untrusted content.

On Android 6.0 (API level 23 and higher), use HTML message channels instead.

Execution

ID Tests Description
App_Bundles T-App_Bundles

App does not dynamically load code from outside the app's APK. Use Android App Bundles, which include Play Feature Delivery and Play Asset Delivery.

As of August 2021, the use of Android App Bundles is mandatory for all new apps in the Google Play Store.

Cryptography

ID Tests Description
Cryptographic_Algorithms T-Cryptographic_Algorithms App uses strong, platform-provided cryptographic algorithms and a random number generator. Also, the app does not implement custom algorithms.

Google Play

Enable your app to be published on Google Play.

Policies

ID Tests Description
Play_Content_Policies T-Play_Content_Policies App strictly adheres to the terms of the Google Play Developer Content Policy, does not offer inappropriate content, and does not use the intellectual property or brand of others.
Play_Content_Rating T-Play_Content_Policies App maturity level is set appropriately based on the Content Rating Guidelines.

App details page

ID Tests Description
Play_Feature_Graphic T-Play_Feature_Graphic,
T-Play_Graphic_Assets

App feature graphic follows the guidelines outlined in this support article. Make sure that:

  • App listing includes a high-quality feature graphic
  • The feature graphic does not contain device images, screenshots, or small text that's illegible when scaled down and displayed on the smallest screen size that your app is targeting
  • The feature graphic does not resemble an advertisement
Play_Device_References T-Play_Graphic_Assets App screenshots and videos don't show or reference non-Android devices.
Play_Misleading_Content T-Play_Graphic_Assets App screenshots or videos don't represent the content and experience of your app in a misleading way.

User support

ID Tests Description
Play_User_Reviews T-Play_Content_Policies Common user-reported bugs in the Reviews tab of the Google Play page are addressed if the bugs are reproducible and occur on many different devices. If a bug occurs on only a few devices, you should still address it if those devices are particularly popular or new.

Test environment

Set up a test environment as follows:

  • Emulator testing: Android Emulator is a great way to test your app under different Android versions and screen resolutions. Set up emulated devices (AVDs) to represent the most common form factors and hardware/software combinations for your target user base. Test a variety of form factors using the following emulators (at a minimum):

    • Foldables: 7.6" fold-in with outer display (this is listed under phones in the AVD Manager)
    • Tablet: Pixel C 9.94" (2,560px x 1,800px)
    • Mobile app notification testing: Pair a mobile device / emulator with Wear OS emulator: Wear OS Round 1.84"
  • Hardware devices: Your test environment should include a small number of actual hardware devices that represent the key form factors and hardware/software combinations that are available to consumers. You don't need to test on every device that's on the market. Focus on a small number of representative devices, even using one or two devices per form factor.

  • Device test labs:; You can also use third party services, such as Firebase Test Lab, to test your app on a wide variety of devices.

  • Test with the latest Android version: In addition to testing representative Android versions for your target user base, you should always test against the latest version of Android to ensure the latest behavior changes don't negatively impact your app's user experience.

For further guidance on testing, including unit testing, integration testing, and UI testing, see Fundamentals of testing Android apps.

StrictMode

For performance testing, enable StrictMode in your app. Use StrictMode to catch operations that could affect performance, network accesses, and file reads and writes. Look for potentially problematic operations both on the main thread and on other threads.

Set up a per-thread monitoring policy using StrictMode.ThreadPolicy.Builder and enable all supported monitoring in the ThreadPolicy using detectAll().

Enable visual notification of policy violations for the ThreadPolicy using penaltyFlashScreen().

Tests

The core app quality tests help you assess the fundamental quality of your app. You can combine the tests or integrate groups of tests together in your test plan.

User experience

Test for a consistent and intuitive user experience.

Usability

ID Feature Description
T-Consistent_UX Consistent_UX

Navigate to all parts of the app—all screens, dialogs, settings, and all user flows.

Do the following:
  • If the application allows for editing or content creation, game play, or media playback, make sure to test those flows.
  • While testing the app, introduce interruptions from other apps, such as receiving a notification or a phone call; and apply transient changes to device attributes, such as network connectivity, battery function, GPS availability, and system load.
  • Enter and test all in-app purchase flows
T-App_Switcher App_Switcher From each app screen, switch to another running app, and then return to the app under test using the Recents app switcher.
T-Sleep_Resume Sleep_Resume Press the power button to put the device to sleep, then press the power button again to wake the screen.
T-Lock_Resume Lock_Resume Set up a screen lock on the device. Press the power button to put the device to sleep (which locks the device). Then, press the power button again to wake the screen and unlock the device.

SD card

ID Feature Description
T-SD_Card Consistent_UX

Perform core functionality tests with the app installed on a device's SD card (if the app supports this installation method).

To move the app to an SD card, see the app Settings.

User interface

ID Feature Description
T-Orientation_Transitions Display_State_Parity,
Fullscreen_Display,
Orientation_Transitions

From each app screen, rotate the device between landscape and portrait orientations and folded and unfolded states at least three times.

Verify the app does the following:
  • Provides function parity in all display orientations and fold states
  • Fills the app window in all display orientations and fold states and is not letterboxed
  • Maintains state and has no rendering problems during rapid transitions between orientations and device folding and unfolding

Visual quality

ID Feature Description
T-Graphic_Quality Graphic_Quality Use all features of your app. Verify that all visuals, including graphics, text, images, and other UI elements are free of distortion, blurring, or pixelation.
T-Line_Length Line_Length

Review all text blocks in the app. Verify that text and text block line length is limited to 45-75 characters (including spaces) for readability.

Verify the following:
  • Composition is acceptable in all supported form factors
  • No cut-off letters or words
  • No improper word wraps within buttons or icons
  • Sufficient spacing between text and surrounding elements
T-Theme_Support Theme_Support Verify that all text is readable in light and dark themes. Verify that all visuals are clearly discernible and aesthetic in light and dark themes.
ID Feature Description
T-Back_Nav Back_Button_Nav,
Back_Gesture_Nav

Navigate to all parts of the app—all screens, dialogs, settings, and all user flows.

From each app screen, press the Back button or use the back swipe gesture. The app should navigate to the previous or home screen.

T-State_Preservation State_Preservation From each app screen, press the device's Home key or swipe up in gesture navigation, then relaunch the app from the All Apps screen.

Notifications

ID Feature Description
T-Notification_Quality Notification_Quality,
Conversation_Quality
Trigger and observe in the notifications drawer all types of notifications that the app can display. Expand notifications where applicable (Android 4.1 and higher), and tap on all available actions.

Accessibility

ID Feature Description
T-Touch_Target_Size Touch_Target_Size Verify that touch targets maintain a consistent, accessible size and position for all display sizes and configurations. For information on accessibility, see the Accessibility Scanner.
T-Visual_Contrast Visual_Contrast Verify the contrast of all visual elements.
T-Content_Description Content_Description Verify that all UI elements other than TextView have content descriptions.

Functionality

Verify that your app implements the following functional behavior.

Audio

ID Feature Description
T-Audio_Playback_Start Audio_Playback_Start Initiate audio playback. Verify that within one second the app starts playing the audio or provides a visual indicator that the audio data is being prepared for playback.
T-Audio_Focus_Request Audio_Focus_Request Initiate audio playback. App should request audio focus. When audio playback stops, the app should relinquish audio focus (which happens automatically for apps that target Android 12 (API level 31) and higher).
T-Audio_Focus_Change Audio_Focus_Change Initiate audio playback. Initiate audio playback in another app. Your app should respond to the change in audio focus and stop audio playback or reduce playback volume.
T-Audio_Playback_Background Audio_Playback_Background

Initiate audio playback. Interact with another non-audio app as the foreground app. The app should continue playing audio in the background and should display a notification in the status bar. Verify that you can manage playback using controls displayed in the notification.

Lock the device screen. The app should continue playing audio in the background and should display a notification on the lock screen. Verify that you can manage playback using controls displayed in the notification.

T-Audio_Notification_Style Audio_Notification_Style Initiate audio playback. Interact with another non-audio app as the foreground app. Verify that your app continues to play audio in the background and has created a notification styled with MediaStyle. See Playing nicely with media controls.
T-Audio_Playback_Resume Audio_Playback_Resume Initiate audio playback. Interact with another non-audio app as the foreground app. Interact with your app to make it the top app. Audio should resume or volume should be restored. Otherwise, the app should indicate to the user that playback is paused.

Video

ID Feature Description
T-Video_PiP Video_PiP Activate app video playback in picture-in-picture mode.
T-Video_Encoding Video_Encoding Verify that the app encodes video using the HEVC video compression standard.
T-Video_Playback_Background Video_Playback_Background Start video playback. Minimize the app window, open another app to move the app window to the background. On desktop‑capable devices, move the app window off the visible desktop. Verify that video playback continues without interruption in all cases.

Sharing

ID Feature Description
T-System_Sharesheet System_Sharesheet Create an intent and start an activity by calling startActivity() with the intent as an argument. See Use the Android Sharesheet. Your app should display the Android Sharesheet.

Background services

ID Feature Description
T-Background_Service_Optimization Background_Service_Optimization

Use all major features of your app. Verify that no long-running background services are started.

Switch to another app to send your app to the background. Go to Settings and check whether your app has any services running while in the background. On Android 4.0 and higher, go to the Apps screen and find the app in the Running tab.

Performance and stability

Verify performance, stability, and pixel-perfect visuals.

Performance

ID Feature Description
T-App_Startup_Time App_Startup_Time Start your app. Verify that the app loads quickly or provides a progress indicator or similar cue if the app takes longer than two seconds to load.
T-Rendering_Performance Rendering_Performance Use all major features of your app. Verify that the app renders at least 60 frames per second. Use the Profile HWUI rendering option to help test your app.
T-StrictMode_Compliance StrictMode_Compliance

Enable StrictMode in your app. Use all major features. Verify that the app doesn't produce any StrictMode performance warnings; that is no red flashes are visible when testing the app. Red flashes indicate bad behavior regarding storage, network access, or memory management (such as memory leaks).

Pay close attention to garbage collection and its impact on the user experience.

Stability

ID Feature Description
T-Stability_ANR Stability_ANR Use all major features of your app. Verify that the app does not crash or block the UI thread causing ANR (Android Not Responding) errors. Review the Google Play pre-launch report to identify potential stability issues.

SDK

ID Feature Description
T-Android_Platform_Compatibility Android_Platform_Compatibility Run your app on the latest public version of the Android platform. Use all major features. Verify that the app doesn't crash and runs without any loss of core functionality.
T-Target_SDK_Version Target_SDK_Version,
Compile_SDK_Version
Review the Android manifest file and build configuration to ensure the application is built against the latest available SDK (targetSdk and compileSdk).
T-SDK_Maintenance SDK_Maintenance Review your app's build.gradle file for any outdated dependencies.
T-Non_SDK_Interfaces Non_SDK_Interfaces Use the Android Studio lint tool to detect non-SDK interface usage. See Restrictions on non-SDK interfaces for alternative testing methods.
T-Production_Build_Quality Production_Build_Quality Review your app's build.gradle file for any included debug libraries.

Battery

ID Feature Description
T-Power_Management Power_Management

Use all major app features in Doze and App Standby modes. Verify that alarms, timers, notifications, and syncs function properly in the Doze maintenance window and when the app exits App Standby mode.

Test Doze and App Standby behavior using ADB commands (see Test with Doze and App Standby for requirements and guidelines).

To diagnose unexpected battery drain, use the Android Studio Power Profiler or the Battery Historian tool combined with planned background work.

Privacy and security

Test for privacy and security protections expected by users.

Permissions

ID Feature Description
T-Minimize_Permissions Minimize_Permissions Review all permissions that your app requires, in the manifest file, at runtime, and in app settings on the device (Settings > App Info).
T-Sensitive_Permissions Sensitive_Permissions Use any features of your app that request permissions. Verify that the app requests permission to access sensitive data or services only for core app use cases. Verify that the implications of granting permission to sensitive data and services are clearly communicated to the user.
T-Runtime_Permissions Runtime_Permissions Use all features of your app that require permissions. Verify that the permissions are requested lazily, that is, only when the features are accessed, rather than during app startup.
T-Permission_Rationale Permission_Rationale Use all features of your app that require permissions. Verify that the app explains to the user why the permissions are needed.
T-Graceful_Degradation Graceful_Degradation Use all features of your app that require permissions. Deny or revoke the permissions. Verify that the app provides an alternative use case and continues to function.

Data and files

ID Feature Description
T-Sensitive_Data_Storage Sensitive_Data_Storage Review all data stored in internal storage. Verify that data stored externally is not sensitive data.
T-Sensitive_Data_Handling Sensitive_Data_Storage Review how the data that's loaded from external storage is handled and processed.
T-Sensitive_Data_Logging Sensitive_Data_Logging Use all major app features while monitoring the device log. Verify that no private user information is logged.
T-Hardware_IDs Hardware_IDs Use all major app features. Verify that the app does not use any hardware IDs such as the IMEI for identification purposes.

Identity

ID Feature Description
T-Autofill_Hints Autofill_Hints Use all app features that require user input. Verify that the app provides hints to autofill input fields for data such as account credentials and other sensitive information.
T-Credential_Manager Credential_Manager Sign in to your app. Verify that the app integrates Credential Manager for Android for a sign-in experience that unifies support for passkeys, federated identity, and passwords.
T-Biometric_Authentication Biometric_Authentication Use all app features that require authentication. Verify that the app protects financial transactions or sensitive information, such as important user documents, with biometric authentication.

App components

ID Feature Description
T-Component_Export Component_Export Review all application components defined in the Android manifest file for the appropriate export state. The exported property must be set explicitly for all components.
T-Component_Permissions Component_Permissions Review all permissions that your app requires, in the manifest file, at runtime, and in the app settings on the device (Settings > App Info).
T-Component_Protection Component_Protection Review all content providers defined in the Android manifest file. Make sure each provider has an appropriate protectionLevel.

Networking

ID Feature Description
T-Network_Security_Traffic Network_Security_Traffic Declare a network security configuration that disables cleartext traffic, then test the app.
T-Network_Security_Configuration Network_Security_Configuration Review the app's network security configuration. Verify that no lint checks on the configuration fail.
T-Security_Provider_Initialization Security_Provider_Initialization Verify that the security provider is initialized at application startup for Google Play services.

WebViews

ID Feature Description
T-WebView_Asset_Loader WebView_Asset_Loader Review the app's network security configuration. Verify that no lint checks on the configuration fail.
T-WebView_JavaScript WebView_JavaScript For each WebView, navigate to a page that requires JavaScript.
T-WebView_Navigation WebView_Asset_Loader,
WebView_JavaScript
In each WebView, attempt to navigate to sites and content that aren't loaded directly by your app.

Execution

ID Feature Description
T-App_Bundles App_Bundles Verify that the app uses Android App Bundles and does not dynamically load code from outside the app's APK.

Cryptography

ID Feature Description
T-Cryptographic_Algorithms Cryptographic_Algorithms Verify that the app uses strong, platform-provided cryptographic algorithms and a random number generator. Also verify that the app doesn't implement custom algorithms.

Google Play

Verify that your app is ready for Google Play.

Policies

ID Feature Description
T-Play_Content_Policies Play_Content_Policies,
Play_Content_Rating,
Play_User_Reviews
Sign into the Google Play Developer Console to review your developer profile, app description, screenshots, feature graphic, content rating and user feedback.

App details page

ID Feature Description
T-Play_Feature_Graphic Play_Feature_Graphic Download your feature graphic and screenshots, and scale them down to match the display sizes on the devices and form factors that you are targeting.
T-Play_Graphic_Assets Play_Feature_Graphic,
Play_Device_References,
Play_Misleading_Content
Review all graphical assets, media, text, code libraries, and other content that's packaged in the app or expansion file download.

Archive

Previous versions of the core app quality guidelines: