Overview of the Google Play Core Library

This page describes the Google Play Core Library and how to add it to your project.

What is Play Core?

The Play Core Library is your app’s runtime interface with the Google Play Store. Some of the things you can do with Play Core include the following:

The Play Core Library is available in Java, native, and Unity. For more information about the latest Play Core Library release, see the Release notes.

Add the Play Core Library to your project

Before you can start using the Play Core Library, you need to first add it to your app project. The steps you need to take depend on whether you're developing in Java, Kotlin, native, or are using Unity.

Java or Kotlin

If you’re developing your project using Java or Kotlin, you can import the Play Core Library into your Android project as a Gradle dependency, as shown below:

Groovy

// In your app’s build.gradle file:
...
dependencies {
    // This dependency is downloaded from the Google’s Maven repository.
    // So, make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.play:core:1.10.3'

    // For Kotlin users also add the Kotlin extensions library for Play Core:
    implementation 'com.google.android.play:core-ktx:1.8.1'
    ...
}

Kotlin

// In your app’s build.gradle file:
...
dependencies {
    // This dependency is downloaded from the Google’s Maven repository.
    // So, make sure you also include that repository in your project's build.gradle file.
    implementation("com.google.android.play:core:1.10.3")

    // For Kotlin users also import the Kotlin extensions library for Play Core:
    implementation("com.google.android.play:core-ktx:1.8.1")
    ...
}

The Play Core KTX library is optional and provides Kotlin coroutines versions for the asynchronous method calls in the regular Play Core Library, as well as other useful extensions that make using the APIs more idiomatic from Kotlin.

Native

The Play Core Native SDK provides a C/C++ API interface for Play Asset Delivery. The SDK is designed for building ARM and x86 native libraries with CMake and for using Gradle to generate Android App Bundles and APKs.

Set up your development environment

  1. Do either of the following:

  2. Prepare Android Studio for native development by using the SDK Manager to install the latest CMake and Android Native Development Kit (NDK). For more information on creating or importing native projects, see Getting Started with the NDK.

  3. Download the zip file and extract it alongside your project.

    Download Link Size SHA-256 Checksum
    41.5 MB 82956956522c03d42e83ce66dbe9aff13286840a148a0948edf7a1b56daf4417
  4. Update your app’s build.gradle file as shown below:

    Groovy

        // App build.gradle
    
        plugins {
          id 'com.android.application'
        }
    
        // Define a path to the extracted Play Core SDK files.
        // If using a relative path, wrap it with file() since CMake requires absolute paths.
        def playcoreDir = file('../path/to/playcore-native-sdk')
    
        android {
            defaultConfig {
                ...
                externalNativeBuild {
                    cmake {
                        // Define the PLAYCORE_LOCATION directive.
                        arguments "-DANDROID_STL=c++_static",
                                  "-DPLAYCORE_LOCATION=$playcoreDir"
                    }
                }
                ndk {
                    // Skip deprecated ABIs. Only required when using NDK 16 or earlier.
                    abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
                }
            }
            buildTypes {
                release {
                    // Include Play Core Library proguard config files to strip unused code while retaining the Java symbols needed for JNI.
                    proguardFile "$playcoreDir/proguard/common.pgcfg"
                    proguardFile "$playcoreDir/proguard/per-feature-proguard-files"
                    ...
                }
                debug {
                    ...
                }
            }
            externalNativeBuild {
                cmake {
                    path 'src/main/CMakeLists.txt'
                }
            }
        }
    
        dependencies {
            // Use the Play Core AAR included with the SDK.
            implementation files("$playcoreDir/playcore.aar")
            ...
        }
        

    Kotlin

    // App build.gradle
    
    plugins {
        id("com.android.application")
    }
    
    // Define a path to the extracted Play Core SDK files.
    // If using a relative path, wrap it with file() since CMake requires absolute paths.
    val playcoreDir = file("../path/to/playcore-native-sdk")
    
    android {
        defaultConfig {
            ...
            externalNativeBuild {
                cmake {
                    // Define the PLAYCORE_LOCATION directive.
                    arguments += listOf("-DANDROID_STL=c++_static", "-DPLAYCORE_LOCATION=$playcoreDir")
                }
            }
            ndk {
                // Skip deprecated ABIs. Only required when using NDK 16 or earlier.
                abiFilters.clear()
                abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
            }
        }
        buildTypes {
            release {
                // Include Play Core Library proguard config files to strip unused code while retaining the Java symbols needed for JNI.
                proguardFile("$playcoreDir/proguard/common.pgcfg")
                proguardFile("$playcoreDir/proguard/per-feature-proguard-files")
                ...
            }
            debug {
                ...
            }
        }
        externalNativeBuild {
            cmake {
                path = "src/main/CMakeLists.txt"
            }
        }
    }
    
    dependencies {
        // Use the Play Core AAR included with the SDK.
        implementation(files("$playcoreDir/playcore.aar"))
        ...
    }
    
  5. Update your app’s CMakeLists.txt files as shown below:

    cmake_minimum_required(VERSION 3.6)
    
    ...
    
    # Add a static library called “playcore” built with the c++_static STL.
    include(${PLAYCORE_LOCATION}/playcore.cmake)
    add_playcore_static_library()
    
    // In this example “main” is your native code library, i.e. libmain.so.
    add_library(main SHARED
            ...)
    
    target_include_directories(main PRIVATE
            ${PLAYCORE_LOCATION}/include
            ...)
    
    target_link_libraries(main
            android
            playcore
            ...)
    

Unity

Unity plugins are available for select Play Core APIs, including Play Asset Delivery. Download the latest release from Google Play Plugins for Unity releases. This is a single package that includes Play Core plugins as well as other Play plugins, such as Play In-app Billing and Play Instant.

Download Play Core Native SDK

Before downloading, you must agree to the following terms and conditions.

Terms and Conditions

Last modified: September 24, 2020
  1. By using the Play Core Software Development Kit, you agree to these terms in addition to the Google APIs Terms of Service ("API ToS"). If these terms are ever in conflict, these terms will take precedence over the API ToS. Please read these terms and the API ToS carefully.
  2. For purposes of these terms, "APIs" means Google's APIs, other developer services, and associated software, including any Redistributable Code.
  3. “Redistributable Code” means Google-provided object code or header files that call the APIs.
  4. Subject to these terms and the terms of the API ToS, you may copy and distribute Redistributable Code solely for inclusion as part of your API Client. Google and its licensors own all right, title and interest, including any and all intellectual property and other proprietary rights, in and to Redistributable Code. You will not modify, translate, or create derivative works of Redistributable Code.
  5. Google may make changes to these terms at any time with notice and the opportunity to decline further use of the Play Core Software Development Kit. Google will post notice of modifications to the terms at https://developer.android.com/guide/playcore/license. Changes will not be retroactive.
Download Play Core Native SDK

play-core-native-sdk-1.10.3.zip

Play Core Software Development Kit Terms of Service

Last modified: September 24, 2020
  1. By using the Play Core Software Development Kit, you agree to these terms in addition to the Google APIs Terms of Service ("API ToS"). If these terms are ever in conflict, these terms will take precedence over the API ToS. Please read these terms and the API ToS carefully.
  2. For purposes of these terms, "APIs" means Google's APIs, other developer services, and associated software, including any Redistributable Code.
  3. “Redistributable Code” means Google-provided object code or header files that call the APIs.
  4. Subject to these terms and the terms of the API ToS, you may copy and distribute Redistributable Code solely for inclusion as part of your API Client. Google and its licensors own all right, title and interest, including any and all intellectual property and other proprietary rights, in and to Redistributable Code. You will not modify, translate, or create derivative works of Redistributable Code.
  5. Google may make changes to these terms at any time with notice and the opportunity to decline further use of the Play Core Software Development Kit. Google will post notice of modifications to the terms at https://developer.android.com/guide/playcore/license. Changes will not be retroactive.

Play Core SDK Data Safety

Google Play has a data safety section for developers to disclose their apps’ data collection, sharing, and security practices. To help you complete the data safety section requirements, you can use the information below on how the Play Core SDK handles data.

The Play Core SDK is your app’s runtime interface with the Google Play Store. As such, when you use Play Core in your app, the Play Store runs its own processes, which include handling data as governed by the Google Play Terms of Service. The information below describes how the Play Core SDK handles data to process specific requests from your app.

Additional languages API

Data collected on usage List of languages installed
Purpose of data collection The data collected is used to deliver different language versions of the app and to preserve installed languages after an app update.
Data encryption Data is encrypted.
Data sharing Data is not transferred to any third parties.
Data deletion Data is deleted following a fixed retention period.

Play Feature Delivery

Data collected on usage Device metadata
Application version
Purpose of data collection The data collected is used to serve the right module to the device and to preserve installed modules after an update and backup and restore.
Data encryption Data is encrypted.
Data sharing Data is not transferred to any third parties.
Data deletion Data is deleted following a fixed retention period.

Play Asset Delivery

Data collected on usage Device metadata
Application version
Purpose of data collection The data collected is used to serve the right asset pack to the device and to preserve installed asset packs after an update.
Data encryption Data is encrypted.
Data sharing Data is not transferred to any third parties.
Data deletion Data is deleted following a fixed retention period.

In-app Updates

Data collected on usage Device metadata
Application version
List of modules and asset packs installed
Purpose of data collection The data collected is used to determine if an update is available and what the size of the update is expected to be.
Data encryption Data is encrypted.
Data sharing Data is not transferred to any third parties.
Data deletion Data is deleted following a fixed retention period.

In-app Reviews

Data collected on usage User-entered data (rating and free-text review)
Purpose of data collection The data collected is used to leave a review on the Play Store.
Data encryption Data is encrypted.
Data sharing The data collected is used in a public review on the Play Store or, if the app is in a closed test track, the data collected is shared privately with the app developer.
Data deletion Users can delete their reviews in their Google Play Store account or Google account.

Play Integrity API

Data collected on usage Application version
Application signing certificate
A device attestation token generated by Google Play services
Purpose of data collection The data collected is used to verify the application integrity, the licensing status, and the device integrity.
Data encryption Data is encrypted.
Data sharing Data is not transferred to any third parties.
Data deletion Data is deleted following a fixed retention period.

While we aim to be as transparent as possible, you are solely responsible for deciding how to respond to Google Play’s data safety section form regarding your app’s user data collection, sharing, and security practices.