diff --git a/.deepsource.toml b/.deepsource.toml new file mode 100644 index 00000000000..5f34c3845bd --- /dev/null +++ b/.deepsource.toml @@ -0,0 +1,38 @@ +version = 1 + +[[analyzers]] +<< deepsource-config-dc794d08 +name = "secrets" + +<< deepsource-config-bc693d3d +name = "cxx" + +<< deepsource-config-35ef329a +name = "javascript" +name = "secrets" + +[[analyzers]] +name = "terraform" + +[[analyzers]] +name = "shell" + +[[analyzers]] +name = "javascript" + + [analyzers.meta] + plugins = [ + "react", + "angularjs", + "angular" + ] + environment = [ + "nodejs", + "mongo" + ] + +[[transformers]] +name = "prettier" +>> master +>> master +>> master diff --git a/.github/workflows/ant.yml b/.github/workflows/ant.yml new file mode 100644 index 00000000000..6036634cffe --- /dev/null +++ b/.github/workflows/ant.yml @@ -0,0 +1,42 @@ +# This workflow will build a Java project with Ant +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-ant + +name: Java CI + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + - name: Build with Ant + run: ant -noinput -buildfile build.xml + name: Setup Go environment + uses: actions/setup-go@v4.0.1 + with: + # The Go version to download (if necessary) and use. Supports semver spec and ranges. + go-version: # optional + # Path to the go.mod or go.work file. + go-version-file: # optional + # Set this option to true if you want the action to always check for the latest available version that satisfies the version spec + check-latest: # optional + # Used to pull node distributions from go-versions. Since there's a default, this is typically not supplied by the user. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting. + token: # optional, default is ${{ github.server_url == 'https://github.com' && github.token || '' }} + # Used to specify whether caching is needed. Set to true, if you'd like to enable caching. + cache: # optional, default is true + # Used to specify the path to a dependency file - go.sum + cache-dependency-path: # optional + # Target architecture for Go to use. Examples: x86, x64. Will use system architecture by default. + architecture: # optional diff --git a/.github/workflows/azure-functions-app-java.yml b/.github/workflows/azure-functions-app-java.yml new file mode 100644 index 00000000000..0417aab7d1f --- /dev/null +++ b/.github/workflows/azure-functions-app-java.yml @@ -0,0 +1,63 @@ +# This workflow will build a Java project and deploy it to an Azure Functions App on Windows or Linux when a commit is pushed to your default branch. +# +# This workflow assumes you have already created the target Azure Functions app. +# For instructions see https://learn.microsoft.com/en-us/azure/azure-functions/create-first-function-vs-code-java +# +# To configure this workflow: +# 1. Set up the following secrets in your repository: +# - AZURE_FUNCTIONAPP_PUBLISH_PROFILE +# 2. Change env variables for your configuration. +# +# For more information on: +# - GitHub Actions for Azure: https://github.com/Azure/Actions +# - Azure Functions Action: https://github.com/Azure/functions-action +# - Publish Profile: https://github.com/Azure/functions-action#using-publish-profile-as-deployment-credential-recommended +# - Azure Service Principal for RBAC: https://github.com/Azure/functions-action#using-azure-service-principal-for-rbac-as-deployment-credential +# +# For more samples to get started with GitHub Action workflows to deploy to Azure: https://github.com/Azure/actions-workflow-samples/tree/master/FunctionApp + +name: Deploy Java project to Azure Function App + +on: + push: + branches: ["master"] + +env: + AZURE_FUNCTIONAPP_NAME: 'your-app-name' # set this to your function app name on Azure + POM_XML_DIRECTORY: '.' # set this to the directory which contains pom.xml file + JAVA_VERSION: '8' # set this to the java version to use (e.g. '8', '11', '17') + +jobs: + build-and-deploy: + runs-on: windows-latest # For Linux, use ubuntu-latest + environment: dev + steps: + - name: 'Checkout GitHub Action' + uses: actions/checkout@v3 + + # If you want to use Azure RBAC instead of Publish Profile, then uncomment the task below + # - name: 'Login via Azure CLI' + # uses: azure/login@v1 + # with: + # creds: ${{ secrets.AZURE_RBAC_CREDENTIALS }} # set up AZURE_RBAC_CREDENTIALS secrets in your repository + + - name: Setup Java Sdk ${{ env.JAVA_VERSION }} + uses: actions/setup-java@v1 + with: + java-version: ${{ env.JAVA_VERSION }} + + - name: 'Restore Project Dependencies Using Mvn' + shell: pwsh # For Linux, use bash + run: | + pushd './${{ env.POM_XML_DIRECTORY }}' + mvn clean package + popd + + - name: 'Run Azure Functions Action' + uses: Azure/functions-action@v1 + id: fa + with: + app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }} + package: '${{ env.POM_XML_DIRECTORY }}' # if there are multiple function apps in same project, then this path will be like './${{ env.POM_XML_DIRECTORY }}/target/azure-functions/${{ env.POM_FUNCTIONAPP_NAME }' + publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }} # Remove publish-profile to use Azure RBAC + respect-pom-xml: true diff --git a/.github/workflows/build-release-artifacts.yml b/.github/workflows/build-release-artifacts.yml index 0870aeed31a..b3ab7bc03a5 100644 --- a/.github/workflows/build-release-artifacts.yml +++ b/.github/workflows/build-release-artifacts.yml @@ -32,3 +32,26 @@ jobs: name: release_artifacts path: build/*.zip retention-days: 15 + - name: Run test on Autify for Mobile + # You may pin to the exact commit or the version. + # uses: autifyhq/actions-mobile-test-run@8fd7241f47244c8050ca2665828fc4a0b3c02e4e + uses: autifyhq/actions-mobile-test-run@v2.4.0 + with: + # Access token of Autify for Mobile. + access-token: + # URL of a test plan e.g. https://moible-app.autify.com/projects//test_plans/ + autify-test-url: + # ID of the already uploaded build. (Note: Either build-id or build-path is required but not both) + build-id: # optional + # File path to the iOS app (*.app) or Android app (*.apk). (Note: Either build-id or build-path is required but not both) + build-path: # optional + # When true, the action waits until the test finishes. + wait: # optional, default is false + # Timeout seconds when waiting. + timeout: # optional + # Maximum retry count while waiting. The command can take up to `timeout * (max-retry-count + 1)`. Only effective with `wait` + max-retry-count: # optional + # A path to `autify` which will be used to invoke Autify CLI internally. Default is searching from PATH. + autify-path: # optional, default is autify + # Autify CLI installer URL + autify-cli-installer-url: # optional, default is https://autify-cli-assets.s3.amazonaws.com/autify-cli/channels/stable/install-cicd.bash diff --git a/.github/workflows/cmake-multi-platform.yml b/.github/workflows/cmake-multi-platform.yml new file mode 100644 index 00000000000..884b6710db7 --- /dev/null +++ b/.github/workflows/cmake-multi-platform.yml @@ -0,0 +1,141 @@ +# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform. +# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml +name: CMake on multiple platforms + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + runs-on: ${{ matrix.os }} + + strategy: + # Set fail-fast to false to ensure that feedback is delivered for all matrix combinations. Consider changing this to true when your workflow is stable. + fail-fast: false + + # Set up a matrix to run the following 3 configurations: + # 1. + # 2. + # 3. + # + # To add more build types (Release, Debug, RelWithDebInfo, etc.) customize the build_type list. + matrix: + os: [ubuntu-latest, windows-latest] + build_type: [Release] + c_compiler: [gcc, clang, cl] + include: + - os: windows-latest + c_compiler: cl + cpp_compiler: cl + - os: ubuntu-latest + c_compiler: gcc + cpp_compiler: g++ + - os: ubuntu-latest + c_compiler: clang + cpp_compiler: clang++ + exclude: + - os: windows-latest + c_compiler: gcc + - os: windows-latest + c_compiler: clang + - os: ubuntu-latest + c_compiler: cl + + steps: + - uses: actions/checkout@v3 + + - name: Set reusable strings + # Turn repeated input strings (such as the build output directory) into step outputs. These step outputs can be used throughout the workflow file. + id: strings + shell: bash + run: | + echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: > + cmake -B ${{ steps.strings.outputs.build-output-dir }} + -DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }} + -DCMAKE_C_COMPILER=${{ matrix.c_compiler }} + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} + -S ${{ github.workspace }} + + - name: Build + # Build your program with the given configuration. Note that --config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }} + + - name: Test + working-directory: ${{ steps.strings.outputs.build-output-dir }} + # Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator). + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: ctest --build-config ${{ matrix.build_type }} + - name: Deploy HelmFile + # You may pin to the exact commit or the version. + # uses: cloudposse/github-action-deploy-helmfile@e5396120c8d09d826889c286a3c7e27fa17f3f15 +uses: cloudposse/github-action-deploy-helmfile@0.5.0 + with: + # Cluster name + cluster: + # AWS region + aws-region: # optional, default is us-east-1 + # The path where lives the helmfile. + helmfile-path: # optional, default is deploy + # Helmfile name + helmfile: # optional, default is helmfile.yaml + # Operation with helmfiles. (valid options - `deploy`, `destroy`) + operation: # default is deploy + # Helmfile environment + environment: # optional, default is preview + # Git SHA + gitref-sha: # optional, default is + # Kubernetes namespace + namespace: + # Docker image + image: + # Docker image tag + image-tag: + # Debug mode + debug: # optional, default is false + # The name of the label used to describe the helm release + release_label_name: # optional, default is release + # YAML string with extra values to use in a helmfile deploy + values_yaml: # optional + # Helm version + helm_version: # optional, default is 3.11.1 + # Helmfile version + helmfile_version: # optional, default is 0.143.5 + # Kubectl version + kubectl_version: # optional, default is 1.26.3 + # Kubectl version + chamber_version: # optional, default is 2.11.1 + - name: Rational Test Automation Server GitHub Action + # You may pin to the exact commit or the version. + # uses: IBM/devopsauto-testserver-actions@c704855bdbbae4f0df152919d00fb0bd40f67ee0 + uses: IBM/devopsauto-testserver-actions@v1 + with: + # Rational Test Automation Server URL + serverUrl: + # Rational Test Automation Server Offline Token + offlineToken: + # Team Space name + teamspace: + # Project name + project: + # Branch name in which the test exists + branch: + # AssetId of the test in Rational Test Automation Server. + assetId: + # Optional. Test environment corresponding to the test. Mandatory to input the value if you want to run API test. + environment: # optional + # Optional. Comma (,) delimited values of datasets for the job to run, For example: source:replacement;source:replacement + datasets: # optionaloptional + # Optional. Variables corresponding to the test. You must enter the variables in the format: name_of_the_variable=value_of_the_variable + variables: # optional + # Optional. Labels corresponding to the test. For example: label1, label2 + labels: # optional + # Optional. Secrets collection name for the job to run. + secretsCollection: # diff --git a/.github/workflows/codacy.yml b/.github/workflows/codacy.yml new file mode 100644 index 00000000000..1948d5c3d5a --- /dev/null +++ b/.github/workflows/codacy.yml @@ -0,0 +1,72 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# This workflow checks out code, performs a Codacy security scan +# and integrates the results with the +# GitHub Advanced Security code scanning feature. For more information on +# the Codacy security scan action usage and parameters, see +# https://github.com/codacy/codacy-analysis-cli-action. +# For more information on Codacy Analysis CLI in general, see +# https://github.com/codacy/codacy-analysis-cli. + +name: Codacy Security Scan + +on: + push: + branches: [ "master" ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "master" ] + schedule: + - cron: '31 8 * * 0' + +permissions: + contents: read + +jobs: + codacy-security-scan: + permissions: + contents: read # for actions/checkout to fetch code + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + name: Codacy Security Scan + runs-on: ubuntu-latest + steps: + # Checkout the repository to the GitHub Actions runner + - name: Checkout code + uses: actions/checkout@v3 + + # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis + - name: Run Codacy Analysis CLI + uses: codacy/codacy-analysis-cli-action@d840f886c4bd4edc059706d09c6a1586111c540b + with: + # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository + # You can also omit the token and run the tools that support default configurations + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + verbose: true + output: results.sarif + format: sarif + # Adjust severity of non-security issues + gh-code-scanning-compat: true + # Force 0 exit code to allow SARIF file generation + # This will handover control about PR rejection to the GitHub side + max-allowed-issues: 2147483647 + + # Upload the SARIF file generated in the previous step + - name: Upload SARIF results file + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: results.sarif + - name: Mondoo Action + # You may pin to the exact commit or the version. + # uses: mondoohq/actions@3a676646294bf55dc54d6c6b56e6567908f7f9b5 + uses: mondoohq/actions@v1.0.0 + with: + # Additional arguments to pass to cnspec client. + args: # optional + # Sets the log level: error, warn, info, debug, trace (default "info") + log-level: # optional, default is info + # Base64 encoded service account credentials used to authenticate with Mondoo Platform + service-account-credentials: # optional diff --git a/.github/workflows/ethicalcheck.yml b/.github/workflows/ethicalcheck.yml new file mode 100644 index 00000000000..b7e4a8d67cf --- /dev/null +++ b/.github/workflows/ethicalcheck.yml @@ -0,0 +1,79 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +# EthicalCheck addresses the critical need to continuously security test APIs in development and in production. + +# EthicalCheck provides the industry’s only free & automated API security testing service that uncovers security vulnerabilities using OWASP API list. +# Developers relies on EthicalCheck to evaluate every update and release, ensuring that no APIs go to production with exploitable vulnerabilities. + +# You develop the application and API, we bring complete and continuous security testing to you, accelerating development. + +# Know your API and Applications are secure with EthicalCheck – our free & automated API security testing service. + +# How EthicalCheck works? +# EthicalCheck functions in the following simple steps. +# 1. Security Testing. +# Provide your OpenAPI specification or start with a public Postman collection URL. +# EthicalCheck instantly instrospects your API and creates a map of API endpoints for security testing. +# It then automatically creates hundreds of security tests that are non-intrusive to comprehensively and completely test for authentication, authorizations, and OWASP bugs your API. The tests addresses the OWASP API Security categories including OAuth 2.0, JWT, Rate Limit etc. + +# 2. Reporting. +# EthicalCheck generates security test report that includes all the tested endpoints, coverage graph, exceptions, and vulnerabilities. +# Vulnerabilities are fully triaged, it contains CVSS score, severity, endpoint information, and OWASP tagging. + + +# This is a starter workflow to help you get started with EthicalCheck Actions + +name: EthicalCheck-Workflow + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "master" branch + # Customize trigger events based on your DevSecOps processes. + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + schedule: + - cron: '20 4 * * 0' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +permissions: + contents: read + +jobs: + Trigger_EthicalCheck: + permissions: + security-events: write # for github/codeql-action/upload-sarif to upload SARIF results + actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status + runs-on: ubuntu-latest + + steps: + - name: EthicalCheck Free & Automated API Security Testing Service + uses: apisec-inc/ethicalcheck-action@005fac321dd843682b1af6b72f30caaf9952c641 + with: + # The OpenAPI Specification URL or Swagger Path or Public Postman collection URL. + oas-url: "http://netbanking.apisec.ai:8080/v2/api-docs" + # The email address to which the penetration test report will be sent. + email: "xxx@apisec.ai" + sarif-result-file: "ethicalcheck-results.sarif" + + - name: Upload sarif file to repository + uses: github/codeql-action/upload-sarif@v2 + with: + sarif_file: ./ethicalcheck-results.sarif + - name: SecureStack All-In-One GitHub Action + # You may pin to the exact commit or the version. + # uses: SecureStackCo/actions-all-in-one@96dc79a3c4081a8333040c6bf84b0c528ccb1eb9 + uses: SecureStackCo/actions-all-in-one@v0.1.2 + with: + # SecureStack API key - generate an API key at https://app.securestack.com + securestack_api_key: + # SecureStack Application ID - can be retrieved by accessing required application at https://app.securestack.com + securestack_app_id: + # Severities lower than this value will be reported in the workflow console but will not cause an error for the action; value should be one of: critical | high | medium | low + severity: diff --git a/.github/workflows/fireperf-e2e.yml b/.github/workflows/fireperf-e2e.yml index 6ecab49b00e..401c8b13449 100644 --- a/.github/workflows/fireperf-e2e.yml +++ b/.github/workflows/fireperf-e2e.yml @@ -1,4 +1,4 @@ -name: FirePerf E2E Tests +run-name: FirePerf E2E Tests on: schedule: @@ -105,3 +105,44 @@ jobs: ~/.m2/repository/com/google/firebase/perf-plugin **/build/reports **/build/test-results + - name: Setup Java JDK + uses: actions/setup-java@v3.13.0 + runs-on: + # The Java version to set up. Takes a whole or semver Java version. See examples of supported syntax in README file + java-version: # optional + # The path to the `.java-version` file. See examples of supported syntax in README file + java-version-file: # optional + # Java distribution. See the list of supported distributions in README file + distribution: + # The package type (jdk, jre, jdk+fx, jre+fx) + java-package: # optional, default is jdk + # The architecture of the package (defaults to the action runner's architecture) + architecture: # optional + # Path to where the compressed JDK is located + jdkFile: # optional + # Set this option if you want the action to check for the latest available version that satisfies the version spec + check-latest: # optional + # ID of the distributionManagement repository in the pom.xml file. Default is `github` + server-id: # optional, default is github + # Environment variable name for the username for authentication to the Apache Maven repository. Default is $GITHUB_ACTOR + server-username: # optional, default is GITHUB_ACTOR + # Environment variable name for password or token for authentication to the Apache Maven repository. Default is $GITHUB_TOKEN + server-password: # optional, default is GITHUB_TOKEN + # Path to where the settings.xml file will be written. Default is ~/.m2. + settings-path: # optional + # Overwrite the settings.xml file if it exists. Default is "true". + overwrite-settings: # optional, default is true + # GPG private key to import. Default is empty string. + gpg-private-key: # optional + # Environment variable name for the GPG private key passphrase. Default is $GPG_PASSPHRASE. + gpg-passphrase: # optional + # Name of the build platform to cache dependencies. It can be "maven", "gradle" or "sbt". + cache: # optional + # Workaround to pass job status to post job step. This variable is not intended for manual setting + job-status: # optional, default is ${{ job.status }} + # The token used to authenticate when fetching version manifests hosted on github.com, such as for the Microsoft Build of OpenJDK. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting. + token: # optional, default is ${{ github.server_url == 'https://github.com' && github.token || '' }} + # Name of Maven Toolchain ID if the default name of "${distribution}_${java-version}" is not wanted. See examples of supported syntax in Advanced Usage file + mvn-toolchain-id: # optional + # Name of Maven Toolchain Vendor if the default name of "${distribution}" is not wanted. See examples of supported syntax in Advanced Usage file + mvn-toolchain-vendor: # optional diff --git a/.github/workflows/sessions-e2e.yml b/.github/workflows/sessions-e2e.yml index 9b48c7bc7c0..528cd8c27e7 100644 --- a/.github/workflows/sessions-e2e.yml +++ b/.github/workflows/sessions-e2e.yml @@ -39,4 +39,22 @@ jobs: env: FTL_RESULTS_BUCKET: fireescape run: | - ./gradlew :firebase-sessions:test-app:deviceCheck withErrorProne -PtargetBackend="prod" + gradlew/firebase-sessions:test-app:device Check with Error Prone -PtargetBackend="prod" + - name: Upload a Build Artifact + uses: actions/upload-artifact@v3.1.3 + with: + # Artifact name + name: # optional, default is artifact + # A file, directory or wildcard pattern that describes what to upload + path: + # The desired behavior if no files are found using the provided path. +Available Options: + warn: Output a warning but do not fail the action + error: Fail the action with an error message + ignore: Do not output any warnings or errors, the action does not fail + + if-no-files-found:# optional, default is warn + # Duration after which artifact will expire in days. 0 means using default retention. +Minimum 1 day. Maximum 90 days unless changed from the repository settings page. + + retention-days: # optional diff --git a/.github/workflows/synopsys-io.yml b/.github/workflows/synopsys-io.yml new file mode 100644 index 00000000000..a7743efc231 --- /dev/null +++ b/.github/workflows/synopsys-io.yml @@ -0,0 +1,92 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: Synopsys Intelligent Security Scan + +on: + push: + branches: [ "master" ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "master" ] + schedule: + - cron: '27 8 * * 6' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Synopsys Intelligent Security Scan + id: prescription + uses: synopsys-sig/intelligent-security-scan@48eedfcd42bc342a294dc495ac452797b2d9ff08 + with: + ioServerUrl: ${{secrets.IO_SERVER_URL}} + ioServerToken: ${{secrets.IO_SERVER_TOKEN}} + workflowServerUrl: ${{secrets.WORKFLOW_SERVER_URL}} + additionalWorkflowArgs: --polaris.url=${{secrets.POLARIS_SERVER_URL}} --polaris.token=${{secrets.POLARIS_ACCESS_TOKEN}} + stage: "IO" + + # Please note that the ID in previous step was set to prescription + # in order for this logic to work also make sure that POLARIS_ACCESS_TOKEN + # is defined in settings + - name: Static Analysis with Polaris + if: ${{steps.prescription.outputs.sastScan == 'true' }} + run: | + export POLARIS_SERVER_URL=${{ secrets.POLARIS_SERVER_URL}} + export POLARIS_ACCESS_TOKEN=${{ secrets.POLARIS_ACCESS_TOKEN}} + wget -q ${{ secrets.POLARIS_SERVER_URL}}/api/tools/polaris_cli-linux64.zip + unzip -j polaris_cli-linux64.zip -d /tmp + /tmp/polaris analyze -w + + # Please note that the ID in previous step was set to prescription + # in order for this logic to work + - name: Software Composition Analysis with Black Duck + if: ${{steps.prescription.outputs.scaScan == 'true' }} + uses: blackducksoftware/github-action@9ea442b34409737f64743781e9adc71fd8e17d38 + with: + args: '--blackduck.url="${{ secrets.BLACKDUCK_URL}}" --blackduck.api.token="${{ secrets.BLACKDUCK_TOKEN}}" --detect.tools="SIGNATURE_SCAN,DETECTOR"' + + - name: Synopsys Intelligent Security Scan + if: ${{ steps.prescription.outputs.sastScan == 'true' || steps.prescription.outputs.scaScan == 'true' }} + uses: synopsys-sig/intelligent-security-scan@48eedfcd42bc342a294dc495ac452797b2d9ff08 + with: + ioServerUrl: ${{secrets.IO_SERVER_URL}} + ioServerToken: ${{secrets.IO_SERVER_TOKEN}} + workflowServerUrl: ${{secrets.WORKFLOW_SERVER_URL}} + additionalWorkflowArgs: --IS_SAST_ENABLED=${{steps.prescription.outputs.sastScan}} --IS_SCA_ENABLED=${{steps.prescription.outputs.scaScan}} + --polaris.project.name={{PROJECT_NAME}} --polaris.url=${{secrets.POLARIS_SERVER_URL}} --polaris.token=${{secrets.POLARIS_ACCESS_TOKEN}} + --blackduck.project.name={{PROJECT_NAME}}:{{PROJECT_VERSION}} --blackduck.url=${{secrets.BLACKDUCK_URL}} --blackduck.api.token=${{secrets.BLACKDUCK_TOKEN}} + stage: "WORKFLOW" + + - name: Upload SARIF file + if: ${{steps.prescription.outputs.sastScan == 'true' }} + uses: github/codeql-action/upload-sarif@v2 + with: + # Path to SARIF file relative to the root of the repository + sarif_file: workflowengine-results.sarif.json + - name: DeepSource Test Coverage Action + # You may pin to the exact commit or the version. + # uses: DeepSourceCorp/test-coverage-action@5e821bd966af3428d1aec7e611b611370c477c45 + uses: DeepSourceCorp/test-coverage-action@v1.1.0 + with: + # Programming language shortcode for which coverage is reported. Allowed values are — python, go, javascript, ruby, java, kotlin, scala, php, csharp, cxx, rust, swift + key: + # Path to the coverage data file. e.g. ./coverage.xml + coverage-file: + # DeepSource DSN of this repository. It is available under Settings → Reporting tab of the repository page on DeepSource. + dsn: + # Should the CI build fail if there is an error while uploading the report to DeepSource? Allowed values are — true, false + fail-ci-on-error: # optional + # HEAD commit for which the Test Coverage report is being sent + commit-sha: # optional, default is ${{ github.event.pull_request.head.sha }} diff --git a/.whitesource b/.whitesource new file mode 100644 index 00000000000..9c7ae90b4ec --- /dev/null +++ b/.whitesource @@ -0,0 +1,14 @@ +{ + "scanSettings": { + "baseBranches": [] + }, + "checkRunSettings": { + "vulnerableCheckRunConclusionLevel": "failure", + "displayMode": "diff", + "useMendCheckNames": true + }, + "issueSettings": { + "minSeverityLevel": "LOW", + "issueType": "DEPENDENCY" + } +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e0360670700..0d75ad85848 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,4 +30,4 @@ This project follows ## Contributor Documentation To know more about how to setup your environment, how Firebase internals work, and -best practices, take a look at our detailed [contributor documentation](https://firebase.github.io/firebase-android-sdk/). \ No newline at end of file +best practices, take a look at our detailed [contributor documentation](https://firebase.github.io/firebase-android-sdk/). diff --git a/README.md b/README.md index a75583f84bf..3789071f94f 100644 --- a/README.md +++ b/README.md @@ -4,34 +4,33 @@ This repository contains a subset of the Firebase Android SDK source. It currently includes the following Firebase libraries, and some of their dependencies: - * `firebase-abt` - * `firebase-appdistribution` - * `firebase-common` - * `firebase-common-ktx` - * `firebase-crashlytics` - * `firebase-crashlytics-ktx` - * `firebase-crashlytics-ndk` - * `firebase-database` - * `firebase-database-ktx` - * `firebase-database-collection` - * `firebase-datatransport` - * `firebase-firestore` - * `firebase-firestore-ktx` - * `firebase-functions` - * `firebase-functions-ktx` - * `firebase-inappmessaging` - * `firebase-inappmessaging-ktx` - * `firebase-inappmessaging-display` - * `firebase-inappmessaging-display-ktx` - * `firebase-messaging` - * `firebase-messaging-directboot` - * `firebase-perf` - * `firebase-perf-ktx` - * `firebase-remote-config` - * `firebase-remote-config-ktx` - * `firebase-storage` - * `firebase-storage-ktx` - +- `firebase-abt` +- `firebase-appdistribution` +- `firebase-common` +- `firebase-common-ktx` +- `firebase-crashlytics` +- `firebase-crashlytics-ktx` +- `firebase-crashlytics-ndk` +- `firebase-database` +- `firebase-database-ktx` +- `firebase-database-collection` +- `firebase-datatransport` +- `firebase-firestore` +- `firebase-firestore-ktx` +- `firebase-functions` +- `firebase-functions-ktx` +- `firebase-inappmessaging` +- `firebase-inappmessaging-ktx` +- `firebase-inappmessaging-display` +- `firebase-inappmessaging-display-ktx` +- `firebase-messaging` +- `firebase-messaging-directboot` +- `firebase-perf` +- `firebase-perf-ktx` +- `firebase-remote-config` +- `firebase-remote-config-ktx` +- `firebase-storage` +- `firebase-storage-ktx` Firebase is an app development platform with tools to help you build, grow and monetize your app. More information about Firebase can be found at @@ -46,9 +45,9 @@ https://firebase.google.com. 1. [Proguarding](#proguarding) 1. [APIs used via reflection](#APIs-used-via-reflection) 1. [APIs intended for developer - consumption](#APIs-intended-for-developer-consumption) + consumption](#APIs-intended-for-developer-consumption) 1. [APIs intended for other Firebase - SDKs](#APIs-intended-for-other-firebase-sdks) + SDKs](#APIs-intended-for-other-firebase-sdks) 1. [Publishing](#publishing) 1. [Dependencies](#dependencies) 1. [Commands](#commands) @@ -57,15 +56,15 @@ https://firebase.google.com. ## Getting Started -* Install the latest Android Studio (should be 3.0.1 or later) -* Clone the repo (`git clone --recurse-submodules git@github.com:firebase/firebase-android-sdk.git`) - * When cloning the repo, it is important to get the submodules as well. If +- Install the latest Android Studio (should be 3.0.1 or later) +- Clone the repo (`git clone --recurse-submodules git@github.com:firebase/firebase-android-sdk.git`) + - When cloning the repo, it is important to get the submodules as well. If you have already cloned the repo without the submodules, you can update the submodules by running `git submodule update --init --recursive`. -* Import the firebase-android-sdk gradle project into Android Studio using the +- Import the firebase-android-sdk gradle project into Android Studio using the **Import project(Gradle, Eclipse ADT, etc.)** option. -* `firebase-crashlytics-ndk` must be built with NDK 21. See - [firebase-crashlytics-ndk](firebase-crashlytics-ndk/README.md) for more +- `firebase-crashlytics-ndk` must be built with NDK 21. See + [firebase-crashlytics-ndk](firebase-crashlytics-ndk/README.md) for more details. ## Testing @@ -89,6 +88,7 @@ where all final modifiers have been stripped off. This lets us sandbox behaviors at desired places and use popular mocking libraries. Unit tests can be executed on the command line by running + ```bash ./gradlew ::check ``` @@ -115,16 +115,17 @@ separate from any production data you have because our tests write random data. If you don't have a suitable testing project already: - * Open the [Firebase console](https://console.firebase.google.com/) - * If you don't yet have a project you want to use for testing, create one. - * Add an Android app to the project - * Give the app any package name you like. - * Download the resulting `google-services.json` file and put it in the root of - your checkout. +- Open the [Firebase console](https://console.firebase.google.com/) +- If you don't yet have a project you want to use for testing, create one. +- Add an Android app to the project +- Give the app any package name you like. +- Download the resulting `google-services.json` file and put it in the root of + your checkout. #### Running Integration Tests on Local Emulator Integration tests can be executed on the command line by running + ```bash ./gradlew ::connectedCheck ``` @@ -133,11 +134,12 @@ Integration tests can be executed on the command line by running > You need additional setup for this to work: > -> * `gcloud` needs to be [installed](https://cloud.google.com/sdk/install) on local machine -> * `gcloud` needs to be configured with a project that has billing enabled -> * `gcloud` needs to be authenticated with credentials that have 'Firebase Test Lab Admin' role +> - `gcloud` needs to be [installed](https://cloud.google.com/sdk/install) on local machine +> - `gcloud` needs to be configured with a project that has billing enabled +> - `gcloud` needs to be authenticated with credentials that have 'Firebase Test Lab Admin' role Integration tests can be executed on the command line by running + ```bash ./gradlew ::deviceCheck ``` @@ -167,29 +169,28 @@ APIs that need to be preserved up until the app's runtime can be annotated with [@Keep](https://developer.android.com/reference/android/support/annotation/Keep). The [@Keep](https://developer.android.com/reference/android/support/annotation/Keep) -annotation is *blessed* to be honored by android's [default proguard -configuration](https://developer.android.com/studio/write/annotations#keep). A common use for +annotation is _blessed_ to be honored by android's [default proguard +configuration](https://developer.android.com/studio/write/annotations#keep). A common use for this annotation is because of reflection. These APIs should be generally **discouraged**, because they can't be proguarded. ### @KeepForSdk APIs that are intended to be used by Firebase SDKs should be annotated with -`@KeepForSdk`. The key benefit here is that the annotation is *blessed* to throw +`@KeepForSdk`. The key benefit here is that the annotation is _blessed_ to throw linter errors on Android Studio if used by the developer from a non firebase package, thereby providing a valuable guard rail. - ### @PublicApi We annotate APIs that meant to be used by developers with -[@PublicAPI](firebase-common/src/main/java/com/google/firebase/annotations/PublicApi.java). This +[@PublicAPI](firebase-common/src/main/java/com/google/firebase/annotations/PublicApi.java). This annotation will be used by tooling to help inform the version bump (major, minor, patch) that is required for the next release. ## Proguarding -Firebase SDKs do not proguard themselves, but support proguarding. Firebase SDKs themselves are +Firebase SDKs do not proguard themselves, but support proguarding. Firebase SDKs themselves are proguard friendly, but the dependencies of Firebase SDKs may not be. ### Proguard config @@ -260,6 +261,7 @@ The plugin is disabled by default, but the repo contains configuration informati and links to additional plugins. To run formatting on your entire project you can run + ```bash ./gradlew ::googleJavaFormat ``` @@ -272,6 +274,7 @@ this formatting in Android Studio by downloading and installing the Enable the plugin in Preferences | Editor | ktfmt Settings. and set code style to Google (internal). To run formatting on your entire project you can run + ```bash ./gradlew ::ktfmtFormat ``` diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000000..034e8480320 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,21 @@ +# Security Policy + +## Supported Versions + +Use this section to tell people about which versions of your project are +currently being supported with security updates. + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +Use this section to tell people how to report a vulnerability. + +Tell them where to go, how often they can expect to get an update on a +reported vulnerability, what to expect if the vulnerability is accepted or +declined, etc. diff --git a/appcheck/firebase-appcheck-debug-testing/CHANGELOG.md b/appcheck/firebase-appcheck-debug-testing/CHANGELOG.md index 64cdaf080e2..b050bdce0ad 100644 --- a/appcheck/firebase-appcheck-debug-testing/CHANGELOG.md +++ b/appcheck/firebase-appcheck-debug-testing/CHANGELOG.md @@ -1,52 +1,63 @@ # Unreleased # 17.0.0 -* [unchanged] Updated to keep [app_check] SDK versions aligned. + +- [unchanged] Updated to keep [app_check] SDK versions aligned. # 16.1.2 -* [unchanged] Updated to keep [app_check] SDK versions aligned. + +- [unchanged] Updated to keep [app_check] SDK versions aligned. # 16.1.1 -* [changed] Integrated the [app_check] Debug Testing SDK with Firebase + +- [changed] Integrated the [app_check] Debug Testing SDK with Firebase components. (GitHub [#4436](//github.com/firebase/firebase-android-sdk/issues/4436){: .external}) # 16.1.0 -* [unchanged] Updated to accommodate the release of the updated + +- [unchanged] Updated to accommodate the release of the updated [app_check] Kotlin extensions library. # 16.0.1 -* [changed] Updated dependency of `play-services-basement` to its latest + +- [changed] Updated dependency of `play-services-basement` to its latest version (v18.1.0). # 16.0.0 -* [changed] [app_check] has exited beta and is now generally available for + +- [changed] [app_check] has exited beta and is now generally available for use. # 16.0.0-beta06 -* [fixed] Fixed a bug in the [app_check] token refresh flow when using a + +- [fixed] Fixed a bug in the [app_check] token refresh flow when using a custom provider. # 16.0.0-beta05 -* [changed] Internal improvements. + +- [changed] Internal improvements. # 16.0.0-beta04 -* [changed] Improved error handling logic by minimizing the amount of requests + +- [changed] Improved error handling logic by minimizing the amount of requests that are unlikely to succeed. -* [fixed] Fixed heartbeat reporting. +- [fixed] Fixed heartbeat reporting. # 16.0.0-beta03 -* [changed] Added `X-Android-Package` and `X-Android-Cert` request headers to + +- [changed] Added `X-Android-Package` and `X-Android-Cert` request headers to [app_check] network calls. # 16.0.0-beta02 -* [feature] Added [`getAppCheckToken()`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck#getAppCheckToken(boolean)), + +- [feature] Added [`getAppCheckToken()`](), [`AppCheckTokenListener`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck.AppCheckListener), and associated setters and removers for developers to request and observe changes to the [app_check] token. # 16.0.0-beta01 -* [feature] Initial beta release of the [app_check] Debug Testing SDK with - abuse reduction features. +- [feature] Initial beta release of the [app_check] Debug Testing SDK with + abuse reduction features. diff --git a/appcheck/firebase-appcheck-debug/CHANGELOG.md b/appcheck/firebase-appcheck-debug/CHANGELOG.md index fdb4daed95c..d4c9a7d7494 100644 --- a/appcheck/firebase-appcheck-debug/CHANGELOG.md +++ b/appcheck/firebase-appcheck-debug/CHANGELOG.md @@ -1,59 +1,70 @@ # Unreleased # 17.0.0 -* [unchanged] Updated to keep [app_check] SDK versions aligned. + +- [unchanged] Updated to keep [app_check] SDK versions aligned. # 16.1.2 -* [unchanged] Updated to keep [app_check] SDK versions aligned. + +- [unchanged] Updated to keep [app_check] SDK versions aligned. # 16.1.1 -* [changed] Migrated [app_check] SDKs to use standard Firebase executors. + +- [changed] Migrated [app_check] SDKs to use standard Firebase executors. (GitHub [#4431](//github.com/firebase/firebase-android-sdk/issues/4431){: .external} and [#4449](//github.com/firebase/firebase-android-sdk/issues/4449){: .external}) -* [changed] Integrated the [app_check] Debug SDK with Firebase components. +- [changed] Integrated the [app_check] Debug SDK with Firebase components. (GitHub [#4436](//github.com/firebase/firebase-android-sdk/issues/4436){: .external}) -* [changed] Moved Task continuations off the main thread. +- [changed] Moved Task continuations off the main thread. (GitHub [#4453](//github.com/firebase/firebase-android-sdk/issues/4453){: .external}) # 16.1.0 -* [unchanged] Updated to accommodate the release of the updated + +- [unchanged] Updated to accommodate the release of the updated [app_check] Kotlin extensions library. # 16.0.1 -* [changed] Updated dependency of `play-services-basement` to its latest + +- [changed] Updated dependency of `play-services-basement` to its latest version (v18.1.0). # 16.0.0 -* [changed] [app_check] has exited beta and is now generally available for + +- [changed] [app_check] has exited beta and is now generally available for use. # 16.0.0-beta06 -* [fixed] Fixed a bug in the [app_check] token refresh flow when using a + +- [fixed] Fixed a bug in the [app_check] token refresh flow when using a custom provider. # 16.0.0-beta05 -* [changed] Internal improvements. + +- [changed] Internal improvements. # 16.0.0-beta04 -* [changed] Improved error handling logic by minimizing the amount of requests + +- [changed] Improved error handling logic by minimizing the amount of requests that are unlikely to succeed. -* [fixed] Fixed heartbeat reporting. +- [fixed] Fixed heartbeat reporting. # 16.0.0-beta03 -* [changed] Added `X-Android-Package` and `X-Android-Cert` request headers to + +- [changed] Added `X-Android-Package` and `X-Android-Cert` request headers to [app_check] network calls. # 16.0.0-beta02 -* [feature] Added [`getAppCheckToken()`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck#getAppCheckToken(boolean)), + +- [feature] Added [`getAppCheckToken()`](), [`AppCheckTokenListener`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck.AppCheckListener), and associated setters and removers for developers to request and observe changes to the [app_check] token. # 16.0.0-beta01 -* [feature] Initial beta release of the [app_check] Debug SDK with abuse - reduction features. +- [feature] Initial beta release of the [app_check] Debug SDK with abuse + reduction features. diff --git a/appcheck/firebase-appcheck-interop/CHANGELOG.md b/appcheck/firebase-appcheck-interop/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/appcheck/firebase-appcheck-interop/CHANGELOG.md +++ b/appcheck/firebase-appcheck-interop/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/appcheck/firebase-appcheck-playintegrity/CHANGELOG.md b/appcheck/firebase-appcheck-playintegrity/CHANGELOG.md index f31fbe78a2b..f7bce3ed96d 100644 --- a/appcheck/firebase-appcheck-playintegrity/CHANGELOG.md +++ b/appcheck/firebase-appcheck-playintegrity/CHANGELOG.md @@ -1,35 +1,39 @@ # Unreleased - # 17.0.0 -* [unchanged] Updated to keep [app_check] SDK versions aligned. + +- [unchanged] Updated to keep [app_check] SDK versions aligned. # 16.1.2 -* [unchanged] Updated to keep [app_check] SDK versions aligned. + +- [unchanged] Updated to keep [app_check] SDK versions aligned. # 16.1.1 -* [changed] Migrated [app_check] SDKs to use standard Firebase executors. + +- [changed] Migrated [app_check] SDKs to use standard Firebase executors. (GitHub [#4431](//github.com/firebase/firebase-android-sdk/issues/4431){: .external} and [#4449](//github.com/firebase/firebase-android-sdk/issues/4449){: .external}) -* [changed] Integrated the [app_check] Play integrity SDK with Firebase +- [changed] Integrated the [app_check] Play integrity SDK with Firebase components. (GitHub [#4436](//github.com/firebase/firebase-android-sdk/issues/4436){: .external}) -* [changed] Moved Task continuations off the main thread. +- [changed] Moved Task continuations off the main thread. (GitHub [#4453](//github.com/firebase/firebase-android-sdk/issues/4453){: .external}) # 16.1.0 -* [unchanged] Updated to accommodate the release of the updated + +- [unchanged] Updated to accommodate the release of the updated [app_check] Kotlin extensions library. # 16.0.1 -* [changed] Updated dependency of `play-services-basement` to its latest + +- [changed] Updated dependency of `play-services-basement` to its latest version (v18.1.0). - + # 16.0.0 -* [feature] Added support for + +- [feature] Added support for [Play Integrity](https://developer.android.com/google/play/integrity) as an attestation provider. - diff --git a/appcheck/firebase-appcheck-safetynet/CHANGELOG.md b/appcheck/firebase-appcheck-safetynet/CHANGELOG.md index 3529c6bfb4a..7ed954743ae 100644 --- a/appcheck/firebase-appcheck-safetynet/CHANGELOG.md +++ b/appcheck/firebase-appcheck-safetynet/CHANGELOG.md @@ -1,49 +1,59 @@ # Unreleased # 16.1.2 -* [deprecated] Added deprecation tagging to the `SafetyNetAppCheckProviderFactory` class. (#4686) + +- [deprecated] Added deprecation tagging to the `SafetyNetAppCheckProviderFactory` class. (#4686) # 16.1.1 -* [changed] Migrated [app_check] SDKs to use standard Firebase executors. (#4431, #4449) -* [changed] Integrated the [app_check] SafetyNet SDK with Firebase Components. (#4436) -* [changed] Moved Task continuations off the main thread. (#4453) + +- [changed] Migrated [app_check] SDKs to use standard Firebase executors. (#4431, #4449) +- [changed] Integrated the [app_check] SafetyNet SDK with Firebase Components. (#4436) +- [changed] Moved Task continuations off the main thread. (#4453) # 16.1.0 -* [unchanged] Updated to accommodate the release of the updated + +- [unchanged] Updated to accommodate the release of the updated [app_check] Kotlin extensions library. # 16.0.1 -* [changed] Updated dependency of `play-services-basement` to its latest + +- [changed] Updated dependency of `play-services-basement` to its latest version (v18.1.0). # 16.0.0 -* [changed] [app_check] has exited beta and is now generally available for + +- [changed] [app_check] has exited beta and is now generally available for use. # 16.0.0-beta06 -* [fixed] Fixed a bug in the [app_check] token refresh flow when using a + +- [fixed] Fixed a bug in the [app_check] token refresh flow when using a custom provider. # 16.0.0-beta05 -* [changed] Internal improvements. + +- [changed] Internal improvements. # 16.0.0-beta04 -* [changed] Improved error handling logic by minimizing the amount of requests + +- [changed] Improved error handling logic by minimizing the amount of requests that are unlikely to succeed. -* [fixed] Fixed heartbeat reporting. +- [fixed] Fixed heartbeat reporting. # 16.0.0-beta03 -* [changed] Added `X-Android-Package` and `X-Android-Cert` request headers to + +- [changed] Added `X-Android-Package` and `X-Android-Cert` request headers to [app_check] network calls. # 16.0.0-beta02 -* [feature] Added [`getAppCheckToken()`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck#getAppCheckToken(boolean)), + +- [feature] Added [`getAppCheckToken()`](), [`AppCheckTokenListener`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck.AppCheckListener), and associated setters and removers for developers to request and observe changes to the [app_check] token. # 16.0.0-beta01 -* [feature] Initial beta release of the [app_check] SafetyNet SDK with abuse - reduction features. +- [feature] Initial beta release of the [app_check] SafetyNet SDK with abuse + reduction features. diff --git a/appcheck/firebase-appcheck/CHANGELOG.md b/appcheck/firebase-appcheck/CHANGELOG.md index 5d953309d9d..35c4e71c41e 100644 --- a/appcheck/firebase-appcheck/CHANGELOG.md +++ b/appcheck/firebase-appcheck/CHANGELOG.md @@ -1,53 +1,58 @@ # Unreleased # 17.0.1 -* [changed] Internal updates to allow Firebase SDKs to obtain limited-use tokens. + +- [changed] Internal updates to allow Firebase SDKs to obtain limited-use tokens. # 17.0.0 -* [feature] Added [`getLimitedUseAppCheckToken()`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck#getLimitedUseAppCheckToken()) - for obtaining limited-use tokens for protecting non-Firebase backends. +- [feature] Added [`getLimitedUseAppCheckToken()`]() + for obtaining limited-use tokens for protecting non-Firebase backends. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appcheck` library. The Kotlin extensions library has no additional updates. # 16.1.2 -* [unchanged] Updated to keep [app_check] SDK versions aligned. +- [unchanged] Updated to keep [app_check] SDK versions aligned. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appcheck` library. The Kotlin extensions library has no additional updates. # 16.1.1 -* [changed] Migrated [app_check] SDKs to use standard Firebase executors. + +- [changed] Migrated [app_check] SDKs to use standard Firebase executors. (GitHub [#4431](//github.com/firebase/firebase-android-sdk/issues/4431){: .external} and [#4449](//github.com/firebase/firebase-android-sdk/issues/4449){: .external}) -* [changed] Moved Task continuations off the main thread. +- [changed] Moved Task continuations off the main thread. (GitHub [#4453](//github.com/firebase/firebase-android-sdk/issues/4453){: .external}) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appcheck` library. The Kotlin extensions library has no additional updates. # 16.1.0 -* [unchanged] Updated to accommodate the release of the updated - [app_check] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [app_check] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appcheck` library. The Kotlin extensions library has the following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-appcheck-ktx` as a transitive dependency, which exposes the @@ -56,41 +61,48 @@ additional updates: coroutine. # 16.0.1 -* [changed] Updated dependency of `play-services-basement` to its latest + +- [changed] Updated dependency of `play-services-basement` to its latest version (v18.1.0). # 16.0.0 -* [changed] [app_check] has exited beta and is now generally available for + +- [changed] [app_check] has exited beta and is now generally available for use. -* [feature] Added support for +- [feature] Added support for [Play Integrity](https://developer.android.com/google/play/integrity) as an attestation provider. # 16.0.0-beta06 -* [fixed] Fixed a bug in the [app_check] token refresh flow when using a + +- [fixed] Fixed a bug in the [app_check] token refresh flow when using a custom provider. # 16.0.0-beta05 -* [changed] Internal improvements. + +- [changed] Internal improvements. # 16.0.0-beta04 -* [changed] Improved error handling logic by minimizing the amount of requests + +- [changed] Improved error handling logic by minimizing the amount of requests that are unlikely to succeed. -* [fixed] Fixed heartbeat reporting. +- [fixed] Fixed heartbeat reporting. # 16.0.0-beta03 -* [changed] Added `X-Android-Package` and `X-Android-Cert` request headers to + +- [changed] Added `X-Android-Package` and `X-Android-Cert` request headers to [app_check] network calls. # 16.0.0-beta02 -* [feature] Added [`getAppCheckToken()`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck#getAppCheckToken(boolean)), + +- [feature] Added [`getAppCheckToken()`](), [`AppCheckTokenListener`](/docs/reference/android/com/google/firebase/appcheck/FirebaseAppCheck.AppCheckListener), and associated setters and removers for developers to request and observe changes to the [app_check] token. # 16.0.0-beta01 -* [feature] Initial beta release of the [app_check] SDK with abuse reduction - features. +- [feature] Initial beta release of the [app_check] SDK with abuse reduction + features. diff --git a/build.gradle b/build.gradle index 5b4a27741e9..dfb81769239 100644 --- a/build.gradle +++ b/build.gradle @@ -33,10 +33,10 @@ buildscript { } dependencies { - classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.2' - classpath 'net.ltgt.gradle:gradle-errorprone-plugin:1.3.0' + classpath 'com.google.protobuf:protobuf-gradle-plugin:0.9.4' + classpath 'net.ltgt.gradle:gradle-errorprone-plugin:3.1.0' classpath 'gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.9' - classpath 'com.google.gms:google-services:4.3.15' + classpath 'com.google.gms:google-services:4.4.0' classpath "com.ncorti.ktfmt.gradle:plugin:0.11.0" classpath 'com.google.firebase:firebase-appdistribution-gradle:3.0.2' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.5' diff --git a/buildSrc/README.md b/buildSrc/README.md index 126208a2d88..30119a092da 100644 --- a/buildSrc/README.md +++ b/buildSrc/README.md @@ -7,5 +7,4 @@ currently documented systems below: [Dackka Plugin](src/main/java/com/google/firebase/gradle/plugins/DackkaPlugin.kt) - -* Note that this file currently only serves as a table of contents until sufficient documentation has been created. \ No newline at end of file +- Note that this file currently only serves as a table of contents until sufficient documentation has been created. diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 0695e90f00d..f11bb43b069 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -65,7 +65,7 @@ dependencies { implementation(libs.kotlinx.serialization.json) implementation("com.google.code.gson:gson:2.8.9") - implementation("com.android.tools.build:gradle:7.4.2") + implementation("com.android.tools.build:gradle:8.1.1") implementation("com.android.tools.build:builder-test-api:7.4.2") implementation("gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.9") diff --git a/buildSrc/src/test/resources/BasicProject/firebase-storage/CHANGELOG.md b/buildSrc/src/test/resources/BasicProject/firebase-storage/CHANGELOG.md index 8b72642125d..8111907280d 100644 --- a/buildSrc/src/test/resources/BasicProject/firebase-storage/CHANGELOG.md +++ b/buildSrc/src/test/resources/BasicProject/firebase-storage/CHANGELOG.md @@ -1,9 +1,10 @@ # Unreleased + Note: We did some super cool stuff here! -* [feature] Added support for disjunctions in queries (`OR` queries). +- [feature] Added support for disjunctions in queries (`OR` queries). -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-firestore-ktx` as a transitive dependency, which exposes the @@ -11,42 +12,43 @@ Note: We did some super cool stuff here! [`Task`](https://developers.google.com/android/guides/tasks) into a Kotlin coroutine. -* [fixed] An issue on GitHub [#123](//github.com/firebase/firebase-android-sdk/issues/number) +- [fixed] An issue on GitHub [#123](//github.com/firebase/firebase-android-sdk/issues/number) -* [removed] Removed some old stuff (#562) +- [removed] Removed some old stuff (#562) -* [feature] Added this thing we wanted +- [feature] Added this thing we wanted [#444](//github.com/firebase/firebase-android-sdk/issues/number){: .external} -* [feature] Added +- [feature] Added [`Query.snapshots()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#snapshots_1) and [`DocumentReference.snapshots()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#snapshots) Kotlin Flows to listen for realtime updates. -* [fixed] Fixed an issue in `waitForPendingWrites()` that could lead to a +- [fixed] Fixed an issue in `waitForPendingWrites()` that could lead to a `NullPointerException`. -* [feature] Added - [`Query.whereNotIn()`](/docs/reference/android/com/google/firebase/firestore/Query#whereNotIn(java.lang.String,%20java.util.List)) +- [feature] Added + [`Query.whereNotIn()`](>) and - [`Query.whereNotEqualTo()`](/docs/reference/android/com/google/firebase/firestore/Query#whereNotEqualTo(java.lang.String,%20java.lang.Object)) + [`Query.whereNotEqualTo()`]() query operators. - * `Query.whereNotIn()` finds documents where a specified field's value is + - `Query.whereNotIn()` finds documents where a specified field's value is not in a specified array. - * `Query.whereNotEqualTo()` finds documents where a specified field's value + - `Query.whereNotEqualTo()` finds documents where a specified field's value does not equal the specified value. Neither query operator finds documents where the specified field isn't present. -* [unchanged] Idk ig we did some stuff +- [unchanged] Idk ig we did some stuff -* [removed] some stuff that we didn't really like got removed +- [removed] some stuff that we didn't really like got removed ## Kotlin -* [feature] Added + +- [feature] Added [`Query.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects) and [`DocumentReference.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects_1) @@ -54,10 +56,12 @@ Note: We did some super cool stuff here! specific type. # 24.5.0 -* [fixed] Fixed stack overflow caused by deeply nested server timestamps. + +- [fixed] Fixed stack overflow caused by deeply nested server timestamps. (GitHub [#4702](//github.com/firebase/firebase-android-sdk/issues/4702){: .external}) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional -updates. \ No newline at end of file +updates. diff --git a/buildSrc/src/test/resources/MakeReleaseNotes/release-notes.md b/buildSrc/src/test/resources/MakeReleaseNotes/release-notes.md index c6d5cd8ce09..2bc9129b0dc 100644 --- a/buildSrc/src/test/resources/MakeReleaseNotes/release-notes.md +++ b/buildSrc/src/test/resources/MakeReleaseNotes/release-notes.md @@ -2,9 +2,9 @@ Note: We did some super cool stuff here! -* {{feature}} Added support for disjunctions in queries (`OR` queries). +- {{feature}} Added support for disjunctions in queries (`OR` queries). -* {{feature}} Firebase now supports Kotlin coroutines. +- {{feature}} Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-firestore-ktx` as a transitive dependency, which exposes the @@ -12,45 +12,45 @@ Note: We did some super cool stuff here! [`Task`](https://developers.google.com/android/guides/tasks) into a Kotlin coroutine. -* {{fixed}} An issue on GitHub [#123](//github.com/firebase/firebase-android-sdk/issues/123){: .external} +- {{fixed}} An issue on GitHub [#123](//github.com/firebase/firebase-android-sdk/issues/123){: .external} -* {{removed}} Removed some old stuff GitHub [#562](//github.com/firebase/firebase-android-sdk/issues/562){: .external} +- {{removed}} Removed some old stuff GitHub [#562](//github.com/firebase/firebase-android-sdk/issues/562){: .external} -* {{feature}} Added this thing we wanted +- {{feature}} Added this thing we wanted GitHub [#444](//github.com/firebase/firebase-android-sdk/issues/444){: .external} -* {{feature}} Added +- {{feature}} Added [`Query.snapshots()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#snapshots_1) and [`DocumentReference.snapshots()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#snapshots) Kotlin Flows to listen for realtime updates. -* {{fixed}} Fixed an issue in `waitForPendingWrites()` that could lead to a +- {{fixed}} Fixed an issue in `waitForPendingWrites()` that could lead to a `NullPointerException`. -* {{feature}} Added - [`Query.whereNotIn()`](/docs/reference/android/com/google/firebase/firestore/Query#whereNotIn(java.lang.String,%20java.util.List)) +- {{feature}} Added + [`Query.whereNotIn()`](>) and - [`Query.whereNotEqualTo()`](/docs/reference/android/com/google/firebase/firestore/Query#whereNotEqualTo(java.lang.String,%20java.lang.Object)) + [`Query.whereNotEqualTo()`]() query operators. - * `Query.whereNotIn()` finds documents where a specified field's value is + - `Query.whereNotIn()` finds documents where a specified field's value is not in a specified array. - * `Query.whereNotEqualTo()` finds documents where a specified field's value + - `Query.whereNotEqualTo()` finds documents where a specified field's value does not equal the specified value. Neither query operator finds documents where the specified field isn't present. -* {{unchanged}} Idk ig we did some stuff +- {{unchanged}} Idk ig we did some stuff -* {{removed}} some stuff that we didn't really like got removed +- {{removed}} some stuff that we didn't really like got removed #### {{firebase_storage_full}} Kotlin extensions version 24.6.0 {: #storage-ktx_v24-6-0} -* {{feature}} Added +- {{feature}} Added [`Query.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects) and [`DocumentReference.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects_1) Kotlin Flows to listen for realtime updates and convert its values to a - specific type. \ No newline at end of file + specific type. diff --git a/buildSrc/src/test/resources/MoveUnreleasedChanges/basic.md b/buildSrc/src/test/resources/MoveUnreleasedChanges/basic.md index 7cc7a3d245b..332bede5bdc 100644 --- a/buildSrc/src/test/resources/MoveUnreleasedChanges/basic.md +++ b/buildSrc/src/test/resources/MoveUnreleasedChanges/basic.md @@ -1,37 +1,39 @@ # Unreleased + Note: We did some super cool stuff here! -* [feature] Added support for disjunctions in queries (`OR` queries). -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Added support for disjunctions in queries (`OR` queries). +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-firestore-ktx` as a transitive dependency, which exposes the `Task.await()` suspend function to convert a [`Task`](https://developers.google.com/android/guides/tasks) into a Kotlin coroutine. -* [fixed] An issue on GitHub [#123](//github.com/firebase/firebase-android-sdk/issues/number) -* [removed] Removed some old stuff (#562) -* [feature] Added this thing we wanted +- [fixed] An issue on GitHub [#123](//github.com/firebase/firebase-android-sdk/issues/number) +- [removed] Removed some old stuff (#562) +- [feature] Added this thing we wanted [#444](//github.com/firebase/firebase-android-sdk/issues/number){: .external} -* [feature] Added +- [feature] Added [`Query.snapshots()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#snapshots_1) and [`DocumentReference.snapshots()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#snapshots) Kotlin Flows to listen for realtime updates. -* [fixed] Fixed an issue in `waitForPendingWrites()` that could lead to a +- [fixed] Fixed an issue in `waitForPendingWrites()` that could lead to a `NullPointerException`. -* [feature] Added - [`Query.whereNotIn()`](/docs/reference/android/com/google/firebase/firestore/Query#whereNotIn(java.lang.String,%20java.util.List)) +- [feature] Added + [`Query.whereNotIn()`](>) and - [`Query.whereNotEqualTo()`](/docs/reference/android/com/google/firebase/firestore/Query#whereNotEqualTo(java.lang.String,%20java.lang.Object)) + [`Query.whereNotEqualTo()`]() query operators. - * `Query.whereNotIn()` finds documents where a specified field's value is - not in a specified array. - * `Query.whereNotEqualTo()` finds documents where a specified field's value - does not equal the specified value. + - `Query.whereNotIn()` finds documents where a specified field's value is + not in a specified array. + - `Query.whereNotEqualTo()` finds documents where a specified field's value + does not equal the specified value. Neither query operator finds documents where the specified field isn't present. -* [unchanged] Idk ig we did some stuff -* [removed] some stuff that we didn't really like got removed \ No newline at end of file + +- [unchanged] Idk ig we did some stuff +- [removed] some stuff that we didn't really like got removed diff --git a/ci/README.md b/ci/README.md index d1546d1ddbb..d0c2c79ca5e 100644 --- a/ci/README.md +++ b/ci/README.md @@ -14,6 +14,7 @@ This directory contains tooling used to run Continuous Integration tasks. source ~/.venvs/fireci/bin/activate ``` - At the root of the firebase sdk repo, run + ``` pip3 install -e ./ci/fireci/ ``` diff --git a/ci/workflow_summary/README.md b/ci/workflow_summary/README.md index c60558db9d2..56a6462e4ca 100644 --- a/ci/workflow_summary/README.md +++ b/ci/workflow_summary/README.md @@ -1,176 +1,180 @@ # `workflow_information.py` Script ## Prerequisites -- [Python](https://www.python.org/) and required packages. - ``` - pip install requests argparse - ``` + +- [Python](https://www.python.org/) and required packages. + ``` + pip install requests argparse + ``` ## Usage -- Collect last `90` days' `Postsubmit` `ci_workflow.yml` workflow runs: - ``` - python workflow_information.py --token ${your_github_toke} --branch master --event push --d 90 - ``` -- Collect last `30` days' `Presubmit` `ci_workflow.yml` workflow runs: - ``` - python workflow_information.py --token ${your_github_toke} --event pull_request --d 30 - ``` +- Collect last `90` days' `Postsubmit` `ci_workflow.yml` workflow runs: + + ``` + python workflow_information.py --token ${your_github_toke} --branch master --event push --d 90 + ``` + +- Collect last `30` days' `Presubmit` `ci_workflow.yml` workflow runs: -- Please refer to `Inputs` section for more use cases, and `Outputs` section for the workflow summary report format. + ``` + python workflow_information.py --token ${your_github_toke} --event pull_request --d 30 + ``` + +- Please refer to `Inputs` section for more use cases, and `Outputs` section for the workflow summary report format. ## Inputs -- `-o, --repo_owner`: **[Required]** GitHub repo owner, default value is `firebase`. -- `-n, --repo_name`: **[Required]** GitHub repo name, default value is `firebase-android-sdk`. +- `-o, --repo_owner`: **[Required]** GitHub repo owner, default value is `firebase`. -- `-t, --token`: **[Required]** GitHub access token. See [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). +- `-n, --repo_name`: **[Required]** GitHub repo name, default value is `firebase-android-sdk`. -- `-w, --workflow_name`: **[Required]** Workflow filename, default value is `ci_tests.yml`. +- `-t, --token`: **[Required]** GitHub access token. See [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). -- `-d, --days`: Filter workflows that running in past -d days, default value is `90`. See [retention period for GitHub Actions artifacts and logs](https://docs.github.com/en/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization). +- `-w, --workflow_name`: **[Required]** Workflow filename, default value is `ci_tests.yml`. -- `-b, --branch`: Filter branch name that workflows run against. +- `-d, --days`: Filter workflows that running in past -d days, default value is `90`. See [retention period for GitHub Actions artifacts and logs](https://docs.github.com/en/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization). -- `-a, --actor`: Filter the actor who triggers the workflow runs. +- `-b, --branch`: Filter branch name that workflows run against. -- `-e, --event`: Filter workflows trigger event, could be one of the following values `['push', 'pull_request', 'issue']`. +- `-a, --actor`: Filter the actor who triggers the workflow runs. -- `-j, --jobs`: Filter workflows jobs, default is `all` (including rerun jobs), could be one of the following values `['latest', 'all']`. +- `-e, --event`: Filter workflows trigger event, could be one of the following values `['push', 'pull_request', 'issue']`. -- `-f, --folder`: Workflow and job information will be store here, default value is the current datatime. +- `-j, --jobs`: Filter workflows jobs, default is `all` (including rerun jobs), could be one of the following values `['latest', 'all']`. +- `-f, --folder`: Workflow and job information will be store here, default value is the current datatime. ## Outputs -- `workflow_summary_report.txt`: a general report contains workflow pass/failure count, running time, etc. - - ``` - 2023-03-03 01:37:07.114500 - Namespace(actor=None, branch=None, days=30, event='pull_request', folder='presubmit_30', jobs='all', repo_name='firebase-android-sdk', repo_owner='firebase', token=${your_github_token}, workflow_name='ci_tests.yml') - - Workflow 'ci_tests.yml' Report: - Workflow Failure Rate:64.77% - Workflow Total Count: 193 (success: 68, failure: 125) - - Workflow Runtime Report: - 161 workflow runs finished without rerun, the average running time: 0:27:24.745342 - Including: - 56 passed workflow runs, with average running time: 0:17:29.214286 - 105 failed workflow runs, with average running time: 0:32:42.361905 - - 32 runs finished with rerun, the average running time: 1 day, 3:57:53.937500 - The running time for each workflow reruns are: - ['1 day, 2:24:32', '3:35:54', '3:19:14', '4 days, 6:10:50', '15:33:39', '1:57:21', '1:13:12', '1:55:18', '12 days, 21:51:29', '0:48:48', '0:45:28', '1:40:21', '2 days, 1:46:35', '19:47:16', '0:45:49', '2:22:36', '0:25:22', '0:55:30', '1:40:32', '1:10:05', '20:08:38', '0:31:03', '5 days, 9:19:25', '5:10:44', '1:20:57', '0:28:47', '1:52:44', '20:19:17', '0:35:15', '21:31:07', '3 days, 1:06:44', '3 days, 2:18:14'] - - Job Failure Report: - Unit Tests (:firebase-storage): - Failure Rate:54.61% - Total Count: 152 (success: 69, failure: 83) - Unit Tests (:firebase-messaging): - Failure Rate:35.37% - Total Count: 147 (success: 95, failure: 52) - ``` - - -- Intermediate file `workflow_summary.json`: contains all the workflow runs and job information attached to each workflow. - - ``` - { - 'workflow_name':'ci_tests.yml', - 'total_count':81, - 'success_count':32, - 'failure_count':49, - 'created':'>2022-11-30T23:15:04Z', - 'workflow_runs':[ +- `workflow_summary_report.txt`: a general report contains workflow pass/failure count, running time, etc. + + ``` + 2023-03-03 01:37:07.114500 + Namespace(actor=None, branch=None, days=30, event='pull_request', folder='presubmit_30', jobs='all', repo_name='firebase-android-sdk', repo_owner='firebase', token=${your_github_token}, workflow_name='ci_tests.yml') + + Workflow 'ci_tests.yml' Report: + Workflow Failure Rate:64.77% + Workflow Total Count: 193 (success: 68, failure: 125) + + Workflow Runtime Report: + 161 workflow runs finished without rerun, the average running time: 0:27:24.745342 + Including: + 56 passed workflow runs, with average running time: 0:17:29.214286 + 105 failed workflow runs, with average running time: 0:32:42.361905 + + 32 runs finished with rerun, the average running time: 1 day, 3:57:53.937500 + The running time for each workflow reruns are: + ['1 day, 2:24:32', '3:35:54', '3:19:14', '4 days, 6:10:50', '15:33:39', '1:57:21', '1:13:12', '1:55:18', '12 days, 21:51:29', '0:48:48', '0:45:28', '1:40:21', '2 days, 1:46:35', '19:47:16', '0:45:49', '2:22:36', '0:25:22', '0:55:30', '1:40:32', '1:10:05', '20:08:38', '0:31:03', '5 days, 9:19:25', '5:10:44', '1:20:57', '0:28:47', '1:52:44', '20:19:17', '0:35:15', '21:31:07', '3 days, 1:06:44', '3 days, 2:18:14'] + + Job Failure Report: + Unit Tests (:firebase-storage): + Failure Rate:54.61% + Total Count: 152 (success: 69, failure: 83) + Unit Tests (:firebase-messaging): + Failure Rate:35.37% + Total Count: 147 (success: 95, failure: 52) + ``` + +- Intermediate file `workflow_summary.json`: contains all the workflow runs and job information attached to each workflow. + + ``` + { + 'workflow_name':'ci_tests.yml', + 'total_count':81, + 'success_count':32, + 'failure_count':49, + 'created':'>2022-11-30T23:15:04Z', + 'workflow_runs':[ + { + 'workflow_id':4296343867, + 'conclusion':'failure', + 'head_branch':'master', + 'actor':'vkryachko', + 'created_at':'2023-02-28T18:47:40Z', + 'updated_at':'2023-02-28T19:20:16Z', + 'run_started_at':'2023-02-28T18:47:40Z', + 'run_attempt':1, + 'html_url':'https://github.com/firebase/firebase-android-sdk/actions/runs/4296343867', + 'jobs_url':'https://api.github.com/repos/firebase/firebase-android-sdk/actions/runs/4296343867/jobs', + 'jobs':{ + 'total_count':95, + 'success_count':92, + 'failure_count':3, + 'job_runs':[ + { + 'job_id':11664775180, + 'job_name':'Determine changed modules', + 'conclusion':'success', + 'created_at':'2023-02-28T18:47:42Z', + 'started_at':'2023-02-28T18:47:50Z', + 'completed_at':'2023-02-28T18:50:11Z', + 'run_attempt': 1, + 'html_url':'https://github.com/firebase/firebase-android-sdk/actions/runs/4296343867/jobs/7487936863', + } + ] + } + } + ] + } + ``` + +- Intermediate file `job_summary.json`: contains all the job runs organized by job name. + ``` + { + 'Unit Test Results':{ # job name + 'total_count':17, + 'success_count':7, + 'failure_count':10, + 'failure_jobs':[ # data structure is the same as same as workflow_summary['workflow_runs']['job_runs'] { - 'workflow_id':4296343867, + 'job_id':11372664143, + 'job_name':'Unit Test Results', 'conclusion':'failure', - 'head_branch':'master', - 'actor':'vkryachko', - 'created_at':'2023-02-28T18:47:40Z', - 'updated_at':'2023-02-28T19:20:16Z', - 'run_started_at':'2023-02-28T18:47:40Z', - 'run_attempt':1, - 'html_url':'https://github.com/firebase/firebase-android-sdk/actions/runs/4296343867', - 'jobs_url':'https://api.github.com/repos/firebase/firebase-android-sdk/actions/runs/4296343867/jobs', - 'jobs':{ - 'total_count':95, - 'success_count':92, - 'failure_count':3, - 'job_runs':[ - { - 'job_id':11664775180, - 'job_name':'Determine changed modules', - 'conclusion':'success', - 'created_at':'2023-02-28T18:47:42Z', - 'started_at':'2023-02-28T18:47:50Z', - 'completed_at':'2023-02-28T18:50:11Z', - 'run_attempt': 1, - 'html_url':'https://github.com/firebase/firebase-android-sdk/actions/runs/4296343867/jobs/7487936863', - } - ] - } + 'created_at':'2023-02-15T22:02:06Z', + 'started_at':'2023-02-15T22:02:06Z', + 'completed_at':'2023-02-15T22:02:06Z', + 'run_attempt': 1, + 'html_url':'https://github.com/firebase/firebase-android-sdk/runs/11372664143', } ] } - ``` - -- Intermediate file `job_summary.json`: contains all the job runs organized by job name. - ``` - { - 'Unit Test Results':{ # job name - 'total_count':17, - 'success_count':7, - 'failure_count':10, - 'failure_jobs':[ # data structure is the same as same as workflow_summary['workflow_runs']['job_runs'] - { - 'job_id':11372664143, - 'job_name':'Unit Test Results', - 'conclusion':'failure', - 'created_at':'2023-02-15T22:02:06Z', - 'started_at':'2023-02-15T22:02:06Z', - 'completed_at':'2023-02-15T22:02:06Z', - 'run_attempt': 1, - 'html_url':'https://github.com/firebase/firebase-android-sdk/runs/11372664143', - } - ] - } - } - ``` - + } + ``` # `collect_ci_test_logs.py` Script ## Usage -- Collect `ci_test.yml` job failure logs from `workflow_information.py` script's intermediate file: - ``` - python collect_ci_test_logs.py --token ${github_toke} --folder ${folder} - ``` + +- Collect `ci_test.yml` job failure logs from `workflow_information.py` script's intermediate file: + ``` + python collect_ci_test_logs.py --token ${github_toke} --folder ${folder} + ``` ## Inputs -- `-t, --token`: **[Required]** GitHub access token. See [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). +- `-t, --token`: **[Required]** GitHub access token. See [Creating a personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). -- `-f, --folder`: **[Required]** Folder that store intermediate files generated by `workflow_information.py`. `ci_workflow.yml` job failure logs will also be stored here. +- `-f, --folder`: **[Required]** Folder that store intermediate files generated by `workflow_information.py`. `ci_workflow.yml` job failure logs will also be stored here. ## Outputs -- `${job name}.log`: contains job failure rate, list all failed job links and failure logs. - ``` - Unit Tests (:firebase-storage): - Failure rate:40.00% - Total count: 20 (success: 12, failure: 8) - Failed jobs: - - https://github.com/firebase/firebase-android-sdk/actions/runs/4296343867/jobs/7487989874 - firebase-storage:testDebugUnitTest - Task :firebase-storage:testDebugUnitTest - 2023-02-28T18:54:38.1333725Z - 2023-02-28T18:54:38.1334278Z com.google.firebase.storage.DownloadTest > streamDownloadWithResumeAndCancel FAILED - 2023-02-28T18:54:38.1334918Z org.junit.ComparisonFailure at DownloadTest.java:190 - 2023-02-28T18:57:20.3329130Z - 2023-02-28T18:57:20.3330165Z 112 tests completed, 1 failed - 2023-02-28T18:57:20.5329189Z - 2023-02-28T18:57:20.5330505Z > Task :firebase-storage:testDebugUnitTest FAILED - ``` +- `${job name}.log`: contains job failure rate, list all failed job links and failure logs. + + ``` + Unit Tests (:firebase-storage): + Failure rate:40.00% + Total count: 20 (success: 12, failure: 8) + Failed jobs: + + https://github.com/firebase/firebase-android-sdk/actions/runs/4296343867/jobs/7487989874 + firebase-storage:testDebugUnitTest + Task :firebase-storage:testDebugUnitTest + 2023-02-28T18:54:38.1333725Z + 2023-02-28T18:54:38.1334278Z com.google.firebase.storage.DownloadTest > streamDownloadWithResumeAndCancel FAILED + 2023-02-28T18:54:38.1334918Z org.junit.ComparisonFailure at DownloadTest.java:190 + 2023-02-28T18:57:20.3329130Z + 2023-02-28T18:57:20.3330165Z 112 tests completed, 1 failed + 2023-02-28T18:57:20.5329189Z + 2023-02-28T18:57:20.5330505Z > Task :firebase-storage:testDebugUnitTest FAILED + ``` diff --git a/contributor-docs/_includes/favicon.html b/contributor-docs/_includes/favicon.html index c244949e06e..49cc7ef86b5 100644 --- a/contributor-docs/_includes/favicon.html +++ b/contributor-docs/_includes/favicon.html @@ -1 +1,5 @@ - \ No newline at end of file + diff --git a/contributor-docs/_includes/nav_footer_custom.html b/contributor-docs/_includes/nav_footer_custom.html index 177d34a0fb5..d327188f0a7 100644 --- a/contributor-docs/_includes/nav_footer_custom.html +++ b/contributor-docs/_includes/nav_footer_custom.html @@ -1,3 +1 @@ -
- © Google LLC {{ 'now' | date: "%Y" }} -
\ No newline at end of file +
© Google LLC {{ 'now' | date: "%Y" }}
diff --git a/contributor-docs/best_practices/dependency_injection.md b/contributor-docs/best_practices/dependency_injection.md index 3b5de828998..2a3207f2e14 100644 --- a/contributor-docs/best_practices/dependency_injection.md +++ b/contributor-docs/best_practices/dependency_injection.md @@ -8,16 +8,16 @@ While [Firebase Components]({{ site.baseurl }}{% link components/components.md % Dependency Injection capabilities for interop between Firebase SDKs, it's not ideal as a general purpose DI framework for a few reasons, to name some: -* It's verbose, i.e. requires manually specifying dependencies and constructing instances of components in Component +- It's verbose, i.e. requires manually specifying dependencies and constructing instances of components in Component definitions. -* It has a runtime cost, i.e. initialization time is linear in the number of Components present in the graph +- It has a runtime cost, i.e. initialization time is linear in the number of Components present in the graph As a result using [Firebase Components]({{ site.baseurl }}{% link components/components.md %}) is appropriate only for inter-SDK injection and scoping instances per `FirebaseApp`. On the other hand, manually instantiating SDKs is often tedious, errorprone, and leads to code smells that make code less testable and couples it to the implementation rather than the interface. For more context see -[Dependency Injection](https://en.wikipedia.org/wiki/Dependency_injection) and [Motivation](https://github.com/google/guice/wiki/Motivation). +[Dependency Injection](https://en.wikipedia.org/wiki/Dependency_injection) and [Motivation](https://github.com/google/guice/wiki/Motivation). {: .important } It's recommended to use [Dagger](https://dagger.dev) for internal dependency injection within the SDKs and @@ -143,7 +143,7 @@ flowchart LR direction BT subgraph GlobalComponents[Outside of SDK] direction LR - + FirebaseOptions SomeInterop Executor["@Background Executor"] @@ -155,7 +155,7 @@ flowchart LR SomeImpl -.-> SomeInterop SomeImpl -.-> Executor end - + subgraph Default["@DbScope SDK(default)"] MainClassDefault[FirebaseDatabase] --> SomeImpl SomeOtherImplDefault[SomeOtherImpl] -.-> FirebaseOptions @@ -169,7 +169,7 @@ flowchart LR end end end - + classDef green fill:#4db6ac classDef blue fill:#1a73e8 class GlobalComponents green @@ -235,7 +235,7 @@ Implementing `DatabaseMultiDb`: @Singleton class DatabaseMultiDb @Inject constructor(private val factory: DbInstanceComponent.Factory) { private val instances = mutableMapOf() - + @Synchronized fun get(dbName: String) : FirebaseDatabase { if (!instances.containsKey(dbName)) { diff --git a/contributor-docs/components/components.md b/contributor-docs/components/components.md index de624274aab..7d12146fdf7 100644 --- a/contributor-docs/components/components.md +++ b/contributor-docs/components/components.md @@ -5,17 +5,18 @@ nav_order: 4 --- # Firebase Components + {: .no_toc} 1. TOC -{:toc} + {:toc} Firebase is known for being easy to use and requiring no/minimal configuration at runtime. Just adding SDKs to the app makes them discover each other to provide additional functionality, e.g. `Firestore` automatically integrates with `Auth` if present in the app. -* Firebase SDKs have required and optional dependencies on other Firebase SDKs -* SDKs have different initialization requirements, e.g. `Analytics` and `Crashlytics` must be +- Firebase SDKs have required and optional dependencies on other Firebase SDKs +- SDKs have different initialization requirements, e.g. `Analytics` and `Crashlytics` must be initialized upon application startup, while some are initialized on demand only. To accommodate these requirements Firebase uses a component model that discovers SDKs present in the app, @@ -34,10 +35,10 @@ and start using it right away. ### Simple to use and integrate with for component developers -* The component model is lightweight in terms of integration effort. It is not opinionated on how components are structured. -* The component model should require as little cooperation from components runtime as possible. -* It provides component developers with an API that is easy to use correctly, and hard to use incorrectly. -* Does not sacrifice testability of individual components in isolation +- The component model is lightweight in terms of integration effort. It is not opinionated on how components are structured. +- The component model should require as little cooperation from components runtime as possible. +- It provides component developers with an API that is easy to use correctly, and hard to use incorrectly. +- Does not sacrifice testability of individual components in isolation ### Performant at startup and initialization @@ -47,10 +48,10 @@ The runtime does as little work as possible during initialization. A Firebase Component is an entity that: -* Implements one or more interfaces -* Has a list of dependencies(required or optional). See [Dependencies]({{ site.baseurl }}{% link components/dependencies.md %}) -* Has initialization requirements(e.g. eager in default app) -* Defines a factory creates an instance of the component’s interface given it's dependencies. +- Implements one or more interfaces +- Has a list of dependencies(required or optional). See [Dependencies]({{ site.baseurl }}{% link components/dependencies.md %}) +- Has initialization requirements(e.g. eager in default app) +- Defines a factory creates an instance of the component’s interface given it's dependencies. (In other words describes how to create the given component.) Example: @@ -130,13 +131,13 @@ At this point `FirebaseApp` will instantiate them and use the `ComponentRuntime` ### Definitions and constraints -* **Component A depends on Component B** if `B` depends on an `interface` that `A` implements. -* **For any Interface I, only one component is allowed to implement I**(with the exception of +- **Component A depends on Component B** if `B` depends on an `interface` that `A` implements. +- **For any Interface I, only one component is allowed to implement I**(with the exception of [Set Dependencies]({{ site.baseurl }}{% link components/dependencies.md %}#set-dependencies)). If this invariant is violated, the container will fail to start at runtime. -* **There must not be any dependency cycles** among components. See Dependency Cycle Resolution on how this limitation can +- **There must not be any dependency cycles** among components. See Dependency Cycle Resolution on how this limitation can be mitigated -* **Components are initialized lazily by default**(unless a component is declared eager) and are initialized when requested +- **Components are initialized lazily by default**(unless a component is declared eager) and are initialized when requested by an application either directly or transitively. The initialization phase of the FirebaseApp will consist of the following steps: @@ -172,12 +173,12 @@ flowchart TD RemoteConfig --> FirebaseApp RemoteConfig --> Context RemoteConfig --> Installations - - + + classDef eager fill:#4db66e,stroke:#4db6ac,color:#000; classDef transitive fill:#4db6ac,stroke:#4db6ac,color:#000; classDef always fill:#1a73e8,stroke:#7baaf7,color:#fff; - + class Analytics eager class Crashlytics eager class Context always @@ -191,8 +192,8 @@ These components are initialized when `FirebaseApp` is initialized. `Installatio eager components depends on it(see Prefer Lazy dependencies to avoid this as mush as possible). `FirebaseApp`, `FirebaseOptions` and `Android Context` are always present in the Component Container and are considered initialized as well. -*The rest of the components are left uninitialized and will remain so until the client application requests them or an eager -component initializes them by using a Lazy dependency.* +_The rest of the components are left uninitialized and will remain so until the client application requests them or an eager +component initializes them by using a Lazy dependency._ For example, if the application calls `FirebaseDatabase.getInstance()`, the container will initialize `Auth` and `Database` and will return `Database` to the user. @@ -202,14 +203,14 @@ Some SDKs support multi-resource mode of operation, where it's possible to creat Examples: -* RTDB allows more than one database in a single Firebase project, so it's possible to instantiate one instance of the sdk per datbase +- RTDB allows more than one database in a single Firebase project, so it's possible to instantiate one instance of the sdk per datbase ```kotlin val rtdbOne = Firebase.database(app) // uses default database val rtdbTwo = Firebase.database(app, "dbName") ``` -* Firestore, functions, and others support the same usage pattern +- Firestore, functions, and others support the same usage pattern To allow for that, such SDKs register a singleton "MultiResource" [Firebase component]({{ site.baseurl }}{% link components/components.md %}), which creates instances per resource(e.g. db name). @@ -236,7 +237,7 @@ class FirebaseDatabase( companion object { fun getInstance(app : FirebaseApp) = getInstance("default") - fun getInstance(app : FirebaseApp, dbName: String) = + fun getInstance(app : FirebaseApp, dbName: String) = app.get(DatabaseComponent::class.java).get("default") } diff --git a/contributor-docs/components/dependencies.md b/contributor-docs/components/dependencies.md index 587fe109ab1..c07d24f6a62 100644 --- a/contributor-docs/components/dependencies.md +++ b/contributor-docs/components/dependencies.md @@ -3,10 +3,11 @@ parent: Firebase Components --- # Dependencies + {: .no_toc} 1. TOC -{:toc} + {:toc} This page gives an overview of the different dependency types supported by the Components Framework. @@ -101,7 +102,7 @@ The provider will return `null` if the dependency is not present in the app. {: .warning } When the app uses [Play's dynamic feature delivery](https://developer.android.com/guide/playcore/feature-delivery), -`provider.get()` will return your dependency when it becomes available. To support this use case, don't store references to the result of `provider.get()` calls. +`provider.get()` will return your dependency when it becomes available. To support this use case, don't store references to the result of `provider.get()` calls. See [Dynamic Module Support]({{ site.baseurl }}{% link components/dynamic_modules.md %}) for details @@ -162,8 +163,8 @@ With the above setup each SDK contributes a value of `SomeType` into a `Set`. -* `Dependency.setOfProvider(SomeType.class)`, a dependency of type `Provider>`. The advantage of this +- `Dependency.setOf(SomeType.class)`, a dependency of type `Set`. +- `Dependency.setOfProvider(SomeType.class)`, a dependency of type `Provider>`. The advantage of this is that the `Set` is not initialized until the first call to `provider.get()` at which point all elements of the set will get initialized. diff --git a/contributor-docs/components/executors.md b/contributor-docs/components/executors.md index f7fdc7c3a7b..67d3877592a 100644 --- a/contributor-docs/components/executors.md +++ b/contributor-docs/components/executors.md @@ -3,10 +3,11 @@ parent: Firebase Components --- # Executors + {: .no_toc} 1. TOC -{:toc} + {:toc} ## Intro @@ -25,7 +26,7 @@ public class MyRegistrar implements ComponentRegistrar { public List> getComponents() { Qualified backgroundExecutor = Qualified.qualified(Background.class, Executor.class); Qualified liteExecutorService = Qualified.qualified(Lightweight.class, ExecutorService.class); - + return Collections.singletonList( Component.builder(MyComponent.class) .add(Dependency.required(backgroundExecutor)) @@ -38,10 +39,10 @@ public class MyRegistrar implements ComponentRegistrar { All executors(with the exception of `@UiThread`) are available as the following interfaces: -* `Executor` -* `ExecutorService` -* `ScheduledExecutorService` -* `CoroutineDispatcher` +- `Executor` +- `ExecutorService` +- `ScheduledExecutorService` +- `CoroutineDispatcher` `@UiThread` is provided only as a plain `Executor`. @@ -65,17 +66,17 @@ flowchart TD DoesBlock --> |Yes| DiskIO{Does it block only\n on disk IO?} DiskIO --> |Yes| BgExecutor DiskIO --> |No| BlockExecutor[[Blocking Executor]] - - + + classDef start fill:#4db6ac,stroke:#4db6ac,color:#000; class Start start - + classDef condition fill:#f8f9fa,stroke:#bdc1c6,color:#000; class DoesBlock condition; class NeedUi condition; class TakesLong condition; class DiskIO condition; - + classDef executor fill:#1a73e8,stroke:#7baaf7,color:#fff; class UiExecutor executor; class LiteExecutor executor; @@ -180,11 +181,11 @@ Executor sequentialExecutor = FirebaseExecutors.newSequentialExecutor(c.get(bgEx ## Proper Kotlin usage A `CoroutineContext` should be preferred when possible over an explicit `Executor` -or `CoroutineDispatcher`. You should only use an `Executor` at the highest -(or inversely the lowest) level of your implementations. Most classes should not +or `CoroutineDispatcher`. You should only use an `Executor` at the highest +(or inversely the lowest) level of your implementations. Most classes should not be concerned with the existence of an `Executor`. -Keep in mind that you can combine `CoroutineContext` with other `CoroutineScope` +Keep in mind that you can combine `CoroutineContext` with other `CoroutineScope` or `CoroutineContext`. And that all `suspend` functions inherent their `coroutineContext`: ```kotlin @@ -208,13 +209,13 @@ With that in mind, when it comes to writing tests, prefer to use the common exec your own thread pools. This will ensure that your code uses the appropriate executor and does not slow down all of Firebase by using the wrong one. -To do that, you should prefer relying on Components to inject the right executor even in tests. +To do that, you should prefer relying on Components to inject the right executor even in tests. This will ensure your tests are always using the executor that is actually used in your SDK build. If your SDK uses Dagger, see [Dependency Injection]({{ site.baseurl }}{% link best_practices/dependency_injection.md %}) and [Dagger's testing guide](https://dagger.dev/dev-guide/testing). -When the above is not an option, you can use `TestOnlyExecutors`, but make sure you're testing your code with +When the above is not an option, you can use `TestOnlyExecutors`, but make sure you're testing your code with the same executor that is used in production code: ```kotlin @@ -295,4 +296,4 @@ fun doesStuff() = runTest { runCurrent() } -``` \ No newline at end of file +``` diff --git a/contributor-docs/how_firebase_works.md b/contributor-docs/how_firebase_works.md index 2424bda6b3c..a0dac885941 100644 --- a/contributor-docs/how_firebase_works.md +++ b/contributor-docs/how_firebase_works.md @@ -10,9 +10,9 @@ nav_order: 3 One of the biggest strengths for Firebase clients is the ease of integration. In a common case, a developer has very few things to do to integrate with Firebase. There is no need to initialize/configure Firebase at runtime. Firebase automatically initializes at application start and begins providing value to developers. A few notable examples: -* `Analytics` automatically tracks app events -* `Firebase Performance` automatically tracks app startup time, all network requests and screen performance -* `Crashlytics` automatically captures all application crashes, ANRs and non-fatals +- `Analytics` automatically tracks app events +- `Firebase Performance` automatically tracks app startup time, all network requests and screen performance +- `Crashlytics` automatically captures all application crashes, ANRs and non-fatals This feature makes onboarding and adoption very simple. However, comes with the great responsibility of keeping the application snappy. We shouldn't slow down application startup for 3p developers as it can stand in the way of user adoption of their application. @@ -20,8 +20,8 @@ This feature makes onboarding and adoption very simple. However, comes with the When present together in an application, Firebase products can detect each other and automatically provide additional functionality to the developer, e.g.: -* `Firestore` automatically detects `Auth` and `AppCheck` to protect read/write access to the database -* `Crashlytics` integrates with `Analytics`, when available, to provide additional insights into the application behavior and enables safe app rollouts +- `Firestore` automatically detects `Auth` and `AppCheck` to protect read/write access to the database +- `Crashlytics` integrates with `Analytics`, when available, to provide additional insights into the application behavior and enables safe app rollouts ## FirebaseApp at the Core of Firebase @@ -41,10 +41,10 @@ During initialization, `FirebaseApp` discovers all Firebase SDKs present in the In addition to `FirebaseOptions`, `FirebaseApp` registers additional components that product SDKs can request via dependency injection. To name a few: -* `android.content.Context`(Application context) -* [Common Executors]({{ site.baseurl }}{% link components/executors.md %}) -* `FirebaseOptions` -* Various internal components +- `android.content.Context`(Application context) +- [Common Executors]({{ site.baseurl }}{% link components/executors.md %}) +- `FirebaseOptions` +- Various internal components ## Discovery and Dependency Injection diff --git a/contributor-docs/onboarding/as_open_project.png b/contributor-docs/onboarding/as_open_project.png index 543f4a31090..42d8e338850 100644 Binary files a/contributor-docs/onboarding/as_open_project.png and b/contributor-docs/onboarding/as_open_project.png differ diff --git a/contributor-docs/onboarding/env_setup.md b/contributor-docs/onboarding/env_setup.md index 95427f8a66a..66c167a8ad4 100644 --- a/contributor-docs/onboarding/env_setup.md +++ b/contributor-docs/onboarding/env_setup.md @@ -43,8 +43,8 @@ After that configure github keys as usual using this ## Importing the repository 1. Clone the repository with `git clone --recurse-submodules - git@github.com:firebase/firebase-android-sdk.git`. +git@github.com:firebase/firebase-android-sdk.git`. 1. Open Android Studio and click "Open an existing project". - ![Open an existing project](as_open_project.png) + ![Open an existing project](as_open_project.png) 1. Find the `firebase-android-sdk` directory and open. 1. To run integration/device tests you will need a `google-services.json` file. diff --git a/contributor-docs/onboarding/new_sdk.md b/contributor-docs/onboarding/new_sdk.md index a922741fb3b..d4ff0aea59c 100644 --- a/contributor-docs/onboarding/new_sdk.md +++ b/contributor-docs/onboarding/new_sdk.md @@ -3,10 +3,11 @@ parent: Onboarding --- # Creating a new Firebase SDK + {: .no_toc} 1. TOC -{:toc} + {:toc} Want to create a new SDK in [firebase/firebase-android-sdk](https://github.com/firebase/firebase-android-sdk)? @@ -73,34 +74,34 @@ plugins { } firebaseLibrary { - // enable this only if you have tests in `androidTest`. - testLab.enabled = true - publishSources = true - publishJavadoc = true +// enable this only if you have tests in `androidTest`. +testLab.enabled = true +publishSources = true +publishJavadoc = true } android { - val targetSdkVersion : Int by rootProject - val minSdkVersion : Int by rootProject - - compileSdk = targetSdkVersion - defaultConfig { - namespace = "com.google.firebase.foo" - // change this if you have custom needs. - minSdk = minSdkVersion - targetSdk = targetSdkVersion - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - } +val targetSdkVersion : Int by rootProject +val minSdkVersion : Int by rootProject + +compileSdk = targetSdkVersion +defaultConfig { +namespace = "com.google.firebase.foo" +// change this if you have custom needs. +minSdk = minSdkVersion +targetSdk = targetSdkVersion +testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" +} - testOptions.unitTests.isIncludeAndroidResources = true +testOptions.unitTests.isIncludeAndroidResources = true } dependencies { - implementation(project(":firebase-common")) - implementation(project(":firebase-components")) +implementation(project(":firebase-common")) +implementation(project(":firebase-components")) } -``` +```` ### Create `src/main/AndroidManifest.xml` with the following content: @@ -135,13 +136,14 @@ dependencies { -``` +```` ### Create `com.google.firebase.foo.FirebaseFoo` For Kotlin +
src/main/kotlin/com/google/firebase/foo/FirebaseFoo.kt @@ -162,6 +164,7 @@ class FirebaseFoo {
For Java +
src/main/java/com/google/firebase/foo/FirebaseFoo.java @@ -183,6 +186,7 @@ public class FirebaseFoo { ### Create `com.google.firebase.foo.FirebaseFooRegistrar` For Kotlin +
src/main/kotlin/com/google/firebase/foo/FirebaseFooRegistrar.kt @@ -205,6 +209,7 @@ class FirebaseFooRegistrar : ComponentRegistrar {
For Java +
src/main/java/com/google/firebase/foo/FirebaseFooRegistrar.java diff --git a/docs/README.md b/docs/README.md index 626c0b3f60a..9ab687c6483 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,13 +7,13 @@ Android app. To get started, visit the [setup instructions][android-setup]. This repository includes the following Firebase SDKs for Android: - * `firebase-common` - * `firebase-database` - * `firebase-firestore` - * `firebase-functions` - * `firebase-inappmessaging-display` - * `firebase-perf` - * `firebase-storage` +- `firebase-common` +- `firebase-database` +- `firebase-firestore` +- `firebase-functions` +- `firebase-inappmessaging-display` +- `firebase-perf` +- `firebase-storage` For more information on building the SDKs from source or contributing, visit the [main README][main-readme]. @@ -24,16 +24,16 @@ The following Firebase SDKs for Android have Kotlin extension libraries that allow you to write more idiomatic Kotlin code when using Firebase in your app: - * [`firebase-common`](ktx/common.md) - * [`firebase-crashlytics`](ktx/crashlytics.md) - * [`firebase-dynamic-links`](ktx/dynamic-links.md) - * [`firebase-firestore`](ktx/firestore.md) - * [`firebase-functions`](ktx/functions.md) - * [`firebase-inappmessaging`](ktx/inappmessaging.md) - * [`firebase-inappmessaging-display`](ktx/inappmessaging-display.md) - * [`firebase-remote-config`](ktx/remote-config.md) - * [`firebase-storage`](ktx/storage.md) - * [`firebase-database`](ktx/database.md) +- [`firebase-common`](ktx/common.md) +- [`firebase-crashlytics`](ktx/crashlytics.md) +- [`firebase-dynamic-links`](ktx/dynamic-links.md) +- [`firebase-firestore`](ktx/firestore.md) +- [`firebase-functions`](ktx/functions.md) +- [`firebase-inappmessaging`](ktx/inappmessaging.md) +- [`firebase-inappmessaging-display`](ktx/inappmessaging-display.md) +- [`firebase-remote-config`](ktx/remote-config.md) +- [`firebase-storage`](ktx/storage.md) +- [`firebase-database`](ktx/database.md) [android-setup]: https://firebase.google.com/docs/android/setup [main-readme]: https://github.com/firebase/firebase-android-sdk/blob/master/README.md diff --git a/docs/ktx/common.md b/docs/ktx/common.md index 3935c9e1b9c..8c08db2868a 100644 --- a/docs/ktx/common.md +++ b/docs/ktx/common.md @@ -16,12 +16,14 @@ implementation 'com.google.firebase:firebase-common-ktx:$VERSION' ### Get the default FirebaseApp and FirebaseOptions **Kotlin** + ```kotlin val defaultApp = FirebaseApp.getInstance() val defaultOptions = defaultApp.options ``` **Kotlin + KTX** + ```kotlin val defaultApp = Firebase.app val defaultOptions = Firebase.options @@ -30,13 +32,14 @@ val defaultOptions = Firebase.options ### Initialize a FirebaseApp **Kotlin** + ```kotlin val options = FirebaseApp.getInstance().options val anotherApp = FirebaseApp.initializeApp(context, options, "myApp") ``` **Kotlin + KTX** + ```kotlin var anotherApp = Firebase.initialize(context, Firebase.options, "myApp") ``` - diff --git a/docs/ktx/crashlytics.md b/docs/ktx/crashlytics.md index 687944ba2e4..2e9f32423f6 100644 --- a/docs/ktx/crashlytics.md +++ b/docs/ktx/crashlytics.md @@ -16,11 +16,13 @@ implementation 'com.google.firebase:firebase-crashlytics-ktx:$VERSION' ### Get an instance of FirebaseCrashlytics **Kotlin** + ```kotlin val crashlytics = FirebaseCrashlytics.getInstance() ``` **Kotlin + KTX** + ```kotlin val crashlytics = Firebase.crashlytics ``` @@ -28,6 +30,7 @@ val crashlytics = Firebase.crashlytics ### Set custom keys **Kotlin** + ```kotlin crashlytics.setCustomKey("str_key", "hello") crashlytics.setCustomKey("bool_key", true) @@ -38,6 +41,7 @@ crashlytics.setCustomKey("double_key", 1.0) ``` **Kotlin + KTX** + ```kotlin crashlytics.setCustomKeys { key("str_key", "hello") diff --git a/docs/ktx/database.md b/docs/ktx/database.md index d54d3497c84..f16cc49237c 100644 --- a/docs/ktx/database.md +++ b/docs/ktx/database.md @@ -16,12 +16,14 @@ implementation 'com.google.firebase:firebase-database-ktx:$VERSION' ### Get an instance of FirebaseDatabase **Kotlin** + ```kotlin val database = FirebaseDatabase.getInstance() val anotherDatabase = FirebaseDatabase.getInstance(FirebaseApp.getInstance("myApp")) ``` **Kotlin + KTX** + ```kotlin val database = Firebase.database val anotherDatabase = Firebase.database(Firebase.app("myApp")) @@ -30,24 +32,27 @@ val anotherDatabase = Firebase.database(Firebase.app("myApp")) ### Get the FirebaseDatabase for the specified url **Kotlin** + ```kotlin val database = FirebaseDatabase.getInstance(url) ``` **Kotlin + KTX** + ```kotlin val database = Firebase.database(url) ``` - ### Get the FirebaseDatabase of the given FirebaseApp and url **Kotlin** + ```kotlin val database = FirebaseDatabase.getInstance(app, url) ``` **Kotlin + KTX** + ```kotlin val database = Firebase.database(app, url) ``` @@ -55,12 +60,14 @@ val database = Firebase.database(app, url) ### Convert a DataSnapshot to a POJO **Kotlin** + ```kotlin val snapshot: DataSnapshot = ... val myObject = snapshot.getValue(MyClass::class.java) ``` **Kotlin + KTX** + ```kotlin val snapshot: DocumentSnapshot = ... val myObject = snapshot.getValue() @@ -69,6 +76,7 @@ val myObject = snapshot.getValue() ### Convert a DataSnapshot to generic types such as List or Map **Kotlin** + ```kotlin val snapshot: DataSnapshot = ... val typeIndicator = object : GenericTypeIndicator>() {} @@ -76,6 +84,7 @@ val messages: List = snapshot.getValue(typeIndicator) ``` **Kotlin + KTX** + ```kotlin val snapshot: DocumentSnapshot = ... val messages: List = snapshot.getValue>() @@ -84,6 +93,7 @@ val messages: List = snapshot.getValue() diff --git a/docs/ktx/dynamic-links.md b/docs/ktx/dynamic-links.md index 187dade8b41..d2a72e8ed74 100644 --- a/docs/ktx/dynamic-links.md +++ b/docs/ktx/dynamic-links.md @@ -16,12 +16,14 @@ implementation 'com.google.firebase:firebase-dynamic-links-ktx:$VERSION' ### Get an instance of FirebaseDynamicLinks **Kotlin** + ```kotlin val dynamicLinks = FirebaseDynamicLinks.getInstance() val anotherDynamicLinks = FirebaseDynamicLinks.getInstance(FirebaseApp.getInstance("myApp")) ``` **Kotlin + KTX** + ```kotlin val dynamicLinks = Firebase.dynamicLinks val anotherDynamicLinks = Firebase.dynamicLinks(Firebase.app("myApp")) @@ -30,6 +32,7 @@ val anotherDynamicLinks = Firebase.dynamicLinks(Firebase.app("myApp")) ### Create a Dynamic Link from parameters **Kotlin** + ```kotlin val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink() .setLink(Uri.parse("https://www.example.com/")) @@ -63,6 +66,7 @@ val dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink() ``` **Kotlin + KTX** + ```kotlin val dynamicLink = Firebase.dynamicLinks.dynamicLink { link = Uri.parse("https://www.example.com/") @@ -93,6 +97,7 @@ val dynamicLink = Firebase.dynamicLinks.dynamicLink { ### Shorten a long Dynamic Link **Kotlin** + ```kotlin FirebaseDynamicLinks.getInstance().createDynamicLink() .setLongLink(Uri.parse("https://example.page.link/?link=" + @@ -115,6 +120,7 @@ FirebaseDynamicLinks.getInstance().createDynamicLink() ``` **Kotlin + KTX** + ```kotlin Firebase.dynamicLinks.shortLinkAsync { longLink = Uri.parse("https://example.page.link/?link=" + @@ -132,6 +138,7 @@ Firebase.dynamicLinks.shortLinkAsync { ### Create a Dynamic Link with a shorter link suffix **Kotlin** + ```kotlin val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() // ... @@ -139,6 +146,7 @@ val shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() ``` **Kotlin + KTX** + ```kotlin val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) { // ... @@ -148,6 +156,7 @@ val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix ### Receive deep links **Kotlin** + ```kotlin Firebase.dynamicLinks .getDynamicLink(intent) @@ -161,6 +170,7 @@ Firebase.dynamicLinks ``` **Kotlin + KTX** + ```kotlin Firebase.dynamicLinks .getDynamicLink(intent) diff --git a/docs/ktx/firestore.md b/docs/ktx/firestore.md index 276f6bc0820..c873be486c7 100644 --- a/docs/ktx/firestore.md +++ b/docs/ktx/firestore.md @@ -16,12 +16,14 @@ implementation 'com.google.firebase:firebase-firestore-ktx:$VERSION' ### Get an instance of FirebaseFirestore **Kotlin** + ```kotlin val firestore = FirebaseFirestore.getInstance() val anotherFirestore = FirebaseFirestore.getInstance(FirebaseApp.getInstance("myApp")) ``` **Kotlin + KTX** + ```kotlin val firestore = Firebase.firestore val anotherFirestore = Firebase.firestore(Firebase.app("myApp")) @@ -30,11 +32,12 @@ val anotherFirestore = Firebase.firestore(Firebase.app("myApp")) ### Get a document **Kotlin** + ```kotlin firestore.collection("cities") .document("LON") .addSnapshotListener { document: DocumentSnapshot?, error: -> - if (error != null) { + if (error != null) { // Handle error return@addSnapshotListener } @@ -45,6 +48,7 @@ firestore.collection("cities") ``` **Kotlin + KTX** + ```kotlin firestore.collection("cities") .document("LON") @@ -57,6 +61,7 @@ firestore.collection("cities") ### Query documents **Kotlin** + ```kotlin firestore.collection("cities") .whereEqualTo("capital", true) @@ -74,6 +79,7 @@ firestore.collection("cities") ``` **Kotlin + KTX** + ```kotlin firestore.collection("cities") .whereEqualTo("capital", true) @@ -88,12 +94,14 @@ firestore.collection("cities") ### Convert a DocumentSnapshot field to a POJO **Kotlin** + ```kotlin val snapshot: DocumentSnapshot = ... val myObject = snapshot.get("fieldPath", MyClass::class.java) ``` **Kotlin + KTX** + ```kotlin val snapshot: DocumentSnapshot = ... val myObject = snapshot.get("fieldPath") @@ -102,12 +110,14 @@ val myObject = snapshot.get("fieldPath") ### Convert a DocumentSnapshot to a POJO **Kotlin** + ```kotlin val snapshot: DocumentSnapshot = ... val myObject = snapshot.toObject(MyClass::class.java) ``` **Kotlin + KTX** + ```kotlin val snapshot: DocumentSnapshot = ... val myObject = snapshot.toObject() @@ -116,12 +126,14 @@ val myObject = snapshot.toObject() ### Convert a QuerySnapshot to a list of POJOs **Kotlin** + ```kotlin val snapshot: QuerySnapshot = ... val objectList = snapshot.toObjects(MyClass::class.java) ``` **Kotlin + KTX** + ```kotlin val snapshot: QuerySnapshot = ... val objectList = snapshot.toObjects() @@ -130,6 +142,7 @@ val objectList = snapshot.toObjects() ### Setup Firestore with a local emulator **Kotlin** + ```kotlin val settings = FirebaseFirestoreSettings.Builder() .setHost("10.0.2.2:8080") @@ -141,6 +154,7 @@ firestore.setFirestoreSettings(settings) ``` **Kotlin + KTX** + ```kotlin firestore.firestoreSettings = firestoreSettings { host = "http://10.0.2.2:8080" diff --git a/docs/ktx/functions.md b/docs/ktx/functions.md index 6de19ce53ed..5e4e644cad8 100644 --- a/docs/ktx/functions.md +++ b/docs/ktx/functions.md @@ -16,11 +16,13 @@ implementation 'com.google.firebase:firebase-functions-ktx:$VERSION' ### Get the FirebaseFunctions instance of the default app **Kotlin** + ```kotlin val functions = FirebaseFunctions.getInstance() ``` **Kotlin + KTX** + ```kotlin val functions = Firebase.functions ``` @@ -28,11 +30,13 @@ val functions = Firebase.functions ### Get the FirebaseFunctions of a given region **Kotlin** + ```kotlin val functions = FirebaseFunctions.getInstance(region) ``` **Kotlin + KTX** + ```kotlin val functions = Firebase.functions(region) ``` @@ -40,11 +44,13 @@ val functions = Firebase.functions(region) ### Get the FirebaseFunctions of a given FirebaseApp **Kotlin** + ```kotlin val functions = FirebaseFunctions.getInstance(app) ``` **Kotlin + KTX** + ```kotlin val functions = Firebase.functions(app) ``` @@ -52,11 +58,13 @@ val functions = Firebase.functions(app) ### Get the FirebaseFunctions of a given region and FirebaseApp **Kotlin** + ```kotlin val functions = FirebaseFunctions.getInstance(app, region) ``` **Kotlin + KTX** + ```kotlin val functions = Firebase.functions(app, region) ``` diff --git a/docs/ktx/inappmessaging-display.md b/docs/ktx/inappmessaging-display.md index 82a6d3702cc..967282d331f 100644 --- a/docs/ktx/inappmessaging-display.md +++ b/docs/ktx/inappmessaging-display.md @@ -16,11 +16,13 @@ implementation 'com.google.firebase:firebase-inappmessaging-display-ktx:$VERSION ### Get an instance of FirebaseInAppMessagingDisplay **Kotlin** + ```kotlin val fiamUI = FirebaseInAppMessagingDisplay.getInstance() ``` **Kotlin + KTX** + ```kotlin val fiamUI = Firebase.inAppMessagingDisplay ``` diff --git a/docs/ktx/inappmessaging.md b/docs/ktx/inappmessaging.md index 13f90d7d84f..c2fec5a2c1c 100644 --- a/docs/ktx/inappmessaging.md +++ b/docs/ktx/inappmessaging.md @@ -16,11 +16,13 @@ implementation 'com.google.firebase:firebase-inappmessaging-ktx:$VERSION' ### Get an instance of FirebaseInAppMessaging **Kotlin** + ```kotlin val fiamUI = FirebaseInAppMessaging.getInstance() ``` **Kotlin + KTX** + ```kotlin val fiamUI = Firebase.inAppMessaging ``` diff --git a/docs/ktx/remote-config.md b/docs/ktx/remote-config.md index 4f685cea793..349052cdb04 100644 --- a/docs/ktx/remote-config.md +++ b/docs/ktx/remote-config.md @@ -16,11 +16,13 @@ implementation 'com.google.firebase:firebase-config-ktx:$VERSION' ### Get the FirebaseRemoteConfig instance of the default app **Kotlin** + ```kotlin val remoteConfig = FirebaseRemoteConfig.getInstance() ``` **Kotlin + KTX** + ```kotlin val remoteConfig = Firebase.remoteConfig ``` @@ -28,11 +30,13 @@ val remoteConfig = Firebase.remoteConfig ### Get the FirebaseRemoteConfig of a given FirebaseApp **Kotlin** + ```kotlin val remoteConfig = FirebaseRemoteConfig.getInstance(app) ``` **Kotlin + KTX** + ```kotlin val remoteConfig = Firebase.remoteConfig(app) ``` @@ -40,6 +44,7 @@ val remoteConfig = Firebase.remoteConfig(app) ### Get parameter values from FirebaseRemoteConfig **Kotlin** + ```kotlin val isEnabled = remoteConfig.getBoolean("is_enabled") @@ -53,6 +58,7 @@ val accessKey = remoteConfig.getString("access_key") ``` **Kotlin + KTX** + ```kotlin val isEnabled = remoteConfig["is_enabled"].asBoolean() @@ -68,6 +74,7 @@ val accessKey = remoteConfig["access_key"].asString() ### Set Remote Config Settings **Kotlin** + ```kotlin val configSettings = FirebaseRemoteConfigSettings.Builder() .setMinimumFetchIntervalInSeconds(3600) @@ -77,10 +84,11 @@ remoteConfig.setConfigSettingsAsync(configSettings) ``` **Kotlin + KTX** + ```kotlin val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 3600 fetchTimeoutInSeconds = 60 } remoteConfig.setConfigSettingsAsync(configSettings) -``` \ No newline at end of file +``` diff --git a/docs/ktx/storage.md b/docs/ktx/storage.md index 5854723fe6e..3003702aace 100644 --- a/docs/ktx/storage.md +++ b/docs/ktx/storage.md @@ -16,12 +16,14 @@ implementation 'com.google.firebase:firebase-storage-ktx:$VERSION' ### Get an instance of FirebaseStorage **Kotlin** + ```kotlin val storage = FirebaseStorage.getInstance() val anotherStorage = FirebaseStorage.getInstance(FirebaseApp.getInstance("myApp")) ``` **Kotlin + KTX** + ```kotlin val storage = Firebase.storage val anotherStorage = Firebase.storage(Firebase.app("myApp")) @@ -30,12 +32,14 @@ val anotherStorage = Firebase.storage(Firebase.app("myApp")) ### Get the FirebaseStorage for a custom storage bucket url **Kotlin** + ```kotlin val storage = FirebaseStorage.getInstance("gs://my-custom-bucket") val anotherStorage = FirebaseStorage.getInstance(FirebaseApp.getInstance("myApp"), "gs://my-custom-bucket") ``` **Kotlin + KTX** + ```kotlin val storage = Firebase.storage("gs://my-custom-bucket") val anotherStorage = Firebase.storage(Firebase.app("myApp"), "gs://my-custom-bucket") @@ -44,6 +48,7 @@ val anotherStorage = Firebase.storage(Firebase.app("myApp"), "gs://my-custom-buc ### Create file metadata **Kotlin** + ```kotlin val metadata = StorageMetadata.Builder() .setContentType("image/jpg") @@ -53,6 +58,7 @@ val metadata = StorageMetadata.Builder() ``` **Kotlin + KTX** + ```kotlin val metadata = storageMetadata { contentType = "image/jpg" diff --git a/encoders/README.md b/encoders/README.md index 6a33fcb1c81..da1e8127ab3 100644 --- a/encoders/README.md +++ b/encoders/README.md @@ -6,22 +6,23 @@ supported: **json** and **proto**). The project consists of multiple parts: -* `firebase_encoders` - Core API and Annotations library. -* `processor` - Java plugin that automatically generates encoders for - `@Encodable` annotated POJOs. -* `firebase_encoders_json` - JSON serialization support. -* `firebase_encoders_proto` - Protobuf serialization support. -* `protoc_gen` - Protobuf compiler plugin that generates encoder-compliant - classes. Can be used with `firebase_encoders_proto` and - `firebase_encoders_json`. -* `reflective` - Can be used to encode any given class via Java - reflection(**not recommented**). +- `firebase_encoders` - Core API and Annotations library. +- `processor` - Java plugin that automatically generates encoders for + `@Encodable` annotated POJOs. +- `firebase_encoders_json` - JSON serialization support. +- `firebase_encoders_proto` - Protobuf serialization support. +- `protoc_gen` - Protobuf compiler plugin that generates encoder-compliant + classes. Can be used with `firebase_encoders_proto` and + `firebase_encoders_json`. +- `reflective` - Can be used to encode any given class via Java + reflection(**not recommented**). ### Protobuf gettings started ##### Step1. Place proto files into **src/main/proto/** -*src/main/proto/my.proto* +_src/main/proto/my.proto_ + ```proto syntax = "proto3"; @@ -35,10 +36,10 @@ message SimpleProto { } ``` - ##### Step2. Add the following configurations into gradle module build file. -*example.gradle* +_example.gradle_ + ```gradle plugins { id "java-library" @@ -86,11 +87,13 @@ dependencies { ##### Step3. Create a code-gen-cfg.textproto file at the module root folder(same location as the gradle module build file). -*code-gen-cfg.textproto* +_code-gen-cfg.textproto_ Note: + - The filename must be the same as the filename determined in the gradle build file. - Only need to specify the "root" proto object, anything it references will automatically be included. + ```textproto # code_gen_cfg.textproto # proto-file: src/main/proto/my.proto @@ -145,4 +148,4 @@ dependencies { // annotationProcessor project(":encoders:firebase-encoders-processor") kapt project(":encoders:firebase-encoders-processor") } -``` \ No newline at end of file +``` diff --git a/encoders/firebase-decoders-json/CHANGELOG.md b/encoders/firebase-decoders-json/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/encoders/firebase-decoders-json/CHANGELOG.md +++ b/encoders/firebase-decoders-json/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/encoders/firebase-encoders-json/CHANGELOG.md b/encoders/firebase-encoders-json/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/encoders/firebase-encoders-json/CHANGELOG.md +++ b/encoders/firebase-encoders-json/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/encoders/firebase-encoders-processor/CHANGELOG.md b/encoders/firebase-encoders-processor/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/encoders/firebase-encoders-processor/CHANGELOG.md +++ b/encoders/firebase-encoders-processor/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/encoders/firebase-encoders-proto/CHANGELOG.md b/encoders/firebase-encoders-proto/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/encoders/firebase-encoders-proto/CHANGELOG.md +++ b/encoders/firebase-encoders-proto/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/encoders/firebase-encoders-reflective/CHANGELOG.md b/encoders/firebase-encoders-reflective/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/encoders/firebase-encoders-reflective/CHANGELOG.md +++ b/encoders/firebase-encoders-reflective/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/encoders/firebase-encoders/CHANGELOG.md b/encoders/firebase-encoders/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/encoders/firebase-encoders/CHANGELOG.md +++ b/encoders/firebase-encoders/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/encoders/protoc-gen-firebase-encoders/CHANGELOG.md b/encoders/protoc-gen-firebase-encoders/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/encoders/protoc-gen-firebase-encoders/CHANGELOG.md +++ b/encoders/protoc-gen-firebase-encoders/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/firebase-abt/CHANGELOG.md b/firebase-abt/CHANGELOG.md index dd919829152..c858868e978 100644 --- a/firebase-abt/CHANGELOG.md +++ b/firebase-abt/CHANGELOG.md @@ -1,42 +1,49 @@ # Unreleased - # 21.1.1 -* [changed] Internal changes to improve experiment reporting. + +- [changed] Internal changes to improve experiment reporting. # 21.1.0 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. # 21.0.2 -* [changed] Updated dependency of `play-services-basement` to its latest + +- [changed] Updated dependency of `play-services-basement` to its latest version (v18.1.0). # 21.0.1 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. # 21.0.0 -* [changed] Internal infrastructure improvements. -* [changed] Internal changes to support dynamic feature modules. + +- [changed] Internal infrastructure improvements. +- [changed] Internal changes to support dynamic feature modules. # 20.0.0 -* [removed] Removed the protocol buffer dependency and moved relevant protocol + +- [removed] Removed the protocol buffer dependency and moved relevant protocol buffer definitions to [inappmessaging_longer]. If you use [ab_testing] with [inappmessaging], you'll need to update to [inappmessaging] v19.1.2 or later. # 19.0.1 -* [changed] Internal changes to ensure functionality alignment with other SDK releases. + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. # 17.1.1 -* [changed] Updated API to support the latest [remote_config] update. -* [changed] Updated minSdkVersion to API level 16. +- [changed] Updated API to support the latest [remote_config] update. + +- [changed] Updated minSdkVersion to API level 16. # 17.1.0 -* [changed] Updated API to support the latest [remote_config] update. +- [changed] Updated API to support the latest [remote_config] update. diff --git a/firebase-annotations/CHANGELOG.md b/firebase-annotations/CHANGELOG.md index 5b97d49e713..d9e88d812de 100644 --- a/firebase-annotations/CHANGELOG.md +++ b/firebase-annotations/CHANGELOG.md @@ -1,3 +1,4 @@ # Unreleased -* [changed] Hid Executors from public API, as they are intended to be internal + +- [changed] Hid Executors from public API, as they are intended to be internal anyhow. diff --git a/firebase-appdistribution-api/CHANGELOG.md b/firebase-appdistribution-api/CHANGELOG.md index d3ae193c4b4..378ae8d2b86 100644 --- a/firebase-appdistribution-api/CHANGELOG.md +++ b/firebase-appdistribution-api/CHANGELOG.md @@ -1,54 +1,62 @@ # Unreleased # 16.0.0-beta09 -* [feature] Improved development mode to allow all API calls to be made without having to sign in. + +- [feature] Improved development mode to allow all API calls to be made without having to sign in. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appdistribution-api` library. The Kotlin extensions library has no additional updates. # 16.0.0-beta08 -* [fixed] Fixed an issue where a crash happened whenever a feedback + +- [fixed] Fixed an issue where a crash happened whenever a feedback notification was shown on devices running Android 4.4 and lower. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appdistribution-api` library. The Kotlin extensions library has no additional updates. # 16.0.0-beta07 -* [feature] Added support for testers to attach JPEG screenshots to their + +- [feature] Added support for testers to attach JPEG screenshots to their feedback. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appdistribution-api` library. The Kotlin extensions library has no additional updates. # 16.0.0-beta06 -* [feature] Added support for in-app tester feedback. To learn more, see + +- [feature] Added support for in-app tester feedback. To learn more, see [Collect feedback from testers](/docs/app-distribution/collect-feedback-from-testers?platform=android). -* [fixed] Fixed a bug where only the last listener added to an `UpdateTask` +- [fixed] Fixed a bug where only the last listener added to an `UpdateTask` using `addOnProgressListener()` would receive updates. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appdistribution-api` library. The Kotlin extensions library has no additional updates. # 16.0.0-beta05 -* [unchanged] Updated to accommodate the release of the updated - [appdistro] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [appdistro] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-appdistribution-api` library. The Kotlin extensions library has - the following additional updates: +`firebase-appdistribution-api` library. The Kotlin extensions library has +the following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-appdistribution-api-ktx` as a transitive dependency, which @@ -57,25 +65,27 @@ The Kotlin extensions library transitively includes the updated into a Kotlin coroutine. # 16.0.0-beta04 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-appdistribution-api` library. The Kotlin extensions library has no additional updates. # 16.0.0-beta03 -* [feature] The [appdistro] SDK has been split into two libraries: - * `firebase-appdistribution-api` - The API-only library
+- [feature] The [appdistro] SDK has been split into two libraries: + + - `firebase-appdistribution-api` - The API-only library
This new API-only library is functional only when the full [appdistro] SDK implementation (`firebase-appdistribution`) is present. `firebase-appdistribution-api` can be included in all [build variants](https://developer.android.com/studio/build/build-variants){: .external}. - * `firebase-appdistribution` - The full SDK implementation
+ - `firebase-appdistribution` - The full SDK implementation
This full SDK implementation is optional and should only be included in pre-release builds. @@ -83,8 +93,8 @@ additional updates. [add these SDKs](/docs/app-distribution/set-up-alerts?platform=android#add-appdistro) to your Android app. - ## Kotlin + With the removal of the Kotlin extensions library `firebase-appdistribution-ktx`, its functionality has been moved to the new API-only library: `firebase-appdistribution-api-ktx`. @@ -92,4 +102,3 @@ API-only library: `firebase-appdistribution-api-ktx`. This new Kotlin extensions library transitively includes the `firebase-appdistribution-api` library. The Kotlin extensions library has no additional updates. - diff --git a/firebase-appdistribution/CHANGELOG.md b/firebase-appdistribution/CHANGELOG.md index 3f2d3936cca..92588f16f5b 100644 --- a/firebase-appdistribution/CHANGELOG.md +++ b/firebase-appdistribution/CHANGELOG.md @@ -1,37 +1,44 @@ # Unreleased -* [fixed] Updated the third-party license file to include Dagger's license. + +- [fixed] Updated the third-party license file to include Dagger's license. # 16.0.0-beta09 -* [feature] Improved development mode to allow all API calls to be made without having to sign in. + +- [feature] Improved development mode to allow all API calls to be made without having to sign in. # 16.0.0-beta08 -* [fixed] Fixed an issue where a crash happened whenever a feedback + +- [fixed] Fixed an issue where a crash happened whenever a feedback notification was shown on devices running Android 4.4 and lower. # 16.0.0-beta07 -* [feature] Added support for testers to attach JPEG screenshots to their + +- [feature] Added support for testers to attach JPEG screenshots to their feedback. # 16.0.0-beta06 -* [feature] Added support for in-app tester feedback. To learn more, see + +- [feature] Added support for in-app tester feedback. To learn more, see [Collect feedback from testers](/docs/app-distribution/collect-feedback-from-testers). -* [fixed] Fixed a bug where only the last listener added to an `UpdateTask` +- [fixed] Fixed a bug where only the last listener added to an `UpdateTask` using `addOnProgressListener()` would receive updates. # 16.0.0-beta05 -* [unchanged] Updated to accommodate the release of the updated + +- [unchanged] Updated to accommodate the release of the updated [appdistro] Kotlin extensions library. # 16.0.0-beta03 -* [feature] The [appdistro] SDK has been split into two libraries: - * `firebase-appdistribution-api` - The API-only library
+- [feature] The [appdistro] SDK has been split into two libraries: + + - `firebase-appdistribution-api` - The API-only library
This new API-only library is functional only when the full [appdistro] SDK implementation (`firebase-appdistribution`) is present. `firebase-appdistribution-api` can be included in all [build variants](https://developer.android.com/studio/build/build-variants){: .external}. - * `firebase-appdistribution` - The full SDK implementation
+ - `firebase-appdistribution` - The full SDK implementation
This full SDK implementation is optional and should only be included in pre-release builds. @@ -39,33 +46,35 @@ [add these SDKs](/docs/app-distribution/set-up-alerts?platform=android#add-appdistro) to your Android app. - ## Kotlin -* [removed] The Kotlin extensions library `firebase-appdistribution-ktx` + +- [removed] The Kotlin extensions library `firebase-appdistribution-ktx` has been removed. All its functionality has been moved to the new API-only library: `firebase-appdistribution-api-ktx`. # 16.0.0-beta02 -* [fixed] Fixed a bug that prevented testers from signing in when the app had -an underscore in the package name. -* [fixed] Fixed a UI bug where the APK download notification displayed the -incorrect error message. -* [changed] Internal improvements to tests. +- [fixed] Fixed a bug that prevented testers from signing in when the app had + an underscore in the package name. +- [fixed] Fixed a UI bug where the APK download notification displayed the + incorrect error message. +- [changed] Internal improvements to tests. ## Kotlin + The Kotlin extensions library transitively includes the base `firebase-app-distribution` library. The Kotlin extensions library has no additional updates. # 16.0.0-beta01 -* [feature] The [appdistro] Android SDK is now available in beta. You + +- [feature] The [appdistro] Android SDK is now available in beta. You can use this SDK to notify testers in-app when a new test build is available. To learn more, visit the [[appdistro] reference documentation](/docs/reference/android/com/google/firebase/appdistribution/package-summary). - ## Kotlin + The [appdistro] Android library with Kotlin extensions is now available in beta. The Kotlin extensions library transitively includes the base `firebase-app-distribution` library. To learn more, visit the diff --git a/firebase-appdistribution/src/main/res/drawable-xxhdpi/ic_rate_review.png b/firebase-appdistribution/src/main/res/drawable-xxhdpi/ic_rate_review.png index edbeba392a4..da7f4622964 100644 Binary files a/firebase-appdistribution/src/main/res/drawable-xxhdpi/ic_rate_review.png and b/firebase-appdistribution/src/main/res/drawable-xxhdpi/ic_rate_review.png differ diff --git a/firebase-appdistribution/test-app/README.md b/firebase-appdistribution/test-app/README.md index 8fa1e988b4b..a469a5b6b9a 100644 --- a/firebase-appdistribution/test-app/README.md +++ b/firebase-appdistribution/test-app/README.md @@ -11,17 +11,17 @@ current directory.

> **Note:** The [Package name](https://firebase.google.com/docs/android/setup#register-app) for your -app created on the Firebase Console (for which the `google-services.json` is downloaded) must match -the [applicationId](https://developer.android.com/studio/build/application-id.html) declared in the -`test-app/test-app.gradle` for the app to link to Firebase. +> app created on the Firebase Console (for which the `google-services.json` is downloaded) must match +> the [applicationId](https://developer.android.com/studio/build/application-id.html) declared in the +> `test-app/test-app.gradle` for the app to link to Firebase. ## Build & Install -### Enable the test-app as a subproject ### +### Enable the test-app as a subproject You'll need to do this on a fresh checkout, otherwise you will see the error `Project 'test-app' not found in project ':firebase-appdistribution'.` when running `./gradlew` tasks for the test app. -By default, product-specific subprojects are disabled in the SDK because their `google-services.json` files aren't always available in CI and therefore they can't be reliably built. To do local development with this test app, it needs to be manually enabled by uncommenting it out at the bottom of [subprojects.cfg](https://github.com/firebase/firebase-android-sdk/blob/master/subprojects.cfg) (*Don't check this in*) +By default, product-specific subprojects are disabled in the SDK because their `google-services.json` files aren't always available in CI and therefore they can't be reliably built. To do local development with this test app, it needs to be manually enabled by uncommenting it out at the bottom of [subprojects.cfg](https://github.com/firebase/firebase-android-sdk/blob/master/subprojects.cfg) (_Don't check this in_) ``` # @@ -55,14 +55,15 @@ In-App Feedback is currently tricky to test locally because it relies on the fact that a release exists with the same hash of the running binary. To build the debug APK, upload it to App Distribution, and install it on the running emulator: + 1. In firebase-appdistribution/test-app/test-app.gradle, uncomment the line `// testers "your email here"` and replace "your email here" with the email you intend to use for testing. 1. Start an emulator 1. Run the following command from the repo's root directory: - ``` - ./gradlew clean :firebase-appdistribution:test-app:build :firebase-appdistribution:test-app:appDistributionUploadBetaDebug && adb install firebase-appdistribution/test-app/build/outputs/apk/beta/debug/test-app-beta-debug.apk - ``` - + ``` + ./gradlew clean :firebase-appdistribution:test-app:build :firebase-appdistribution:test-app:appDistributionUploadBetaDebug && adb install firebase-appdistribution/test-app/build/outputs/apk/beta/debug/test-app-beta-debug.apk + ``` + This will build the debug variant of the app (which has the full SDK), upload it to App Distribution, and install it on the running emulator. Run the app in the emulator to test. As an alternative you can always download it using App Distribution, but using `adb` is just faster. After that, if you want to avoid having to do this every time you want to test locally: @@ -71,6 +72,6 @@ After that, if you want to avoid having to do this every time you want to test l 1. In the Logcat output, find the release name (i.e. `"projects/1095562444941/installations/fCmpB677QTybkwfKbViGI-/releases/3prs96fui9kb0"`) 1. Modify the body of `ReleaseIdentifier.identifyRelease()` to be: - ``` - return Tasks.forResult(""); - ``` + ``` + return Tasks.forResult(""); + ``` diff --git a/firebase-appdistribution/test-app/src/main/res/mipmap-hdpi/ic_launcher.png b/firebase-appdistribution/test-app/src/main/res/mipmap-hdpi/ic_launcher.png index a571e60098c..50859e8097e 100644 Binary files a/firebase-appdistribution/test-app/src/main/res/mipmap-hdpi/ic_launcher.png and b/firebase-appdistribution/test-app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/firebase-appdistribution/test-app/src/main/res/mipmap-xhdpi/ic_launcher.png b/firebase-appdistribution/test-app/src/main/res/mipmap-xhdpi/ic_launcher.png index 6dba46dab19..36cc3635fae 100644 Binary files a/firebase-appdistribution/test-app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/firebase-appdistribution/test-app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/firebase-appdistribution/test-app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/firebase-appdistribution/test-app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 15ac681720f..1c662193b6f 100644 Binary files a/firebase-appdistribution/test-app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/firebase-appdistribution/test-app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/firebase-appdistribution/test-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/firebase-appdistribution/test-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index f25a4197447..8548ef86a2f 100644 Binary files a/firebase-appdistribution/test-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/firebase-appdistribution/test-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/firebase-common/CHANGELOG.md b/firebase-common/CHANGELOG.md index c343cdcb0fc..1780dfcffc8 100644 --- a/firebase-common/CHANGELOG.md +++ b/firebase-common/CHANGELOG.md @@ -1,9 +1,11 @@ # Unreleased # 20.3.3 -* [fixed] Addressed issue with C++ being absent in user agent. + +- [fixed] Addressed issue with C++ being absent in user agent. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-common` library. The Kotlin extensions library has no additional updates diff --git a/firebase-common/README.md b/firebase-common/README.md index 63ae423d0cd..42c66decd5b 100644 --- a/firebase-common/README.md +++ b/firebase-common/README.md @@ -1,4 +1,5 @@ # Firebase Common + firebase-common contains the FirebaseApp, which is used to configure the firebase sdks as well as the infrastructure that firebase sdks use to discover and interact with other firebase sdks. @@ -6,6 +7,7 @@ to discover and interact with other firebase sdks. ## Running tests. Unit tests can be run by + ``` $ ./gradlew :firebase-common:check ``` diff --git a/firebase-components/CHANGELOG.md b/firebase-components/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/firebase-components/CHANGELOG.md +++ b/firebase-components/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/firebase-components/firebase-dynamic-module-support/CHANGELOG.md b/firebase-components/firebase-dynamic-module-support/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/firebase-components/firebase-dynamic-module-support/CHANGELOG.md +++ b/firebase-components/firebase-dynamic-module-support/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/firebase-config/CHANGELOG.md b/firebase-config/CHANGELOG.md index c2c40486bef..f71ffc9cdcf 100644 --- a/firebase-config/CHANGELOG.md +++ b/firebase-config/CHANGELOG.md @@ -1,58 +1,63 @@ # Unreleased # 21.4.1 -* [changed] Internal improvements to support Remote Config real-time updates. +- [changed] Internal improvements to support Remote Config real-time updates. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 21.4.0 -* [unchanged] Updated to accommodate the release of the updated - [remote_config] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [remote_config] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has the following additional updates. -* [feature] Added the - [`FirebaseRemoteConfig.configUpdates`](/docs/reference/kotlin/com/google/firebase/remoteconfig/ktx/package-summary#(com.google.firebase.remoteconfig.FirebaseRemoteConfig).configUpdates()) +- [feature] Added the + [`FirebaseRemoteConfig.configUpdates`]() Kotlin Flow to listen for real-time config updates. # 21.3.0 -* [feature] Added support for real-time config updates. To learn more, see - [Get started with [firebase_remote_config]](/docs/remote-config/get-started?platform=android#add-real-time-listener). +- [feature] Added support for real-time config updates. To learn more, see + [Get started with [firebase_remote_config]](/docs/remote-config/get-started?platform=android#add-real-time-listener). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 21.2.1 -* [changed] Migrated [remote_config] to use standard Firebase executors. +- [changed] Migrated [remote_config] to use standard Firebase executors. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 21.2.0 -* [unchanged] Updated to accommodate the release of the updated - [remote_config] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [remote_config] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-config` library. The Kotlin extensions library has the following - additional updates: +`firebase-config` library. The Kotlin extensions library has the following +additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-config-ktx` as a transitive dependency, which exposes the @@ -61,28 +66,31 @@ The Kotlin extensions library transitively includes the updated coroutine. # 21.1.2 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 21.1.1 -* [fixed] Fixed a bug that caused HTTP errors in some locales. For more + +- [fixed] Fixed a bug that caused HTTP errors in some locales. For more information, see GitHub Issue #3757 - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 21.1.0 + -* [changed] Added first-open time to [remote_config] server requests. - +- [changed] Added first-open time to [remote_config] server requests. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 21.0.2 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 21.0.1 -* [fixed] Fixed a bug in the initialization of [remote_config] with a - non-primary Firebase app. +- [fixed] Fixed a bug in the initialization of [remote_config] with a + non-primary Firebase app. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 21.0.0 -* [changed] Internal infrastructure improvements. -* [changed] Internal changes to support dynamic feature modules. +- [changed] Internal infrastructure improvements. +- [changed] Internal changes to support dynamic feature modules. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 20.0.4 -* [changed] Improved condition targeting signals. +- [changed] Improved condition targeting signals. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 20.0.3 -* [changed] Standardize support for other Firebase products that integrate - with [remote_config]. +- [changed] Standardize support for other Firebase products that integrate + with [remote_config]. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 20.0.2 -* [fixed] Fixed an issue that was causing [remote_config] to return the - static default value even if a remote value was defined. (#2186) +- [fixed] Fixed an issue that was causing [remote_config] to return the + static default value even if a remote value was defined. (#2186) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 20.0.1 -* [changed] Added support for other Firebase products to integrate with - [remote_config]. +- [changed] Added support for other Firebase products to integrate with + [remote_config]. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 20.0.0 -* [removed] Removed the protocol buffer dependency. Also, removed support for + +- [removed] Removed the protocol buffer dependency. Also, removed support for configs saved on device using the legacy protocol buffer format (the SDK stopped using this legacy format starting with [remote_config] v16.3.0). -* [removed] Removed the deprecated synchronous method +- [removed] Removed the deprecated synchronous method `FirebaseRemoteConfig.activateFetched()`. Use the asynchronous - [`FirebaseRemoteConfig.activate()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#activate()) + [`FirebaseRemoteConfig.activate()`]() instead. -* [removed] Removed the deprecated synchronous methods +- [removed] Removed the deprecated synchronous methods `FirebaseRemoteConfig.setDefaults(int)` and `FirebaseRemoteConfig.setDefaults(Map)`. Use the asynchronous - [`FirebaseRemoteConfig.setDefaultsAsync(int)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaultsAsync(int)) - and [`FirebaseRemoteConfig.setDefaultsAsync(Map)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaultsAsync(Map)) + [`FirebaseRemoteConfig.setDefaultsAsync(int)`]() + and [`FirebaseRemoteConfig.setDefaultsAsync(Map)`](>) instead. -* [removed] Removed the deprecated synchronous method +- [removed] Removed the deprecated synchronous method `FirebaseRemoteConfig.setConfigSettings(FirebaseRemoteConfigSettings)`. Use the asynchronous - [`FirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setConfigSettingsAsync(FirebaseRemoteConfigSettings)) + [`FirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)`]() instead. -* [removed] Removed the deprecated method +- [removed] Removed the deprecated method `FirebaseRemoteConfig.getByteArray(String)`. Use - [`FirebaseRemoteConfig.getString(String)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#getString(String)) + [`FirebaseRemoteConfig.getString(String)`]() instead. -* [removed] Removed the deprecated methods +- [removed] Removed the deprecated methods `FirebaseRemoteConfigSettings.isDeveloperModeEnabled()` and `FirebaseRemoteConfigSettings.Builder.setDeveloperModeEnabled(boolean)`. Use - [`FirebaseRemoteConfigSettings#getMinimumFetchIntervalInSeconds()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings#getMinimumFetchIntervalInSeconds()) - and [`FirebaseRemoteConfigSettings.Builder#setMinimumFetchIntervalInSeconds(long)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder#setMinimumFetchIntervalInSeconds(long)) + [`FirebaseRemoteConfigSettings#getMinimumFetchIntervalInSeconds()`]() + and [`FirebaseRemoteConfigSettings.Builder#setMinimumFetchIntervalInSeconds(long)`]() instead. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.2.0 -* [changed] Migrated to use the [firebase_installations] service _directly_ + +- [changed] Migrated to use the [firebase_installations] service _directly_ instead of using an indirect dependency via the Firebase Instance ID SDK. {% include "docs/reference/android/client/_includes/_iid-indirect-dependency-solutions.html" %} -* [changed] Updated the protocol buffer dependency to the newer + +- [changed] Updated the protocol buffer dependency to the newer `protobuf-javalite` artifact. The new artifact is incompatible with the old one, so this library needed to be upgraded to avoid conflicts. No developer action is necessary. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.1.4 -* [changed] Updated dependency on the Firebase Instance ID library to v20.1.5, + +- [changed] Updated dependency on the Firebase Instance ID library to v20.1.5, which is a step towards a direct dependency on the Firebase installations service in a future release. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.1.3 -* [fixed] Fixed an issue where [`FirebaseRemoteConfig.fetch()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#fetch()) -would sometimes report a misformatted language tag. +- [fixed] Fixed an issue where [`FirebaseRemoteConfig.fetch()`]() + would sometimes report a misformatted language tag. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.1.2 -* [fixed] Resolved known issue where - [`FirebaseRemoteConfigSettings.Builder.setFetchTimeoutInSeconds()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder) - was not always honored. +- [fixed] Resolved known issue where + [`FirebaseRemoteConfigSettings.Builder.setFetchTimeoutInSeconds()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder) + was not always honored. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.1.1 -* [changed] Updated [`FirebaseRemoteConfig.fetch()`](docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig.html#fetch()) -implementation to use [`FirebaseInstanceId.getInstanceId()`](/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId.html#getInstanceId()) -in favor of the deprecated [`FirebaseInstanceId.getToken()`](/docs/reference/android/com/google/firebase/iid/FirebaseInstanceId.html#getToken()). +- [changed] Updated [`FirebaseRemoteConfig.fetch()`]() + implementation to use [`FirebaseInstanceId.getInstanceId()`]() + in favor of the deprecated [`FirebaseInstanceId.getToken()`](). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.1.0 -* [changed] Added getters to the fields of the + +- [changed] Added getters to the fields of the [`FirebaseRemoteConfigSettings.Builder`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder) object to provide better Kotlin patterns. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.0.4 -* [fixed] Resolved + +- [fixed] Resolved [known issue](//github.com/firebase/firebase-android-sdk/issues/973) where network calls may fail on devices using API 19 and earlier. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.0.3 -* [fixed] Resolved + +- [fixed] Resolved [known issue](https://github.com/firebase/firebase-android-sdk/issues/787) where the [firebase_remote_config] SDK threw an error when Android [StrictMode](https://developer.android.com/reference/android/os/StrictMode) was turned on. -* [fixed] Resolved issue where setting Byte Arrays via - [`FirebaseRemoteConfig.setDefaultsAsync(int)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaultsAsync(int)), - [`FirebaseRemoteConfig.setDefaultsAsync(Map)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaultsAsync(Map)) +- [fixed] Resolved issue where setting Byte Arrays via + [`FirebaseRemoteConfig.setDefaultsAsync(int)`](), + [`FirebaseRemoteConfig.setDefaultsAsync(Map)`](>) and their synchronous counterparts would cause `getByteArray` to return an object reference instead of the Byte Array. Byte Arrays set via the Firebase console were unaffected by this bug. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-config` library. The Kotlin extensions library has no additional updates. # 19.0.2 -* [unchanged] Updated to accommodate the release of the [remote_config] - Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the [remote_config] + Kotlin extensions library. ## Kotlin -* [feature] The beta release of a [remote_config] Android library with + +- [feature] The beta release of a [remote_config] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively - includes the base `firebase-config` library. To learn more, visit the + includes the base `firebase-config` library. To learn more, visit the [[remote_config] KTX documentation](/docs/reference/kotlin/com/google/firebase/remoteconfig/ktx/package-summary). # 19.0.1 -* [fixed] Resolved known issue where certain unicode characters were not + +- [fixed] Resolved known issue where certain unicode characters were not encoded correctly. The issue was introduced in v19.0.0. # 19.0.0 -* [changed] Versioned to add nullability annotations to improve the Kotlin + +- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes. # 17.0.0 -* [feature] Added an asynchronous way to set config settings: [`FirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setConfigSettingsAsync(FirebaseRemoteConfigSettings)). -* [feature] Added [`FirebaseRemoteConfigServerException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigServerException) and [`FirebaseRemoteConfigClientException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigClientException) to provide more nuanced error reporting. -* [changed] Updated all "cache expiration" references to "minimum fetch interval" and "cache" references to "local storage". -* [deprecated] Deprecated developer mode. Use [`FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(0L)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder#setMinimumFetchIntervalInSeconds(long)) instead. -* [deprecated] Deprecated the synchronous [`FirebaseRemoteConfig.setConfigSettings(FirebaseRemoteConfigSettings)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setConfigSettings(FirebaseRemoteConfigSettings)). Use the asynchronous [`FirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setConfigSettingsAsync(FirebaseRemoteConfigSettings)) instead. -* [deprecated] Deprecated [`FirebaseRemoteConfigFetchException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigFetchException). Use the more granular [`FirebaseRemoteConfigServerException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigServerException) and [`FirebaseRemoteConfigClientException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigClientException) instead. -* [removed] Removed all namespace methods. -* [removed] Removed all default constructors for Exception classes. -* [changed] Updated minSdkVersion to API level 16. + +- [feature] Added an asynchronous way to set config settings: [`FirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)`](). +- [feature] Added [`FirebaseRemoteConfigServerException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigServerException) and [`FirebaseRemoteConfigClientException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigClientException) to provide more nuanced error reporting. +- [changed] Updated all "cache expiration" references to "minimum fetch interval" and "cache" references to "local storage". +- [deprecated] Deprecated developer mode. Use [`FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(0L)`]() instead. +- [deprecated] Deprecated the synchronous [`FirebaseRemoteConfig.setConfigSettings(FirebaseRemoteConfigSettings)`](). Use the asynchronous [`FirebaseRemoteConfig.setConfigSettingsAsync(FirebaseRemoteConfigSettings)`]() instead. +- [deprecated] Deprecated [`FirebaseRemoteConfigFetchException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigFetchException). Use the more granular [`FirebaseRemoteConfigServerException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigServerException) and [`FirebaseRemoteConfigClientException`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigClientException) instead. +- [removed] Removed all namespace methods. +- [removed] Removed all default constructors for Exception classes. +- [changed] Updated minSdkVersion to API level 16. # 16.5.0 -* [feature] Enabled multi-App support. Use [`FirebaseRemoteConfig.getInstance(FirebaseApp)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#getInstance(FirebaseApp)) to retrieve a singleton instance of [`FirebaseRemoteConfig`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig) for the given [`FirebaseApp`](/docs/reference/android/com/google/firebase/FirebaseApp). -* [feature] Added a method that fetches configs and activates them: [`FirebaseRemoteConfig.fetchAndActivate()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#fetchAndActivate()). -* [feature] Network connection timeout for fetch requests is now customizable. To set the network timeout, use [`FirebaseRemoteConfigSettings.Builder.setFetchTimeoutInSeconds(long)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder#setFetchTimeoutInSeconds(long)). -* [feature] The default minimum fetch interval is now customizable. To set the default minimum fetch interval, use [`FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfigSettings.Builder#setMinimumFetchIntervalInSeconds(long)). -* [feature] Added a way to get all activated configs as a Java `Map`: [`FirebaseRemoteConfig.getAll()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#getAll()). -* [feature] Added the ability to reset a Firebase Remote Config instance: [`FirebaseRemoteConfig.reset()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#reset()). -* [feature] Added a way to determine if the Firebase Remote Config instance has finished initializing. To get a task that will complete when the Firebase Remote Config instance is finished initializing, use [`FirebaseRemoteConfig.ensureInitialized()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#ensureInitialized()). -* [feature] Added an asynchronous way to activate configs: [`FirebaseRemoteConfig.activate()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#activate()). -* [feature] Added an asynchronous way to set defaults: [`FirebaseRemoteConfig.setDefaultsAsync(int)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaultsAsync(int)) and [`FirebaseRemoteConfig.setDefaultsAsync(Map)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaultsAsync(Map)). -* [deprecated] Deprecated the synchronous [`FirebaseRemoteConfig.activateFetched()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#activateFetched()). Use the asynchronous [`FirebaseRemoteConfig.activate()`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#activate()) instead. -* [deprecated] Deprecated the synchronous [`FirebaseRemoteConfig.setDefaults(int)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaults(int)) and [`FirebaseRemoteConfig.setDefaults(Map)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefalts(Map)). Use the asynchronous [`FirebaseRemoteConfig.setDefaultsAsync(int)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaultsAsync(int)) and [`FirebaseRemoteConfig.setDefaultsAsync(Map)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#setDefaultsAsync(Map)) instead. -* [deprecated] Deprecated [`FirebaseRemoteConfig.getByteArray(String)`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig#getByteArray(String)). -* [deprecated] Deprecated all methods with a namespace parameter. + +- [feature] Enabled multi-App support. Use [`FirebaseRemoteConfig.getInstance(FirebaseApp)`]() to retrieve a singleton instance of [`FirebaseRemoteConfig`](/docs/reference/android/com/google/firebase/remoteconfig/FirebaseRemoteConfig) for the given [`FirebaseApp`](/docs/reference/android/com/google/firebase/FirebaseApp). +- [feature] Added a method that fetches configs and activates them: [`FirebaseRemoteConfig.fetchAndActivate()`](). +- [feature] Network connection timeout for fetch requests is now customizable. To set the network timeout, use [`FirebaseRemoteConfigSettings.Builder.setFetchTimeoutInSeconds(long)`](). +- [feature] The default minimum fetch interval is now customizable. To set the default minimum fetch interval, use [`FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)`](). +- [feature] Added a way to get all activated configs as a Java `Map`: [`FirebaseRemoteConfig.getAll()`](). +- [feature] Added the ability to reset a Firebase Remote Config instance: [`FirebaseRemoteConfig.reset()`](). +- [feature] Added a way to determine if the Firebase Remote Config instance has finished initializing. To get a task that will complete when the Firebase Remote Config instance is finished initializing, use [`FirebaseRemoteConfig.ensureInitialized()`](). +- [feature] Added an asynchronous way to activate configs: [`FirebaseRemoteConfig.activate()`](). +- [feature] Added an asynchronous way to set defaults: [`FirebaseRemoteConfig.setDefaultsAsync(int)`]() and [`FirebaseRemoteConfig.setDefaultsAsync(Map)`](>). +- [deprecated] Deprecated the synchronous [`FirebaseRemoteConfig.activateFetched()`](). Use the asynchronous [`FirebaseRemoteConfig.activate()`]() instead. +- [deprecated] Deprecated the synchronous [`FirebaseRemoteConfig.setDefaults(int)`]() and [`FirebaseRemoteConfig.setDefaults(Map)`](>). Use the asynchronous [`FirebaseRemoteConfig.setDefaultsAsync(int)`]() and [`FirebaseRemoteConfig.setDefaultsAsync(Map)`](>) instead. +- [deprecated] Deprecated [`FirebaseRemoteConfig.getByteArray(String)`](). +- [deprecated] Deprecated all methods with a namespace parameter. # 16.4.1 -* [changed] The SDK now enforces Android API Key restrictions. -* [fixed] Resolved known issue where the local cache was not honored even if + +- [changed] The SDK now enforces Android API Key restrictions. +- [fixed] Resolved known issue where the local cache was not honored even if it had not expired. The issue was introduced in version 16.3.0. # 16.4.0 -* [changed] Internal changes to ensure functionality alignment with other SDK releases. + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. # 16.3.0 -* [changed] The [firebase_remote_config] SDK requires the + +- [changed] The [firebase_remote_config] SDK requires the [firebase_remote_config] REST API. For Firebase projects created before March 7, 2018, you must manually enable the REST API. For more information, see our [[remote_config] REST API user guide](https://firebase.google.com/docs/remote-config/use-config-rest#before_you_begin_enable_the_rest_api). -* [changed] Refactored the implementation of [remote_config] to improve SDK +- [changed] Refactored the implementation of [remote_config] to improve SDK stability and speed, and to remove the Google Play Services dependency. -* [changed] Improved error logs and exception messages. -* [changed] Updated the Android documentation to reflect that +- [changed] Improved error logs and exception messages. +- [changed] Updated the Android documentation to reflect that [remote_config] uses `Locale` to retrieve location information, similar to iOS's use of `countryCode`. # 16.1.3 -* [fixed] Fixed an issue where [remote_config] experiments were not + +- [fixed] Fixed an issue where [remote_config] experiments were not collecting results. # 16.1.0 -* [fixed] Bug fixes and internal improvements to support Firebase Performance Monitoring features. +- [fixed] Bug fixes and internal improvements to support Firebase Performance Monitoring features. diff --git a/firebase-crashlytics-ndk/CHANGELOG.md b/firebase-crashlytics-ndk/CHANGELOG.md index 7837e9fe597..2b45868e5db 100644 --- a/firebase-crashlytics-ndk/CHANGELOG.md +++ b/firebase-crashlytics-ndk/CHANGELOG.md @@ -1,20 +1,27 @@ # Unreleased # 18.4.0 -* [changed] Updated `firebase-crashlytics` dependency to v18.4.0 -* + +- [changed] Updated `firebase-crashlytics` dependency to v18.4.0 +- + # 18.3.7 -* [changed] Updated `firebase-crashlytics` dependency to v18.3.7 + +- [changed] Updated `firebase-crashlytics` dependency to v18.3.7 # 18.3.6 -* [changed] Updated `firebase-crashlytics` dependency to v18.3.6. + +- [changed] Updated `firebase-crashlytics` dependency to v18.3.6. # 18.3.5 -* [fixed] Updated `firebase-common` to its latest version (v20.3.0) to fix an + +- [fixed] Updated `firebase-common` to its latest version (v20.3.0) to fix an issue that was causing a nondeterministic crash on startup. -* [changed] Updated `firebase-crashlytics` dependency to v18.3.5. +- [changed] Updated `firebase-crashlytics` dependency to v18.3.5. + # 18.3.4 + - * [changed] [crashlytics] NDK crash reporting will now start automatically - when the [crashlytics] NDK dependency is included in your app. - * [changed] The [crashlytics] Gradle plugin has new tasks to support - uploading symbol files to [crashlytics] servers. See the - [[crashlytics] Gradle plugin documentation](/docs/crashlytics/ndk-reports-new-sdk) - for more information. - +- [changed] [crashlytics] NDK crash reporting will now start automatically + when the [crashlytics] NDK dependency is included in your app. +- [changed] The [crashlytics] Gradle plugin has new tasks to support + uploading symbol files to [crashlytics] servers. See the + [[crashlytics] Gradle plugin documentation](/docs/crashlytics/ndk-reports-new-sdk) + for more information. diff --git a/firebase-crashlytics-ndk/README.md b/firebase-crashlytics-ndk/README.md index 3c7538d8650..f8f5affc356 100644 --- a/firebase-crashlytics-ndk/README.md +++ b/firebase-crashlytics-ndk/README.md @@ -11,7 +11,7 @@ Initialize them by running the following commands: ## Building -* All Gradle commands should be run from the root of this repository: +- All Gradle commands should be run from the root of this repository: `./gradlew :firebase-crashlytics-ndk:assemble` ## Running Tests diff --git a/firebase-crashlytics/CHANGELOG.md b/firebase-crashlytics/CHANGELOG.md index c9672604ebb..84e88b633c8 100644 --- a/firebase-crashlytics/CHANGELOG.md +++ b/firebase-crashlytics/CHANGELOG.md @@ -1,49 +1,55 @@ # Unreleased # 18.4.0 -* [feature] Integrated with Firebase sessions library to enable upcoming features related to + +- [feature] Integrated with Firebase sessions library to enable upcoming features related to session-based crash metrics. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.3.7 -* [feature] Added collection of version control information generated by the - Android Gradle plugin (AGP). +- [feature] Added collection of version control information generated by the + Android Gradle plugin (AGP). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.3.6 -* [feature] Added support for upcoming [crashlytics] features to report + +- [feature] Added support for upcoming [crashlytics] features to report GWP-ASan crashes on supported API levels. (GitHub [#4721](https://github.com/firebase/firebase-android-sdk/pull/4721){: .external}) -* [changed] Improved crash reporting reliability for crashes that occur early +- [changed] Improved crash reporting reliability for crashes that occur early in the app's lifecycle. (GitHub [#4608](https://github.com/firebase/firebase-android-sdk/pull/4608){: .external}, [#4786](https://github.com/firebase/firebase-android-sdk/pull/4786){: .external}) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.3.5 -* [fixed] Updated `firebase-common` to its latest version (v20.3.0) to fix an - issue that was causing a nondeterministic crash on startup. +- [fixed] Updated `firebase-common` to its latest version (v20.3.0) to fix an + issue that was causing a nondeterministic crash on startup. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.3.4 + -* [changed] Improved crash reporting reliability for crashes that occur early +- [changed] Improved crash reporting reliability for crashes that occur early in the app's lifecycle. -* [changed] Added improved support for capturing `BuildId`s for native ANRs on +- [changed] Added improved support for capturing `BuildId`s for native ANRs on older Android versions. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.3.3 -* [unchanged] Updated to accommodate the release of the updated - `firebase-crashlytics-ndk` v18.3.3. +- [unchanged] Updated to accommodate the release of the updated + `firebase-crashlytics-ndk` v18.3.3. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.3.2 -* [unchanged] Updated to accommodate the release of the updated - `firebase-crashlytics-ndk` v18.3.2. +- [unchanged] Updated to accommodate the release of the updated + `firebase-crashlytics-ndk` v18.3.2. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.3.1 -* [fixed] Fixed an [issue](https://github.com/firebase/firebase-android-sdk/issues/4223){: .external} - in v18.3.0 that caused a `NoClassDefFoundError` in specific cases. +- [fixed] Fixed an [issue](https://github.com/firebase/firebase-android-sdk/issues/4223){: .external} + in v18.3.0 that caused a `NoClassDefFoundError` in specific cases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.3.0 + Warning: We're aware of an [issue](https://github.com/firebase/firebase-android-sdk/issues/4223){: .external} in this version of the [crashlytics] Android SDK.
**We strongly recommend using the latest version of the SDK (v18.3.1+ or [bom] v31.0.1+).** -* [changed] Improved reporting for crashes that occur early in the app's +- [changed] Improved reporting for crashes that occur early in the app's lifecycle. After updating to this version, you might notice a sudden _increase_ in the number of crashes that are reported for your app. - ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-crashlytics` library. The Kotlin extensions library has the - following additional updates: +`firebase-crashlytics` library. The Kotlin extensions library has the +following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-crashlytics-ktx` as a transitive dependency, which exposes the @@ -118,332 +128,362 @@ The Kotlin extensions library transitively includes the updated coroutine. # 18.2.13 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.12 -* [changed] Internal changes to avoid accessing device-specific information. +- [changed] Internal changes to avoid accessing device-specific information. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.11 -* [changed] Improved crash reporting reliability for multi-process apps on - Android 28 and above. +- [changed] Improved crash reporting reliability for multi-process apps on + Android 28 and above. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.10 -* [fixed] Fixed a bug that could prevent unhandled exceptions from being + +- [fixed] Fixed a bug that could prevent unhandled exceptions from being propogated to the default handler when the network is unavailable. -* [changed] Internal changes to support on-demand fatal crash reporting for +- [changed] Internal changes to support on-demand fatal crash reporting for Flutter apps. -* [fixed] Fixed a bug that prevented [crashlytics] from initalizing on some +- [fixed] Fixed a bug that prevented [crashlytics] from initalizing on some devices in some cases. (#3269) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.9 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.8 -* [changed] Updated to the latest version of the `firebase-datatransport` - library. +- [changed] Updated to the latest version of the `firebase-datatransport` + library. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.7 -* [changed] Improved runtime efficiency of the + +- [changed] Improved runtime efficiency of the [`setCustomKey` functions](/docs/crashlytics/customize-crash-reports?platform=android#add-keys), significantly reducing the number of `Task` objects and disk writes when keys are updated frequently. (#3254) -* [fixed] Fixed a StrictMode `DiskReadViolation`. +- [fixed] Fixed a StrictMode `DiskReadViolation`. (#3265) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.6 -* [changed] Internal changes to support future improvements to Flutter crash - reporting. +- [changed] Internal changes to support future improvements to Flutter crash + reporting. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.5 -* [fixed] Fixed a bug that prevented some [crashlytics] session files from + +- [fixed] Fixed a bug that prevented some [crashlytics] session files from being removed after the session ended. All session-specific files are now properly cleaned up. -* [changed] Internal improvements to [crashlytics] file management, to +- [changed] Internal improvements to [crashlytics] file management, to ensure consistent creation and removal of intermediate [crashlytics] files. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.4 -* [changed] Internal changes to support ANR collection and their upcoming - display in the console. +- [changed] Internal changes to support ANR collection and their upcoming + display in the console. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.3 -* [fixed] Fixed a race condition that prevented some launch-time crashes from + +- [fixed] Fixed a race condition that prevented some launch-time crashes from being reported to Crashlytics. -* [changed] Internal changes to support upcoming Unity crash reporting +- [changed] Internal changes to support upcoming Unity crash reporting improvements. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.1 -* [fixed] Fixed a `ConcurrentModificationException` that could be logged to - logcat when setting multiple custom key/values in rapid succession. +- [fixed] Fixed a `ConcurrentModificationException` that could be logged to + logcat when setting multiple custom key/values in rapid succession. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.2.0 -* [changed] Internal changes. +- [changed] Internal changes. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.1.0 -* [changed] Internal changes to support upcoming Unity features. +- [changed] Internal changes to support upcoming Unity features. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.0.1 -* [fixed] Fixed a bug that could prevent proper removal of [crashlytics] NDK + +- [fixed] Fixed a bug that could prevent proper removal of [crashlytics] NDK crash report files when crash reporting is disabled, resulting in excessive disk use. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 18.0.0 -* [changed] Removed call to - [`FirebaseInstallations#getId()`](/docs/reference/android/com/google/firebase/installations/FirebaseInstallations#getId()) + +- [changed] Removed call to + [`FirebaseInstallations#getId()`]() when [automatic data collection](/docs/crashlytics/customize-crash-reports?platform=android#enable-reporting) is disabled for [crashlytics]. [crashlytics] no longer makes any network calls when reporting is disabled. -* [changed] Internal changes to support dynamic feature modules. - +- [changed] Internal changes to support dynamic feature modules. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 17.4.1 -* [changed] Improved rooted device detection. + +- [changed] Improved rooted device detection. (#2515) -* [fixed] Fix an uncaught IllegalStateExeception that could be thrown if +- [fixed] Fix an uncaught IllegalStateExeception that could be thrown if [crashlytics] is unable to register a receiver that collects battery state information. If registration fails due to the app already having registered too many receivers, [crashlytics] will report default values for the battery state rather than crashing. (#2504) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 17.4.0 -* [feature] Added the + +- [feature] Added the [`setCustomKeys`](/docs/reference/android/com/google/firebase/crashlytics/CustomKeysAndValues) API to allow bulk logging of custom keys and values. ([Github PR #2443](//github.com/firebase/firebase-android-sdk/pull/2443){: .external}) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 17.3.1 -* [changed] Removed OkHttp dependency to eliminate conflicts with apps and - SDKs using incompatible versions. +- [changed] Removed OkHttp dependency to eliminate conflicts with apps and + SDKs using incompatible versions. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 17.3.0 -* [changed] Clarified debug logs for crash reports enqueued to be sent via the + +- [changed] Clarified debug logs for crash reports enqueued to be sent via the `firebase-datatransport` library. -* [fixed] Addressed an issue which could cause a `RejectedExecutionException` +- [fixed] Addressed an issue which could cause a `RejectedExecutionException` in rare cases. ([Github Issue #2013](//github.com/firebase/firebase-android-sdk/issues/2013){: .external}) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 17.2.2 -* [fixed] Fixed crash that can occur when using a built-in resource as the app + +- [fixed] Fixed crash that can occur when using a built-in resource as the app launcher icon. ([Github Issue #1935](//github.com/firebase/firebase-android-sdk/issues/1935){: .external}) -* [fixed] Fixed a bug preventing crash reports from being sent in some cases +- [fixed] Fixed a bug preventing crash reports from being sent in some cases when an app is using [crashlytics] on multiple processes. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 17.2.1 -* [fixed] Improved handling of asynchronous tasks that need to wait for + +- [fixed] Improved handling of asynchronous tasks that need to wait for completion on the main thread. ([Github PR #1739](//github.com/firebase/firebase-android-sdk/pull/1739){: .external}) -* [changed] Added an overload to the `setCrashlyticsCollectionEnabled` API to +- [changed] Added an overload to the `setCrashlyticsCollectionEnabled` API to allow for passing `null` to clear any previously set value. ([Github PR #1434](//github.com/firebase/firebase-android-sdk/pull/1434){: .external}) -* [changed] Migrated to use the [firebase_installations] service _directly_ +- [changed] Migrated to use the [firebase_installations] service _directly_ instead of using an indirect dependency via the Firebase Instance ID SDK. ([Github PR #1760](//github.com/firebase/firebase-android-sdk/pull/1760){: .external}) {% include "docs/reference/android/client/_includes/_iid-indirect-dependency-solutions.html" %} - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 17.1.1 -* [changed] To improve the reliability of submitting crash uploads on poor + +- [changed] To improve the reliability of submitting crash uploads on poor networks, changed the Transport SDK to retry connection errors ([Github Issue #1705](//github.com/firebase/firebase-android-sdk/issues/1705){: .external}) and increased the number of retries before deleting events ([Github Issue #1708](//github.com/firebase/firebase-android-sdk/issues/1708){: .external}). - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-crashlytics` library. The Kotlin extensions library has no additional updates. # 17.1.0 -* [fixed] Updated [crashlytics] integration with [firebase_analytics] to + +- [fixed] Updated [crashlytics] integration with [firebase_analytics] to include native crashes in crash-free users counts. -* [fixed] Removed a harmless, yet unexpected `FileNotFoundException` log +- [fixed] Removed a harmless, yet unexpected `FileNotFoundException` log output that printed when an optional file is unavailable. ([Github Issue #1559](//github.com/firebase/firebase-android-sdk/issues/1559#issuecomment-638387614){: .external}) - ## Kotlin -* [feature] The [firebase_crashlytics] Android library with Kotlin + +- [feature] The [firebase_crashlytics] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively includes the base `firebase-crashlytics` library. To learn more, visit the [[crashlytics] KTX documentation](/docs/reference/kotlin/com/google/firebase/crashlytics/ktx/package-summary). # 17.0.1 -* [fixed] Fixed an issue causing a `SQLiteException` when changing versions + +- [fixed] Fixed an issue causing a `SQLiteException` when changing versions of [crashlytics]. ([Github Issue #1531](https://github.com/firebase/firebase-android-sdk/issues/1531){: .external}) -* [fixed] Improved reliability of sending reports at crash time on Android API +- [fixed] Improved reliability of sending reports at crash time on Android API level 28+. # 17.0.0 -* [changed] The [firebase_crashlytics] SDK is now generally available. -* [fixed] Fixed an issue that could cause apps to crash if a crash report + +- [changed] The [firebase_crashlytics] SDK is now generally available. +- [fixed] Fixed an issue that could cause apps to crash if a crash report payload is too large (rare). -* [changed] Updated dependency on the Firebase Instance ID library to v20.1.5, +- [changed] Updated dependency on the Firebase Instance ID library to v20.1.5, which is a step towards a direct dependency on the [firebase_installations] service in a future release. # 17.0.0-beta04 -* [changed] Imposed a limit on the maximum crash report payload size. -* [fixed] Reduced crash report payload size. + +- [changed] Imposed a limit on the maximum crash report payload size. +- [fixed] Reduced crash report payload size. # 17.0.0-beta03 -* [fixed] Fixed internal bugs to improve crash analysis and grouping. -* [changed] Improved compatibility with Google Analytics. For best + +- [fixed] Fixed internal bugs to improve crash analysis and grouping. +- [changed] Improved compatibility with Google Analytics. For best performance, make sure you're using the latest versions of the [firebase_crashlytics] SDK and the Firebase SDK for Google Analytics. -* [changed] Updated remaining [crashlytics] backend API calls to prepare +- [changed] Updated remaining [crashlytics] backend API calls to prepare for Fabric sunset. # 17.0.0-beta02 -* [changed] Removed superfluous `D/FirebaseCrashlytics` prefix from logs. + +- [changed] Removed superfluous `D/FirebaseCrashlytics` prefix from logs. ([#1202](https://github.com/firebase/firebase-android-sdk/issues/1202)) -* [changed] Updated [crashlytics] backend API calls in preparation for +- [changed] Updated [crashlytics] backend API calls in preparation for Fabric sunset. -* [changed] Upgraded [firebase_analytics] integration to improve crash-free +- [changed] Upgraded [firebase_analytics] integration to improve crash-free users accuracy. For improved performance, we recommend that you upgrade to the latest version of the Firebase SDK for [firebase_analytics] with this version of [firebase_crashlytics]. # 17.0.0-beta01 + This release for [firebase_crashlytics] includes the initial beta release of the [firebase_crashlytics] SDK. @@ -468,13 +508,12 @@ The following release notes describe changes in the new SDK. - * [changed] Replaced static methods with new instance methods that are more - consistent with other Firebase SDKs and more intuitive to use. The new APIs - give your users more control over how you collect their data. - * [removed] Removed the Fabric [crashlytics] API key. Now, [crashlytics] - will always use the `google-services.json` file to associate your app with your - Firebase project. If you linked your app from Fabric, remove the Fabric API key - from your `AndroidManifest.xml` file. - * [removed] The `fabric.properties` and `crashlytics.properties` files are no - longer supported. Remove them from your app. - +- [changed] Replaced static methods with new instance methods that are more + consistent with other Firebase SDKs and more intuitive to use. The new APIs + give your users more control over how you collect their data. +- [removed] Removed the Fabric [crashlytics] API key. Now, [crashlytics] + will always use the `google-services.json` file to associate your app with your + Firebase project. If you linked your app from Fabric, remove the Fabric API key + from your `AndroidManifest.xml` file. +- [removed] The `fabric.properties` and `crashlytics.properties` files are no + longer supported. Remove them from your app. diff --git a/firebase-crashlytics/README.md b/firebase-crashlytics/README.md index 28043dd4817..d0362a507f2 100644 --- a/firebase-crashlytics/README.md +++ b/firebase-crashlytics/README.md @@ -1,4 +1,5 @@ # Firebase Crashlytics SDK + [Firebase Crashlytics](https://firebase.google.com/docs/crashlytics/) is a lightweight, realtime crash reporter that helps you track, prioritize, and fix stability issues that erode your app quality. @@ -12,6 +13,7 @@ All Gradle commands should be run from the root of this repository. `./gradlew :firebase-crashlytics:assemble` ## Running Tests + Unit tests: `./gradlew :firebase-crashlytics:test` diff --git a/firebase-database-collection/CHANGELOG.md b/firebase-database-collection/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/firebase-database-collection/CHANGELOG.md +++ b/firebase-database-collection/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/firebase-database/CHANGELOG.md b/firebase-database/CHANGELOG.md index ca14e8adaa0..113ab85a6fa 100644 --- a/firebase-database/CHANGELOG.md +++ b/firebase-database/CHANGELOG.md @@ -1,44 +1,49 @@ # Unreleased # 20.2.2 -* [changed] Internal changes to ensure alignment with other SDK releases. +- [changed] Internal changes to ensure alignment with other SDK releases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 20.2.1 -* [changed] Internal changes to ensure alignment with other SDK releases. +- [changed] Internal changes to ensure alignment with other SDK releases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 20.2.0 -* [unchanged] Updated to accommodate the release of the updated - [database] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [database] Kotlin extensions library. ## Kotlin -* [feature] Added + +- [feature] Added [`Query.values()`](/docs/reference/kotlin/com/google/firebase/database/ktx/package-summary#values) Kotlin Flows to listen for realtime updates and convert its values to a specific type. + # 20.1.0 -* [unchanged] Updated to accommodate the release of the updated -[database] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [database] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-database` library. The Kotlin extensions library has the following - additional updates: +`firebase-database` library. The Kotlin extensions library has the following +additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-database-ktx` as a transitive dependency, which exposes the @@ -46,223 +51,246 @@ The Kotlin extensions library transitively includes the updated [`Task`](https://developers.google.com/android/guides/tasks) into a Kotlin coroutine. -* [feature] Added +- [feature] Added [`Query.snapshots`](/docs/reference/kotlin/com/google/firebase/database/ktx/package-summary#snapshots) and [`Query.childEvents`](/docs/reference/kotlin/com/google/firebase/database/ktx/package-summary#childEvents) Kotlin Flows to listen to realtime events. # 20.0.6 -* [changed] Updated dependency of `play-services-basement` to its latest + +- [changed] Updated dependency of `play-services-basement` to its latest version (v18.1.0). -* [fixed] Fixed issue where `Query.get()` was propagating events to +- [fixed] Fixed issue where `Query.get()` was propagating events to listeners on unrelated queries. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 20.0.5 -* [ fixed ] `Query.get` no longer throws "Client is offline" exception when local - value is not available. Instead, it waits for a backend connection. +- [ fixed ] `Query.get` no longer throws "Client is offline" exception when local + value is not available. Instead, it waits for a backend connection. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 20.0.4 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 20.0.3 -* [fixed] Fixed a crash that prevented the SDK from connecting to the -backend if a credential refresh was unsuccesful. +- [fixed] Fixed a crash that prevented the SDK from connecting to the + backend if a credential refresh was unsuccesful. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 20.0.2 -* [fixed] The SDK can now continue to issue writes for apps that send - invalid [app_check] tokens if [app_check] enforcement is not enabled. +- [fixed] The SDK can now continue to issue writes for apps that send + invalid [app_check] tokens if [app_check] enforcement is not enabled. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 20.0.1 -* [fixed] Fixed an issue that prevented clients from connecting to the - backend when the app used [app_check] without [auth]. +- [fixed] Fixed an issue that prevented clients from connecting to the + backend when the app used [app_check] without [auth]. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 20.0.0 -* [feature] Added abuse reduction features. -* [changed] Internal changes to support dynamic feature modules. +- [feature] Added abuse reduction features. -* [changed] Internal infrastructure improvements. +- [changed] Internal changes to support dynamic feature modules. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.7.0 -* [feature] Added [`Query#startAfter()`](/docs/reference/android/com/google/firebase/database/Query#startAfter(java.lang.String,%20java.lang.String)) - and [`Query#endBefore()`](/docs/reference/android/com/google/firebase/database/Query#endBefore(java.lang.String,%20java.lang.String)) - filters to help with paginated queries. +- [feature] Added [`Query#startAfter()`]() + and [`Query#endBefore()`]() + filters to help with paginated queries. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.6.0 -* [feature] Added [`DatabaseReference#get()`](/docs/reference/android/com/google/firebase/database/DatabaseReference#get()) - and [`Query#get()`](/docs/reference/android/com/google/firebase/database/Query#get()), + +- [feature] Added [`DatabaseReference#get()`]() + and [`Query#get()`](), which return data from the server even when older data is available in the local cache. -* [fixed] Fixed a crash that occured on some Pixel devices when closing the +- [fixed] Fixed a crash that occured on some Pixel devices when closing the network connection. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.5.1 -* [fixed] Fixed a regression introduced in v19.3.0 that may cause assertion - failures, especially when persistence is enabled. +- [fixed] Fixed a regression introduced in v19.3.0 that may cause assertion + failures, especially when persistence is enabled. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.5.0 -* [feature] The SDK can now infer a default database URL even if it is omitted -in the project's configuration. +- [feature] The SDK can now infer a default database URL even if it is omitted + in the project's configuration. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.4.0 -* [feature] Added support for connecting to the Firebase Emulator Suite via - a new method, - [`FirebaseDatabase#useEmulator()`](/docs/reference/android/com/google/firebase/database/FirebaseDatabase#useEmulator(java.lang.String,%20int)). +- [feature] Added support for connecting to the Firebase Emulator Suite via + a new method, + [`FirebaseDatabase#useEmulator()`](). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.3.1 -* [changed] Added internal HTTP header to the WebChannel connection. +- [changed] Added internal HTTP header to the WebChannel connection. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.3.0 -* [feature] Added [`ServerValue.increment()`](/docs/reference/android/com/google/firebase/database/ServerValue#increment(double)) - to support atomic field value increments without transactions. +- [feature] Added [`ServerValue.increment()`]() + to support atomic field value increments without transactions. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.2.1 -* [changed] Internal changes to ensure functionality alignment with other SDK releases. +- [changed] Internal changes to ensure functionality alignment with other SDK releases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-database` library. The Kotlin extensions library has no additional updates. # 19.2.0 -* [feature] Added support for type wildcards in + +- [feature] Added support for type wildcards in [`GenericTypeIndicator`](/docs/reference/android/com/google/firebase/database/GenericTypeIndicator), expanding our custom class serialization to include classes with wildcard generics. - ## Kotlin -* [feature] The beta release of a [database] Android library with + +- [feature] The beta release of a [database] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively - includes the base `firebase-database` library. To learn more, visit the + includes the base `firebase-database` library. To learn more, visit the [[database] KTX documentation](/docs/reference/kotlin/com/google/firebase/database/ktx/package-summary). # 19.1.0 -* [feature] Added support for the [firebase_database] Emulator. To connect + +- [feature] Added support for the [firebase_database] Emulator. To connect to the emulator, specify "http://:/?ns=" as your - Database URL (via [`FirebaseDatabase.getInstance(String)`](/docs/reference/android/com/google/firebase/database/FirebaseDatabase.html#getSdkVersion())). + Database URL (via [`FirebaseDatabase.getInstance(String)`]()). Note that if you are running the [database] Emulator on "localhost" and connecting from an app that is running inside an Android Emulator, the [database] Emulator host will be "10.0.2.2" followed by its port. # 19.0.0 -* [changed] Versioned to add nullability annotations to improve the Kotlin + +- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes. # 18.0.1 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. -* [fixed] The SDK now reports the correct version number (via - [`FirebaseDatabase.getSdkVersion()`](/docs/reference/android/com/google/firebase/database/FirebaseDatabase.html#getSdkVersion()`). +- [fixed] The SDK now reports the correct version number (via + [`FirebaseDatabase.getSdkVersion()`](). # 17.0.0 -* [changed] Internal changes that rely on an updated API to obtain + +- [changed] Internal changes that rely on an updated API to obtain authentication credentials. If you use [firebase_auth], update to `firebase-auth` v17.0.0 or later to ensure functionality alignment. # 16.0.6 -* [fixed] Fixed a potential `NullPointerException` calling method + +- [fixed] Fixed a potential `NullPointerException` calling method `java.lang.String.toLowerCase`. (https://github.com/firebase/firebase-android-sdk/issues/179) # 16.0.3 -* [fixed] Fixed an initialization issue that prevented the Realtime Database -client from being initialized outside of Android's main thread. + +- [fixed] Fixed an initialization issue that prevented the Realtime Database + client from being initialized outside of Android's main thread. # 16.0.2 -* [fixed] This release includes minor fixes and improvements. + +- [fixed] This release includes minor fixes and improvements. # 16.0.1 -* [changed] Added `Nullability` annotations to all public API classes/methods. +- [changed] Added `Nullability` annotations to all public API classes/methods. diff --git a/firebase-datatransport/CHANGELOG.md b/firebase-datatransport/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/firebase-datatransport/CHANGELOG.md +++ b/firebase-datatransport/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/firebase-dynamic-links/CHANGELOG.md b/firebase-dynamic-links/CHANGELOG.md index 1e353d5f70a..379f463e582 100644 --- a/firebase-dynamic-links/CHANGELOG.md +++ b/firebase-dynamic-links/CHANGELOG.md @@ -1,16 +1,17 @@ # Unreleased # 21.1.0 -* [unchanged] Updated to accommodate the release of the updated - [ddls] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [ddls] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-dynamic-links` library. The Kotlin extensions library has the - following additional updates: +`firebase-dynamic-links` library. The Kotlin extensions library has the +following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-dynamic-links-ktx` as a transitive dependency, which exposes the @@ -19,114 +20,124 @@ The Kotlin extensions library transitively includes the updated coroutine. # 21.0.2 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-dynamic-links` library. The Kotlin extensions library has no additional updates. # 21.0.1 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-dynamic-links` library. The Kotlin extensions library has no additional updates. # 21.0.0 -* [changed] Due to its + +- [changed] Due to its [dependency on Google Play services](/docs/android/android-play-services), this SDK now requires devices and emulators to target API level 19 (KitKat) or higher and to use Android 4.4 or higher. -* [fixed] Fixed non-null annotation. +- [fixed] Fixed non-null annotation. #2336 - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-dynamic-links` library. The Kotlin extensions library has no additional updates. # 20.1.1 -* [changed] Internal infrastructure improvements. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-dynamic-links` library. The Kotlin extensions library has no additional updates. # 20.1.0 -* [feature] Added `getUtmParameters` method to `PendingDynamicLinkData`. +- [feature] Added `getUtmParameters` method to `PendingDynamicLinkData`. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-dynamic-links` library. The Kotlin extensions library has no additional updates. # 20.0.0 -* [changed] Internal infrastructure improvements. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-dynamic-links` library. The Kotlin extensions library has no additional updates. # 19.1.1 -* [changed] Updated to support improvements in the KTX library (see below). +- [changed] Updated to support improvements in the KTX library (see below). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library and has the following additional updates: -* [feature] Added API support for destructuring of +- [feature] Added API support for destructuring of [`ShortDynamicLink`](/docs/reference/kotlin/com/google/firebase/dynamiclinks/ShortDynamicLink) and [`PendingDynamicLinkData`](/docs/reference/kotlin/com/google/firebase/dynamiclinks/PendingDynamicLinkData). # 19.1.0 -* [feature] Added new getter methods to + +- [feature] Added new getter methods to [`DynamicLink.Builder`](//firebase.google.com/docs/reference/android/com/google/firebase/dynamiclinks/DynamicLink.Builder) to improve Kotlin interop. - ## Kotlin -* [feature] The beta release of a [ddls] Android library with + +- [feature] The beta release of a [ddls] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively includes the base `firebase-dynamic-links` library. To learn more, visit the [[ddls] KTX documentation](/docs/reference/kotlin/com/google/firebase/dynamiclinks/ktx/package-summary). # 19.0.0 -* [changed] Versioned to add nullability annotations to improve the Kotlin + +- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes. # 16.2.0 -* [changed] Refactored code to ensure functionality alignment with other + +- [changed] Refactored code to ensure functionality alignment with other updated Firebase libraries. -* [changed] Updated minSdkVersion to API level 16. +- [changed] Updated minSdkVersion to API level 16. # 16.1.7 -* [changed] Internal refactor. -# 16.1.3 -* [fixed] Fixed an issue that caused short link creation to fail when creating -links through `FirebaseDynamicLinks.getInstance().createDynamicLink().buildShortDynamicLink()` -using Google Play Services 13.2.80 and FDL SDK 16.1.0. The issue only occurred -when creating shortening links from parameters, links created using -preconstructed long links from `setLongLink()` were unaffected. This fix also -addresses issues in newer versions of Google Play Services. +- [changed] Internal refactor. +# 16.1.3 +- [fixed] Fixed an issue that caused short link creation to fail when creating + links through `FirebaseDynamicLinks.getInstance().createDynamicLink().buildShortDynamicLink()` + using Google Play Services 13.2.80 and FDL SDK 16.1.0. The issue only occurred + when creating shortening links from parameters, links created using + preconstructed long links from `setLongLink()` were unaffected. This fix also + addresses issues in newer versions of Google Play Services. diff --git a/firebase-firestore/CHANGELOG.md b/firebase-firestore/CHANGELOG.md index 5f944dd015c..87a24f21800 100644 --- a/firebase-firestore/CHANGELOG.md +++ b/firebase-firestore/CHANGELOG.md @@ -1,57 +1,62 @@ # Unreleased -* [fixed] Implement equals method on Filter class. [#5210](//github.com/firebase/firebase-android-sdk/issues/5210) + +- [fixed] Implement equals method on Filter class. [#5210](//github.com/firebase/firebase-android-sdk/issues/5210) # 24.7.0 -* [feature] Expose MultiDb support in API. [#4015](//github.com/firebase/firebase-android-sdk/issues/4015) -* [fixed] Fixed a thread interference issue that may lead to a ConcurrentModificationException. - (GitHub [#5091](//github.com/firebase/firebase-android-sdk/issues/5091){: .external}) +- [feature] Expose MultiDb support in API. [#4015](//github.com/firebase/firebase-android-sdk/issues/4015) +- [fixed] Fixed a thread interference issue that may lead to a ConcurrentModificationException. + (GitHub [#5091](//github.com/firebase/firebase-android-sdk/issues/5091){: .external}) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.6.1 -* [feature] Implemented an optimization in the local cache synchronization logic that reduces the number of billed document reads when documents were deleted on the server while the client was not actively listening to the query (e.g. while the client was offline). (GitHub [#4982](//github.com/firebase/firebase-android-sdk/pull/4982){: .external}) +- [feature] Implemented an optimization in the local cache synchronization logic that reduces the number of billed document reads when documents were deleted on the server while the client was not actively listening to the query (e.g. while the client was offline). (GitHub [#4982](//github.com/firebase/firebase-android-sdk/pull/4982){: .external}) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.6.0 -* [fixed] Fixed stack overflow caused by deeply nested server timestamps. + +- [fixed] Fixed stack overflow caused by deeply nested server timestamps. (GitHub [#4702](//github.com/firebase/firebase-android-sdk/issues/4702){: .external}) -* [feature] Added new - [cache config APIs](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestoreSettings.Builder#setLocalCacheSettings(com.google.firebase.firestore.LocalCacheSettings)) +- [feature] Added new + [cache config APIs]() to customize the SDK's cache setup. -* [feature] Added +- [feature] Added [LRU garbage collector](/docs/reference/android/com/google/firebase/firestore/MemoryLruGcSettings) to the SDK's memory cache. -* [deprecated] Deprecated the following APIs from +- [deprecated] Deprecated the following APIs from [`FirebaseFirestoreSettings`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestoreSettings):
`isPersistenceEnabled` and `getCacheSizeBytes`. -* [deprecated] Deprecated the following APIs from - [`FirebaseFirestoreSettings.Builder`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestoreSettings.Builder#setLocalCacheSettings(com.google.firebase.firestore.LocalCacheSettings)):
+- [deprecated] Deprecated the following APIs from + [`FirebaseFirestoreSettings.Builder`]():
`isPersistenceEnabled`, `getCacheSizeBytes`, `setPersistenceEnabled`, and `setCacheSizeBytes`. -* [changed] Internal changes to ensure alignment with other SDK releases. - +- [changed] Internal changes to ensure alignment with other SDK releases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.5.0 -* [fixed] Fixed stack overflow caused by deeply nested server timestamps. - (GitHub [#4702](//github.com/firebase/firebase-android-sdk/issues/4702){: .external}) +- [fixed] Fixed stack overflow caused by deeply nested server timestamps. + (GitHub [#4702](//github.com/firebase/firebase-android-sdk/issues/4702){: .external}) ## Kotlin -* [feature] Added + +- [feature] Added [`Query.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects) and [`DocumentReference.dataObjects()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#dataObjects_1) @@ -59,79 +64,85 @@ updates. specific type. # 24.4.5 -* [feature] Added support for disjunctions in queries (`OR` queries). +- [feature] Added support for disjunctions in queries (`OR` queries). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.4.4 -* [changed] Relaxed certain query validations performed by the SDK + +- [changed] Relaxed certain query validations performed by the SDK ([GitHub Issue #4231](//github.com/firebase/firebase-android-sdk/issues/4231)). -* [changed] Updated gRPC to 1.52.1, and updated JavaLite, protoc, and +- [changed] Updated gRPC to 1.52.1, and updated JavaLite, protoc, and protobuf-java-util to 3.21.11. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.4.3 -* [fixed] Fixed a potential high-memory usage issue. -* [fixed] Fixed an issue that stopped some performance optimization from being - applied. +- [fixed] Fixed a potential high-memory usage issue. +- [fixed] Fixed an issue that stopped some performance optimization from being + applied. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.4.2 -* [fixed] Fixed an issue that stopped some performance optimization from being - applied. +- [fixed] Fixed an issue that stopped some performance optimization from being + applied. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.4.1 -* [fixed] Fix `FAILED_PRECONDITION` when writing to a deleted document in a + +- [fixed] Fix `FAILED_PRECONDITION` when writing to a deleted document in a transaction. (#5871) -* [fixed] Fixed [firestore] failing to raise initial snapshot from an empty +- [fixed] Fixed [firestore] failing to raise initial snapshot from an empty local cache result. (#4207) -* [fixed] Removed invalid suggestions to use `GenericTypeIndicator` from +- [fixed] Removed invalid suggestions to use `GenericTypeIndicator` from error messages. (#222) -* [changed] Updated dependency of `io.grpc.*` to its latest version +- [changed] Updated dependency of `io.grpc.*` to its latest version (v1.50.2). - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.4.0 -* [feature] Added - [`Query.count()`](/docs/reference/android/com/google/firebase/firestore/Query#count()), + +- [feature] Added + [`Query.count()`](), which fetches the number of documents in the result set without actually downloading the documents. - ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-firestore` library. The Kotlin extensions library has the following - additional updates: +`firebase-firestore` library. The Kotlin extensions library has the following +additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-firestore-ktx` as a transitive dependency, which exposes the @@ -140,680 +151,737 @@ The Kotlin extensions library transitively includes the updated coroutine. # 24.3.1 -* [changed] Updated dependency of `io.grpc.*` to its latest - version (v1.48.1). +- [changed] Updated dependency of `io.grpc.*` to its latest + version (v1.48.1). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. # 24.3.0 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library also has the following additional updates: -* [feature] Added +- [feature] Added [`Query.snapshots()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#snapshots_1) and [`DocumentReference.snapshots()`](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary#snapshots) Kotlin Flows to listen for realtime updates. # 24.2.2 -* [fixed] Fixed an issue in `waitForPendingWrites()` that could lead to a - `NullPointerException`. +- [fixed] Fixed an issue in `waitForPendingWrites()` that could lead to a + `NullPointerException`. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.2.1 -* [changed] Internal refactor and test improvements. +- [changed] Internal refactor and test improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.2.0 -* [feature] Added customization support for - [`FirebaseFirestore.runTransaction`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#runTransaction(com.google.firebase.firestore.Transaction.Function%3CTResult%3E)). +- [feature] Added customization support for + [`FirebaseFirestore.runTransaction`](). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.1.2 -* [fixed] Fixed an issue where patching multiple fields shadows each other. - (#3528). +- [fixed] Fixed an issue where patching multiple fields shadows each other. + (#3528). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.1.1 -* [fixed] Fixed an issue in the beta version of the index engine that might + +- [fixed] Fixed an issue in the beta version of the index engine that might cause [firestore] to exclude document results for limit queries with local modifications. -* [changed] [firestore] can now serialize objects with `android.net.Uri`s. - +- [changed] [firestore] can now serialize objects with `android.net.Uri`s. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.1.0 -* [feature] Added beta support for indexed query execution. You can + +- [feature] Added beta support for indexed query execution. You can enable indexes by invoking `FirebaseFirestore.setIndexConfiguration()` with the JSON index definition exported by the [firebase_cli]. Queries against the cache are executed using an index once the asynchronous index generation completes. -* [fixed] Fixed missing document fields issue with offline overlays. +- [fixed] Fixed missing document fields issue with offline overlays. (#3528). - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.0.2 -* [fixed] Fixed a [firebase_app_check] issue that caused [firestore] + +- [fixed] Fixed a [firebase_app_check] issue that caused [firestore] listeners to stop working and receive a `Permission Denied` error. This issue only occurred if the [app_check] expiration time was set to under an hour. -* [fixed] Fixed a potential problem during the shutdown of [firestore] that +- [fixed] Fixed a potential problem during the shutdown of [firestore] that prevented the shutdown from proceeding if a network connection was opened right before. -* [fixed] Fixed an NPE issue where mutations with multiple documents were not +- [fixed] Fixed an NPE issue where mutations with multiple documents were not handled correctly during previous mutation acknowledgement. (#3490). -* [changed] Queries are now sent to the backend before the SDK starts local +- [changed] Queries are now sent to the backend before the SDK starts local processing, which reduces overall query latency. -* [changed] Updated dependencies of `play-services-basement`, +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.0.1 -* [changed] Optimized performance for offline usage. -* [changed] Optimized performance for queries with collections that contain - subcollections. +- [changed] Optimized performance for offline usage. +- [changed] Optimized performance for queries with collections that contain + subcollections. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 24.0.0 -* [changed] This SDK now requires devices and emulators to target API level + +- [changed] This SDK now requires devices and emulators to target API level 19 (KitKat) or higher and to use Android 4.4 or higher. This is due to an update in its gRPC dependency version and to align with requirements of other Firebase libraries. -* [feature] Added support for [firebase_app_check]. - +- [feature] Added support for [firebase_app_check]. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 23.0.4 -* [fixed] Fixed an issue where some fields were missed when copying in the - `FirebaseFirestoreSettings.Builder` copy constructor. +- [fixed] Fixed an issue where some fields were missed when copying in the + `FirebaseFirestoreSettings.Builder` copy constructor. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 23.0.3 -* [fixed] Fixed an issue that was causing failures when a data bundle with - multi-byte Unicode characters was loaded. +- [fixed] Fixed an issue that was causing failures when a data bundle with + multi-byte Unicode characters was loaded. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 23.0.2 -* [changed] Improved Firestore's network condition detection. +- [changed] Improved Firestore's network condition detection. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 23.0.1 -* [changed] The SDK now tries to immediately establish a connection to the - backend when the app enters the foreground. +- [changed] The SDK now tries to immediately establish a connection to the + backend when the app enters the foreground. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 23.0.0 -* [changed] Internal infrastructure improvements. -* [changed] Internal changes to support dynamic feature modules. +- [changed] Internal infrastructure improvements. +- [changed] Internal changes to support dynamic feature modules. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 22.1.2 -* [changed] Internal changes in preparation for future support of - dynamic feature modules. +- [changed] Internal changes in preparation for future support of + dynamic feature modules. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 22.1.1 -* [fixed] Fixed an issue that dropped the limit for queries loaded from + +- [fixed] Fixed an issue that dropped the limit for queries loaded from [firestore] bundles that were generated by the NodeJS SDK. -* [fixed] Fixed a bug where local cache inconsistencies were unnecessarily +- [fixed] Fixed a bug where local cache inconsistencies were unnecessarily being resolved, causing the `Task` objects returned from `get()` invocations to never complete. #2404 - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 22.1.0 -* [feature] Added support for [firestore] bundles via - [`FirebaseFirestore.loadBundle()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#loadBundle(java.nio.ByteBuffer)) + +- [feature] Added support for [firestore] bundles via + [`FirebaseFirestore.loadBundle()`]() and - [`FirebaseFirestore.getNamedQuery()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#getNamedQuery(java.lang.String)). + [`FirebaseFirestore.getNamedQuery()`](). Bundles contain pre-packaged data produced with the Firebase Admin Node.js SDK and can be used to populate the cache for [firestore] without the need to read documents from the backend. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 22.0.2 -* [changed] A write to a document that contains `FieldValue` transforms is no + +- [changed] A write to a document that contains `FieldValue` transforms is no longer split into two separate operations. This reduces the number of writes that the backend performs and allows each `WriteBatch` to hold 500 writes regardless of how many `FieldValue` transformations are attached. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 22.0.1 -* [changed] Removed excess validation of null and NaN values in query filters. + +- [changed] Removed excess validation of null and NaN values in query filters. This more closely aligns the SDK with the [firestore] backend, which has always accepted null and NaN for all operators. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 22.0.0 -* [changed] Removed the deprecated `timestampsInSnapshotsEnabled` setting. + +- [changed] Removed the deprecated `timestampsInSnapshotsEnabled` setting. Any timestamp in a [firestore] document is now returned as a `Timestamp`. To convert `Timestamp` classes to `java.util.Date`, use - [`Timestamp.toDate()`](/docs/reference/android/com/google/firebase/Timestamp#toDate()). - + [`Timestamp.toDate()`](). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.7.1 -* [changed] Added new internal HTTP headers to the gRPC connection. +- [changed] Added new internal HTTP headers to the gRPC connection. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.7.0 -* [feature] Added - [`Query.whereNotIn()`](/docs/reference/android/com/google/firebase/firestore/Query#whereNotIn(java.lang.String,%20java.util.List)) + +- [feature] Added + [`Query.whereNotIn()`](>) and - [`Query.whereNotEqualTo()`](/docs/reference/android/com/google/firebase/firestore/Query#whereNotEqualTo(java.lang.String,%20java.lang.Object)) + [`Query.whereNotEqualTo()`]() query operators. - - * `Query.whereNotIn()` finds documents where a specified field's value is + + - `Query.whereNotIn()` finds documents where a specified field's value is not in a specified array. - * `Query.whereNotEqualTo()` finds documents where a specified field's value + - `Query.whereNotEqualTo()` finds documents where a specified field's value does not equal the specified value. Neither query operator finds documents where the specified field isn't present. -* [fixed] Fixed an issue that caused poor performance for queries that - filtered results using nested array values. +- [fixed] Fixed an issue that caused poor performance for queries that + filtered results using nested array values. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.6.0 -* [fixed] Removed a delay that may have prevented [firestore] from + +- [fixed] Removed a delay that may have prevented [firestore] from immediately reestablishing a network connection if a connectivity change occurred while the app was in the background. -* [fixed] Fixed an issue that may have prevented the client from connecting +- [fixed] Fixed an issue that may have prevented the client from connecting to the backend immediately after a user signed in. -* [feature] Added support for connecting to the Firebase Emulator Suite via +- [feature] Added support for connecting to the Firebase Emulator Suite via a new method, - [`FirebaseFirestore#useEmulator()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#useEmulator(java.lang.String,%20int)). - + [`FirebaseFirestore#useEmulator()`](). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.5.0 -* [changed] Updated the protocol buffer dependency to the newer + +- [changed] Updated the protocol buffer dependency to the newer `protobuf-javalite` artifact. The new artifact is incompatible with the old one, so this library needed to be upgraded to avoid conflicts. No developer action is necessary. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.4.3 -* [changed] [firestore] now limits the number of concurrent document lookups - it will perform when resolving inconsistencies in the local cache. +- [changed] [firestore] now limits the number of concurrent document lookups + it will perform when resolving inconsistencies in the local cache. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.4.2 -* [changed] Removed Guava dependency from the SDK. This change is the first + +- [changed] Removed Guava dependency from the SDK. This change is the first step in eliminating crashes caused by apps that depend on the wrong flavor of Guava. ([Issue #1125](//github.com/firebase/firebase-android-sdk/issues/1125)) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.4.1 -* [fixed] Fixed a performance regression introduced by the addition of + +- [fixed] Fixed a performance regression introduced by the addition of `Query.limitToLast(n: long)` in [firestore] v21.3.1. -* [changed] Changed the in-memory representation of [firestore] documents to +- [changed] Changed the in-memory representation of [firestore] documents to reduce memory allocations and improve performance. Calls to `DocumentSnapshot.getData()` and `DocumentSnapshot.toObject()` will see the biggest improvement. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.4.0 -* [feature] Cloud Firestore previously required that every document read in a + +- [feature] Cloud Firestore previously required that every document read in a transaction must also be written. This requirement has been removed, and you can now read a document in a transaction without writing to it. -* [changed] Cloud Firestore now recovers more quickly when connections +- [changed] Cloud Firestore now recovers more quickly when connections suffering packet loss return to normal. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.3.1 -* [feature] Added `Query.limitToLast(n: long)`, which returns the last `n` - documents as the result. +- [feature] Added `Query.limitToLast(n: long)`, which returns the last `n` + documents as the result. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.3.0 -* [feature] Added `Query.whereIn()` and `Query.whereArrayContainsAny()` query + +- [feature] Added `Query.whereIn()` and `Query.whereArrayContainsAny()` query operators. `Query.whereIn()` finds documents where a specified field’s value is IN a specified array. `Query.whereArrayContainsAny()` finds documents where a specified field is an array and contains ANY element of a specified array. -* [changed] Improved the performance of repeatedly executed queries. Recently +- [changed] Improved the performance of repeatedly executed queries. Recently executed queries should see dramatic improvements. This benefit is reduced if changes accumulate while the query is inactive. Queries that use the `limit()` API may not always benefit, depending on the accumulated changes. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.2.1 -* [fixed] Fixed an issue where devices targeting Android API level 19 or + +- [fixed] Fixed an issue where devices targeting Android API level 19 or earlier would crash when they were unable to connect to [firestore]. -* [fixed] Fixed a race condition in Documents where access to `getData` and +- [fixed] Fixed a race condition in Documents where access to `getData` and `getField` on the same document in different threads could cause a `NullPointerException`. -* [fixed] Fixed a race condition that could cause a `NullPointerException` +- [fixed] Fixed a race condition that could cause a `NullPointerException` during client initialization. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.2.0 -* [feature] Added an [`addSnapshotsInSyncListener()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#addSnapshotsInSyncListener(java.lang.Runnable)) method to + +- [feature] Added an [`addSnapshotsInSyncListener()`]() method to `FirebaseFirestore` that notifies you when all your snapshot listeners are in sync with each other. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.1.1 -* [fixed] Addressed a regression in v21.1.0 that caused the crash: "Cannot add - document to the RemoteDocumentCache with a read time of zero". +- [fixed] Addressed a regression in v21.1.0 that caused the crash: "Cannot add + document to the RemoteDocumentCache with a read time of zero". ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.1.0 + Warning: We have received reports that this **v21.1.0 release** of the Firebase Android SDK for [firestore] can trigger an uncaught exception. Make sure to update to the next version of the Cloud Firestore SDK to get the fix. -* [feature] Added a - [`FirebaseFirestore.terminate()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#terminate()) +- [feature] Added a + [`FirebaseFirestore.terminate()`]() method which terminates the instance, releasing any held resources. Once it completes, you can optionally call `clearPersistence()` to wipe persisted [firestore] data from disk. -* [feature] Added a - [`FirebaseFirestore.waitForPendingWrites()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#waitForPendingWrites()) +- [feature] Added a + [`FirebaseFirestore.waitForPendingWrites()`]() method which allows users to wait on a promise that resolves when all pending writes are acknowledged by the [firestore] backend. -* [changed] Transactions now perform exponential backoff before retrying. +- [changed] Transactions now perform exponential backoff before retrying. This means transactions on highly contended documents are more likely to succeed. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 21.0.0 -* [changed] Transactions are now more flexible. Some sequences of operations + +- [changed] Transactions are now more flexible. Some sequences of operations that were previously incorrectly disallowed are now allowed. For example, after reading a document that doesn't exist, you can now set it multiple times successfully in a transaction. -* [fixed] Fixed an issue where query results were temporarily missing +- [fixed] Fixed an issue where query results were temporarily missing documents that previously had not matched but had been updated to now match the query. Refer to this [GitHub issue](https://github.com/firebase/firebase-android-sdk/issues/155) for more details. -* [changed] Added nullability annotations to improve the Kotlin developer +- [changed] Added nullability annotations to improve the Kotlin developer experience. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 20.2.0 -* [feature] Added a `@DocumentId` annotation which can be used on a + +- [feature] Added a `@DocumentId` annotation which can be used on a `DocumentReference` or `String` property in a POJO to indicate that the SDK should automatically populate it with the document's ID. -* [fixed] Fixed an internal assertion that was triggered when an update with +- [fixed] Fixed an internal assertion that was triggered when an update with a `FieldValue.serverTimestamp()` and an update with a `FieldValue.increment()` were pending for the same document. Refer to this [GitHub issue](https://github.com/firebase/firebase-android-sdk/issues/491) for more details. -* [changed] Improved performance of queries with large result sets. -* [changed] Improved performance for queries with filters that only return a +- [changed] Improved performance of queries with large result sets. +- [changed] Improved performance for queries with filters that only return a small subset of the documents in a collection. -* [changed] Instead of failing silently, [firestore] now crashes the client +- [changed] Instead of failing silently, [firestore] now crashes the client app if it fails to load SSL Ciphers. To avoid these crashes, you must bundle Conscrypt to support non-GMSCore devices on Android API level 19 (KitKat) or earlier (for more information, refer to [TLS on Android](https://github.com/grpc/grpc-java/blob/master/SECURITY.md#tls-on-android)). - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 20.1.0 -* [changed] SSL and gRPC initialization now happens on a separate thread, + +- [changed] SSL and gRPC initialization now happens on a separate thread, which reduces the time taken to produce the first query result. -* [feature] Added `clearPersistence()`, which clears the persistent storage +- [feature] Added `clearPersistence()`, which clears the persistent storage including pending writes and cached documents. This is intended to help write reliable tests. Refer to this [GitHub issue](https://github.com/firebase/firebase-js-sdk/issues/449) for more details. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 19.0.2 -* [fixed] Updated gRPC to 1.21.0. A bug in the prior version would + +- [fixed] Updated gRPC to 1.21.0. A bug in the prior version would occasionally cause a crash if a network state change occurred concurrently with an RPC. Refer to [GitHub issue #428](https://github.com/firebase/firebase-android-sdk/issues/428) for more details. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 19.0.1 -* [fixed] Fixed an issue that prevented schema migrations for clients with + +- [fixed] Fixed an issue that prevented schema migrations for clients with large offline datasets. Refer to this [GitHub issue](https://github.com/firebase/firebase-android-sdk/issues/370) for more details. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 19.0.0 -* [feature] You can now query across all collections in your database with a + +- [feature] You can now query across all collections in your database with a given collection ID using the [`FirebaseFirestore.collectionGroup()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#collectionGroup) method. -* [changed] The garbage collection process for on-disk persistence that +- [changed] The garbage collection process for on-disk persistence that removes older documents is now enabled by default. The SDK will attempt to periodically clean up older, unused documents once the on-disk cache passes a threshold size (default: 100 MB). See [Configure cache size](/docs/firestore/manage-data/enable-offline#configure_cache_size) for details on how to configure this. -* [changed] Internal changes that rely on an updated API to obtain +- [changed] Internal changes that rely on an updated API to obtain authentication credentials. If you use [firebase_auth], update to `firebase-auth` v17.0.0 or later to ensure functionality alignment. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-firestore` library. The Kotlin extensions library has no additional updates. # 18.2.0 -* [unchanged] No changes to the base `firebase-firestore` library. +- [unchanged] No changes to the base `firebase-firestore` library. ## Kotlin -* [feature] The beta release of a [firestore] Android library with Kotlin + +- [feature] The beta release of a [firestore] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively - includes the base `firebase-firestore` library. To learn more, visit the + includes the base `firebase-firestore` library. To learn more, visit the [[firestore] KTX documentation](/docs/reference/kotlin/com/google/firebase/firestore/ktx/package-summary). # 18.2.0 -* [feature] Added [`FieldValue.increment()`](/docs/reference/android/com/google/firebase/firestore/FieldValue#increment(double)), + +- [feature] Added [`FieldValue.increment()`](), which can be used in `update()` and `set(..., SetOptions.merge())` to increment or decrement numeric field values safely without transactions. -* [feature] Added functional interface [`FirebaseFirestore.runBatch()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#runBatch( com.google.firebase.firestore.WriteBatch.Function)), - similar to [`FirebaseFirestore.runTransaction()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#runTransaction(com.google.firebase.firestore.Transaction.Function%3CTResult%3E )), +- [feature] Added functional interface [`FirebaseFirestore.runBatch()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestore#runBatch( com.google.firebase.firestore.WriteBatch.Function)), + similar to [`FirebaseFirestore.runTransaction()`](), which allows a developer to focus on the mutations of the batch rather than on creating and committing the batch. -* [changed] Prepared the persistence layer to support collection group +- [changed] Prepared the persistence layer to support collection group queries. While this feature is not yet available, all schema changes are included in this release. -* [changed] Added `@RestrictTo` annotations to discourage the use of APIs that +- [changed] Added `@RestrictTo` annotations to discourage the use of APIs that are not public. This affects internal APIs that were previously obfuscated and are not mentioned in our documentation. -* [changed] Improved error messages for certain Number types that are not +- [changed] Improved error messages for certain Number types that are not supported by our serialization layer. # 18.1.0 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. -* [fixed] Fixed calculation of SQLite database size on Android 9 Pie devices. +- [fixed] Fixed calculation of SQLite database size on Android 9 Pie devices. On these devices, the previous method sometimes incorrectly calculated the size by a few MBs, potentially delaying garbage collection. # 18.0.1 -* [fixed] Fixed an issue where [firestore] would crash if handling write + +- [fixed] Fixed an issue where [firestore] would crash if handling write batches larger than 2 MB in size. -* [changed] [firestore] now recovers more quickly from long periods without +- [changed] [firestore] now recovers more quickly from long periods without network access. # 18.0.0 -* [changed] The `timestampsInSnapshotsEnabled` setting is now enabled by + +- [changed] The `timestampsInSnapshotsEnabled` setting is now enabled by default. Timestamp fields that read from a `DocumentSnapshot` are now returned as `Timestamp` objects instead of `Date` objects. This is a breaking change; developers must update any code that expects to receive a `Date` object. See - [`FirebaseFirestoreSettings.Builder.setTimestampsInSnapshotsEnabled()`](/docs/reference/android/com/google/firebase/firestore/FirebaseFirestoreSettings.Builder.html#setTimestampsInSnapshotsEnabled(boolean)) + [`FirebaseFirestoreSettings.Builder.setTimestampsInSnapshotsEnabled()`]() for more details. -* [feature] Custom objects (POJOs) can now be passed in several ways: as a +- [feature] Custom objects (POJOs) can now be passed in several ways: as a field value in `update()`, within `Map<>` objects passed to `set()`, in array transform operations, and in query filters. -* [feature] `DocumentSnapshot.get()` now supports retrieving fields as custom +- [feature] `DocumentSnapshot.get()` now supports retrieving fields as custom objects (POJOs) by passing a `Class` instance, e.g., `snapshot.get("field", CustomType.class)`. -* [fixed] Fixed an issue where if an app sent a write to the server, but the +- [fixed] Fixed an issue where if an app sent a write to the server, but the app was shut down before a listener received the write, the app could crash. # 17.1.5 -* [changed] [firestore] now recovers more quickly from bad network states. -* [changed] Improved performance for reading large collections. -* [fixed] Offline persistence now properly records schema downgrades. This is + +- [changed] [firestore] now recovers more quickly from bad network states. +- [changed] Improved performance for reading large collections. +- [fixed] Offline persistence now properly records schema downgrades. This is a forward-looking change that allows you to safely downgrade from future SDK versions to this version (v17.1.5). You can already safely downgrade versions now depending on the source version. For example, you can safely downgrade from v17.1.4 to v17.1.2 because there are no schema changes between those - versions. Related: + versions. Related: https://github.com/firebase/firebase-android-sdk/issues/134 # 17.1.4 -* [fixed] Fixed a SQLite transaction-handling issue that occasionally masked + +- [fixed] Fixed a SQLite transaction-handling issue that occasionally masked exceptions when Firestore closed a transaction that was never started. For more information, see the [issue report in GitHub](https://github.com/firebase/firebase-android-sdk/issues/115). -* [fixed] Fixed a race condition that caused a `SQLiteDatabaseLockedException` +- [fixed] Fixed a race condition that caused a `SQLiteDatabaseLockedException` when an app attempted to access the SQLite database from multiple threads. # 17.1.2 -* [changed] Changed how the SDK handles locally-updated documents while syncing those updates with Cloud Firestore servers. This can lead to slight behavior changes and may affect the [`SnapshotMetadata.hasPendingWrites()`](/docs/reference/android/com/google/firebase/firestore/SnapshotMetadata.html#hasPendingWrites()) metadata flag. -* [changed] Eliminated superfluous update events for locally cached documents that are known to lag behind the server version. Instead, the SDK buffers these events until the client has caught up with the server. + +- [changed] Changed how the SDK handles locally-updated documents while syncing those updates with Cloud Firestore servers. This can lead to slight behavior changes and may affect the [`SnapshotMetadata.hasPendingWrites()`]() metadata flag. +- [changed] Eliminated superfluous update events for locally cached documents that are known to lag behind the server version. Instead, the SDK buffers these events until the client has caught up with the server. # 17.1.1 -* [fixed] Fixed an issue where the first `get()` call made after being offline could incorrectly return cached data without attempting to reach the backend. -* [changed] Changed `get()` to only make one attempt to reach the backend before returning cached data, potentially reducing delays while offline. -* [fixed] Fixed an issue that caused Firebase to drop empty objects from calls to `set(..., SetOptions.merge())`. -* [fixed] Updated printf-style templates to ensure that they're compile time constants. Previously, some were influenced by error messages. When those error messages contained `%p` or other, related tokens, `String.format()` would throw an exception. -* [changed] Some SDK errors that represent common mistakes, like permission errors or missing indexes, are automatically logged as warnings in addition to being surfaced via the API. + +- [fixed] Fixed an issue where the first `get()` call made after being offline could incorrectly return cached data without attempting to reach the backend. +- [changed] Changed `get()` to only make one attempt to reach the backend before returning cached data, potentially reducing delays while offline. +- [fixed] Fixed an issue that caused Firebase to drop empty objects from calls to `set(..., SetOptions.merge())`. +- [fixed] Updated printf-style templates to ensure that they're compile time constants. Previously, some were influenced by error messages. When those error messages contained `%p` or other, related tokens, `String.format()` would throw an exception. +- [changed] Some SDK errors that represent common mistakes, like permission errors or missing indexes, are automatically logged as warnings in addition to being surfaced via the API. # 17.1.0 -* [fixed] Corrected an issue with methods in the Cloud Firestore v17.0.5 release. To avoid potential errors, don't use v17.0.5. + +- [fixed] Corrected an issue with methods in the Cloud Firestore v17.0.5 release. To avoid potential errors, don't use v17.0.5. # 17.0.5 -* [feature] Added [`FieldValue.arrayUnion()`](/docs/reference/android/com/google/firebase/firestore/FieldValue.html#arrayUnion(Object...)) and [`FieldValue.arrayRemove()`](/docs/reference/android/com/google/firebase/firestore/FieldValue.html#arrayRemove(Object...)) to atomically add and remove elements from an array field in a document. -* [feature] Added [`Query.whereArrayContains()`](/docs/reference/android/com/google/firebase/firestore/Query.html#whereArrayContains(com.google.firebase.firestore.FieldPath, java.lang.Object)) query operator to find documents where an array field contains a specific element. -* [changed] Improved offline performance with many outstanding writes. -* [fixed] Firestore will now recover from auth token expiration when the system clock is wrong. + +- [feature] Added [`FieldValue.arrayUnion()`]() and [`FieldValue.arrayRemove()`]() to atomically add and remove elements from an array field in a document. +- [feature] Added [`Query.whereArrayContains()`](/docs/reference/android/com/google/firebase/firestore/Query.html#whereArrayContains(com.google.firebase.firestore.FieldPath, java.lang.Object)) query operator to find documents where an array field contains a specific element. +- [changed] Improved offline performance with many outstanding writes. +- [fixed] Firestore will now recover from auth token expiration when the system clock is wrong. # 17.0.4 -* [fixed] Fixed an issue where queries returned fewer results than they + +- [fixed] Fixed an issue where queries returned fewer results than they should. The issue related to [improper caching](https://github.com/firebase/firebase-ios-sdk/issues/1548), so clients may use extra bandwidth the first time they launch with this version of the SDK, as they re-download cleared cached data. # 17.0.3 -* [changed] The [`Timestamp`](/docs/reference/android/com/google/firebase/Timestamp) class now implements [`Parcelable`](//developer.android.com/reference/android/os/Parcelable) in addition to [`Comparable`](//developer.android.com/reference/java/lang/Comparable). + +- [changed] The [`Timestamp`](/docs/reference/android/com/google/firebase/Timestamp) class now implements [`Parcelable`](//developer.android.com/reference/android/os/Parcelable) in addition to [`Comparable`](//developer.android.com/reference/java/lang/Comparable). # 17.0.2 -* [changed] gRPC requirement updated from 1.8.0 to 1.12.0. This allows quicker + +- [changed] gRPC requirement updated from 1.8.0 to 1.12.0. This allows quicker failover between Wi-Fi and cellular networks. # 17.0.1 -* [fixed] Fixed an issue where `set()` didn't correctly respect - [`SetOptions.mergeFields()`](/docs/reference/android/com/google/firebase/firestore/SetOptions.html#mergeFields(java.util.List)) + +- [fixed] Fixed an issue where `set()` didn't correctly respect + [`SetOptions.mergeFields()`](>) for data containing - [`FieldValue.delete()`](/docs/reference/android/com/google/firebase/firestore/FieldValue.html#delete()) + [`FieldValue.delete()`]() or - [`FieldValue.serverTimestamp()`](/docs/reference/android/com/google/firebase/firestore/FieldValue.html#serverTimestamp()) + [`FieldValue.serverTimestamp()`]() values. - diff --git a/firebase-firestore/README.md b/firebase-firestore/README.md index 96e65172615..8df2d3adfbd 100644 --- a/firebase-firestore/README.md +++ b/firebase-firestore/README.md @@ -17,6 +17,7 @@ from this folder). See the README.md in the source root for instructions on publishing/testing Cloud Firestore. To build Cloud Firestore, from the source root run: + ```bash ./gradlew :firebase-firestore:assembleRelease ``` @@ -24,6 +25,7 @@ To build Cloud Firestore, from the source root run: ## Unit Testing To run unit tests for Cloud Firestore, from the source root run: + ```bash ./gradlew :firebase-firestore:check ``` @@ -48,21 +50,21 @@ By default, integration tests run against the Firestore emulator. The integration tests require that the Firestore emulator is running on port 8080, which is default when running it via CLI. - * [Install the Firebase CLI](https://firebase.google.com/docs/cli/). - ``` - npm install -g firebase-tools - ``` - * [Install the Firestore - emulator](https://firebase.google.com/docs/firestore/security/test-rules-emulator#install_the_emulator). - ``` - firebase setup:emulators:firestore - ``` - * Run the emulator - ``` - firebase emulators:start --only firestore - ``` - * Select the `Firestore Integration Tests (Firestore Emulator)` run - configuration to run all integration tests. +- [Install the Firebase CLI](https://firebase.google.com/docs/cli/). + ``` + npm install -g firebase-tools + ``` +- [Install the Firestore + emulator](https://firebase.google.com/docs/firestore/security/test-rules-emulator#install_the_emulator). + ``` + firebase setup:emulators:firestore + ``` +- Run the emulator + ``` + firebase emulators:start --only firestore + ``` +- Select the `Firestore Integration Tests (Firestore Emulator)` run + configuration to run all integration tests. To run the integration tests against prod, select `FirestoreProdIntegrationTest` run configuration. @@ -70,6 +72,7 @@ run configuration. ### Run on Local Android Emulator Then simply run: + ```bash ./gradlew :firebase-firestore:connectedCheck ``` @@ -83,6 +86,7 @@ See [here](../README.md#running-integration-tests-on-firebase-test-lab) for instructions of how to setup Firebase Test Lab for your project. Run: + ```bash ./gradlew :firebase-firestore:deviceCheck ``` @@ -90,6 +94,7 @@ Run: ## Code Formatting Run below to format Java code: + ```bash ./gradlew :firebase-firestore:googleJavaFormat ``` @@ -100,6 +105,7 @@ from within Android Studio. ## Build Local Jar of Firestore SDK Run: + ```bash ./gradlew publishAllToLocal ``` @@ -114,6 +120,7 @@ block](https://docs.gradle.org/current/userguide/declaring_repositories.html) in your app module's build.gradle. ## Misc + After importing the project into Android Studio and building successfully for the first time, Android Studio will delete the run configuration xml files in `./idea/runConfigurations`. Undo these changes with the command: diff --git a/firebase-firestore/src/androidTest/assets/conformance/README.md b/firebase-firestore/src/androidTest/assets/conformance/README.md index 364b088fc52..dd1c15d8e28 100644 --- a/firebase-firestore/src/androidTest/assets/conformance/README.md +++ b/firebase-firestore/src/androidTest/assets/conformance/README.md @@ -5,7 +5,7 @@ These tested are copied from an internal test suite The files were converted from text to binary encoding. Some files were split to reduce overall memory consumption during the test run. -The Protobuf definition is at +The Protobuf definition is at `firebase-firestore/src/proto/google/apphosting/datastore/testing/datastore_test_trace.proto`. -These tests are run as part of `:connectedCheck`. \ No newline at end of file +These tests are run as part of `:connectedCheck`. diff --git a/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/testutil/providers.md b/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/testutil/providers.md index 92301845f3e..5d538c0e1f7 100644 --- a/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/testutil/providers.md +++ b/firebase-firestore/src/androidTest/java/com/google/firebase/firestore/testutil/providers.md @@ -4,7 +4,7 @@ This file defines the interface for the `FirestoreProvider` class. An implementation of this interface is statically injected at build time. The -implementation *must* have the following name or else it will not be found: +implementation _must_ have the following name or else it will not be found: `com.google.firebase.firestore.testutil.provider.FirestoreProvider`. The provider enables the test suite to access closed-source, integration testing diff --git a/firebase-functions/CHANGELOG.md b/firebase-functions/CHANGELOG.md index d5ea8ce43a3..267055de8d1 100644 --- a/firebase-functions/CHANGELOG.md +++ b/firebase-functions/CHANGELOG.md @@ -1,55 +1,60 @@ # Unreleased # 20.3.1 -* [changed] Added support for App Check limited-use tokens in HTTPS Callable Functions. +- [changed] Added support for App Check limited-use tokens in HTTPS Callable Functions. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 20.3.0 -* [changed] Internal changes to ensure alignment with other SDK releases. +- [changed] Internal changes to ensure alignment with other SDK releases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 20.2.2 -* [changed] Moved Task continuations off the main thread. -* [changed] Internal infrastructure improvements. +- [changed] Moved Task continuations off the main thread. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 20.2.1 -* [changed] Updated dependency of `firebase-iid` to its latest - version (v21.1.0). +- [changed] Updated dependency of `firebase-iid` to its latest + version (v21.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 20.2.0 -* [unchanged] Updated to accommodate the release of the updated - [functions_client] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [functions_client] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-functions` library. The Kotlin extensions library has the following - additional updates: +`firebase-functions` library. The Kotlin extensions library has the following +additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-functions-ktx` as a transitive dependency, which exposes the @@ -58,120 +63,132 @@ The Kotlin extensions library transitively includes the updated coroutine. # 20.1.1 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 20.1.0 -* [feature] Added a new method + +- [feature] Added a new method [`getHttpsCallableFromUrl(java.net.URL)`](/docs/reference/android/com/google/firebase/functions/FirebaseFunctions#public-httpscallablereference-gethttpscallablefromurl-url-url) to create callables with URLs. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 20.0.2 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 20.0.1 -* [fixed] Fixed an issue that prevented functions from proceeding after - [app_check] failures. +- [fixed] Fixed an issue that prevented functions from proceeding after + [app_check] failures. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 20.0.0 -* [feature] Added abuse reduction features. -* [changed] Internal changes to support dynamic feature modules. +- [feature] Added abuse reduction features. +- [changed] Internal changes to support dynamic feature modules. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 19.2.0 -* [feature] Added support for custom domains, [`FirebaseFunctions#getInstance()`](/docs/reference/android/com/google/firebase/functions/FirebaseFunctions#getInstance(java.lang.String)). +- [feature] Added support for custom domains, [`FirebaseFunctions#getInstance()`](). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 19.1.0 -* [feature] Added support for connecting to the Firebase Emulator Suite via - a new method, - [`FirebaseFunctions#UseEmulator()`](/docs/reference/android/com/google/firebase/functions/FirebaseFunctions#useEmulator(java.lang.String,%20int)). -* [deprecated] Deprecated the `useFunctionsEmulator(String)` method. +- [feature] Added support for connecting to the Firebase Emulator Suite via + a new method, + [`FirebaseFunctions#UseEmulator()`](). +- [deprecated] Deprecated the `useFunctionsEmulator(String)` method. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 19.0.2 -* [changed] Internal changes to ensure functionality alignment with other SDK releases. - +- [changed] Internal changes to ensure functionality alignment with other SDK releases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-functions` library. The Kotlin extensions library has no additional updates. # 19.0.1 -* [unchanged] Updated to accommodate the release of the [functions_client] - Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the [functions_client] + Kotlin extensions library. ## Kotlin -* [feature] The beta release of a [functions_client] Android library with + +- [feature] The beta release of a [functions_client] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively - includes the base `firebase-functions` library. To learn more, visit the + includes the base `firebase-functions` library. To learn more, visit the [[cloud_functions] KTX documentation](/docs/reference/kotlin/com/google/firebase/functions/ktx/package-summary). # 19.0.0 -* [changed] Versioned to add nullability annotations to improve the Kotlin + +- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes. # 18.1.0 -* [feature] Added + +- [feature] Added [`getTimeout`](/docs/reference/android/com/google/firebase/functions/HttpsCallableReference) method to get the timeout for a callable. For more details, refer to [GitHub PR #574](//github.com/firebase/firebase-android-sdk/pull/574). # 17.0.0 -* [changed] Updated minSdkVersion to API level 16. + +- [changed] Updated minSdkVersion to API level 16. # 16.3.0 -* [changed] Changed the default timeout for callable functions to 70 seconds + +- [changed] Changed the default timeout for callable functions to 70 seconds ([#2329](//github.com/firebase/firebase-android-sdk/pull/224)). -* [feature] Added +- [feature] Added [`setTimeout`](/docs/reference/android/com/google/firebase/functions/HttpsCallableReference) and [`withTimeout`](/docs/reference/android/com/google/firebase/functions/HttpsCallableReference) @@ -179,9 +196,9 @@ updates. ([#2329](//github.com/firebase/firebase-android-sdk/pull/224)). # 16.1.0 -* [feature] `FirebaseFunctions.getInstance()` now allows passing in an -optional region to override the default "us-central1". -* [feature] New `useFunctionsEmulator` method allows testing against a local -instance of the [Cloud Functions Emulator](https://firebase.google.com/docs/functions/local-emulator). +- [feature] `FirebaseFunctions.getInstance()` now allows passing in an + optional region to override the default "us-central1". +- [feature] New `useFunctionsEmulator` method allows testing against a local + instance of the [Cloud Functions Emulator](https://firebase.google.com/docs/functions/local-emulator). diff --git a/firebase-functions/README.md b/firebase-functions/README.md index 88440485e91..7bf595f312d 100644 --- a/firebase-functions/README.md +++ b/firebase-functions/README.md @@ -5,4 +5,4 @@ Before running tests, make sure you have npm installed. It is used to run a local instance of the Cloud Functions emulator. -`../gradlew :connectedAndroidTest` \ No newline at end of file +`../gradlew :connectedAndroidTest` diff --git a/firebase-functions/src/androidTest/backend/README.md b/firebase-functions/src/androidTest/backend/README.md index 6686412bb4c..4462eb5efdc 100644 --- a/firebase-functions/src/androidTest/backend/README.md +++ b/firebase-functions/src/androidTest/backend/README.md @@ -12,4 +12,4 @@ firebase use $PROJECT_ID # build and deploy functions echo $(cd functions && npm install) firebase deploy --only functions -``` \ No newline at end of file +``` diff --git a/firebase-functions/src/androidTest/backend/functions/index.js b/firebase-functions/src/androidTest/backend/functions/index.js index fed5a371b89..03f25365a1b 100644 --- a/firebase-functions/src/androidTest/backend/functions/index.js +++ b/firebase-functions/src/androidTest/backend/functions/index.js @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -const assert = require('assert'); -const functions = require('firebase-functions'); +const assert = require("assert"); +const functions = require("firebase-functions"); exports.dataTest = functions.https.onRequest((request, response) => { assert.deepEqual(request.body, { @@ -21,76 +21,78 @@ exports.dataTest = functions.https.onRequest((request, response) => { bool: true, int: 2, long: { - value: '3', - '@type': 'type.googleapis.com/google.protobuf.Int64Value', + value: "3", + "@type": "type.googleapis.com/google.protobuf.Int64Value", }, - string: 'four', + string: "four", array: [5, 6], - 'null': null, - } + null: null, + }, }); response.send({ data: { - message: 'stub response', + message: "stub response", code: 42, long: { - value: '420', - '@type': 'type.googleapis.com/google.protobuf.Int64Value', + value: "420", + "@type": "type.googleapis.com/google.protobuf.Int64Value", }, - } + }, }); }); exports.scalarTest = functions.https.onRequest((request, response) => { - assert.deepEqual(request.body, {data: 17}); - response.send({data: 76}); + assert.deepEqual(request.body, { data: 17 }); + response.send({ data: 76 }); }); exports.tokenTest = functions.https.onRequest((request, response) => { - assert.equal(request.get('Authorization'), 'Bearer token'); - assert.deepEqual(request.body, {data: {}}); - response.send({data: {}}); + assert.equal(request.get("Authorization"), "Bearer token"); + assert.deepEqual(request.body, { data: {} }); + response.send({ data: {} }); }); exports.instanceIdTest = functions.https.onRequest((request, response) => { - assert.equal(request.get('Firebase-Instance-ID-Token'), 'iid'); - assert.deepEqual(request.body, {data: {}}); - response.send({data: {}}); + assert.equal(request.get("Firebase-Instance-ID-Token"), "iid"); + assert.deepEqual(request.body, { data: {} }); + response.send({ data: {} }); }); exports.appCheckTest = functions.https.onRequest((request, response) => { - assert.equal(request.get('X-Firebase-AppCheck'), 'appCheck'); - assert.deepEqual(request.body, {data: {}}); - response.send({data: {}}); + assert.equal(request.get("X-Firebase-AppCheck"), "appCheck"); + assert.deepEqual(request.body, { data: {} }); + response.send({ data: {} }); }); -exports.appCheckLimitedUseTest = functions.https.onRequest((request, response) => { - assert.equal(request.get('X-Firebase-AppCheck'), 'appCheck-limited-use'); - assert.deepEqual(request.body, {data: {}}); - response.send({data: {}}); -}); +exports.appCheckLimitedUseTest = functions.https.onRequest( + (request, response) => { + assert.equal(request.get("X-Firebase-AppCheck"), "appCheck-limited-use"); + assert.deepEqual(request.body, { data: {} }); + response.send({ data: {} }); + }, +); exports.nullTest = functions.https.onRequest((request, response) => { - assert.deepEqual(request.body, {data: null}); - response.send({data: null}); + assert.deepEqual(request.body, { data: null }); + response.send({ data: null }); }); exports.missingResultTest = functions.https.onRequest((request, response) => { - assert.deepEqual(request.body, {data: null}); + assert.deepEqual(request.body, { data: null }); response.send({}); }); exports.unhandledErrorTest = functions.https.onRequest((request, response) => { // Fail in a way that the client shouldn't see. - throw 'nope'; + throw "nope"; }); exports.unknownErrorTest = functions.https.onRequest((request, response) => { // Send an http error with a body with an explicit code. response.status(400).send({ error: { - status: 'THIS_IS_NOT_VALID', - message: 'this should be ignored', + status: "THIS_IS_NOT_VALID", + message: "this should be ignored", }, }); }); @@ -99,14 +101,14 @@ exports.explicitErrorTest = functions.https.onRequest((request, response) => { // Send an http error with a body with an explicit code. response.status(400).send({ error: { - status: 'OUT_OF_RANGE', - message: 'explicit nope', + status: "OUT_OF_RANGE", + message: "explicit nope", details: { start: 10, end: 20, long: { - value: '30', - '@type': 'type.googleapis.com/google.protobuf.Int64Value', + value: "30", + "@type": "type.googleapis.com/google.protobuf.Int64Value", }, }, }, @@ -120,5 +122,5 @@ exports.httpErrorTest = functions.https.onRequest((request, response) => { exports.timeoutTest = functions.https.onRequest((request, response) => { // Wait for longer than 500ms. - setTimeout(() => response.send({data: true}), 500); + setTimeout(() => response.send({ data: true }), 500); }); diff --git a/firebase-inappmessaging-display/CHANGELOG.md b/firebase-inappmessaging-display/CHANGELOG.md index e1beba9e292..56275752e29 100644 --- a/firebase-inappmessaging-display/CHANGELOG.md +++ b/firebase-inappmessaging-display/CHANGELOG.md @@ -1,56 +1,61 @@ # Unreleased -* [unchanged] Updated internal Dagger dependency. + +- [unchanged] Updated internal Dagger dependency. # 20.3.2 -* [fixed] Fixed nullpointer crash when using experiments - (GitHub [#4716](//github.com/firebase/firebase-android-sdk/issues/4716){: .external}) +- [fixed] Fixed nullpointer crash when using experiments + (GitHub [#4716](//github.com/firebase/firebase-android-sdk/issues/4716){: .external}) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 20.3.1 -* [fixed] Fixed nullpointer crash + +- [fixed] Fixed nullpointer crash ([GitHub Issue #4214](//github.com/firebase/firebase-android-sdk/issues/4214)) -* [changed] Updated gRPC to 1.52.1, and updated JavaLite, protoc, +- [changed] Updated gRPC to 1.52.1, and updated JavaLite, protoc, protobuf-java-util to 3.21.11. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 20.3.0 -* [changed] Migrated [inappmessaging] Display to use standard Firebase + +- [changed] Migrated [inappmessaging] Display to use standard Firebase executors. -* [changed] Moved Task continuations off the main thread. +- [changed] Moved Task continuations off the main thread. -* [feature] Added a new API for - [removing a dismiss listener](/docs/reference/android/com/google/firebase/inappmessaging/FirebaseInAppMessaging#removeDismissListener(com.google.firebase.inappmessaging.FirebaseInAppMessagingDismissListener)). +- [feature] Added a new API for + [removing a dismiss listener](). (GitHub [#4492](//github.com/firebase/firebase-android-sdk/issues/4492){: .external}) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 20.2.0 -* [fixed] Fixed a bug that prevented marking more than one message as - impressed. +- [fixed] Fixed a bug that prevented marking more than one message as + impressed. ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-inappmessaging-display` library. The Kotlin extensions library has - the following additional updates: +`firebase-inappmessaging-display` library. The Kotlin extensions library has +the following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-inappmessaging-display-ktx` as a transitive dependency, which @@ -59,213 +64,231 @@ The Kotlin extensions library transitively includes the updated coroutine. # 20.1.3 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 20.1.2 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 20.1.1 -* [changed] Updated the gRPC dependency version. +- [changed] Updated the gRPC dependency version. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 20.1.0 -* [changed] Migrated to Glide library for image downloading. +- [changed] Migrated to Glide library for image downloading. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 20.0.0 -* [changed] Internal infrastructure improvements. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.1.5 -* [fixed] Fixed `WindowManager$BadTokenException` when showing an in-app - message. +- [fixed] Fixed `WindowManager$BadTokenException` when showing an in-app + message. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.1.4 -* [fixed] Fixed in-app message button click not working in Android 11 - because of package visibility changes. +- [fixed] Fixed in-app message button click not working in Android 11 + because of package visibility changes. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.1.3 -* [changed] Internal changes to maintain compatibility with other Firebase - SDKs. +- [changed] Internal changes to maintain compatibility with other Firebase + SDKs. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.1.2 -* [changed] Internal changes to maintain compatibility with other Firebase - SDKs. +- [changed] Internal changes to maintain compatibility with other Firebase + SDKs. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.1.1 -* [fixed] Improved link handling on devices without any browser installed + +- [fixed] Improved link handling on devices without any browser installed or without Chrome installed. -* [feature] Added the ability to register a dismiss listener that reacts to +- [feature] Added the ability to register a dismiss listener that reacts to message dismissal. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.1.0 -* [changed] Updated the protocol buffer dependency to the newer + +- [changed] Updated the protocol buffer dependency to the newer `protobuf-javalite` artifact. The new artifact is incompatible with the old one, so this library needed to be upgraded to avoid conflicts. No developer action is necessary. - - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.0.7 -* [fixed] Improved handling of activity transitions. + +- [fixed] Improved handling of activity transitions. (GitHub [Issue #1410](//github.com/firebase/firebase-android-sdk/issues/1410) and [Issue #1092](//github.com/firebase/firebase-android-sdk/issues/1092)) -* [changed] Migrated to use the [firebase_installations] service _directly_ +- [changed] Migrated to use the [firebase_installations] service _directly_ instead of using an indirect dependency via the Firebase Instance ID SDK. {% include "docs/reference/android/client/_includes/_iid-indirect-dependency-solutions.html" %} - - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.0.6 -* [fixed] Fixed issue causing apps to become unresponsive in limited network - conditions. [GitHub Issue #1430](//github.com/firebase/firebase-android-sdk/issues/1430) +- [fixed] Fixed issue causing apps to become unresponsive in limited network + conditions. [GitHub Issue #1430](//github.com/firebase/firebase-android-sdk/issues/1430) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.0.5 -* [fixed] Fixed issue where campaigns with frequency limits were not properly - displaying multiple times. +- [fixed] Fixed issue where campaigns with frequency limits were not properly + displaying multiple times. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.0.4 -* [fixed] Fixed issue with messages not being fetched on app first open. - -* [fixed] Fixed issue with first foreground trigger not being picked up. +- [fixed] Fixed issue with messages not being fetched on app first open. +- [fixed] Fixed issue with first foreground trigger not being picked up. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.0.3 -* [changed] Internal changes to enable future SDK improvements. - +- [changed] Internal changes to enable future SDK improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging-display` library. The Kotlin extensions library has no additional updates. # 19.0.2 -* [changed] Updated version of Dagger to 2.24. -* [fixed] Bug fixes to improve SDK stability. -* [fixed] Fixed memory leak. +- [changed] Updated version of Dagger to 2.24. +- [fixed] Bug fixes to improve SDK stability. +- [fixed] Fixed memory leak. ## Kotlin -* [feature] The beta release of a [inappmessaging] Display Android library + +- [feature] The beta release of a [inappmessaging] Display Android library with Kotlin extensions is now available. The Kotlin extensions library transitively includes the base `firebase-inappmessaging-display` library. - To learn more, visit the + To learn more, visit the [[inappmessaging] Display KTX documentation](/docs/reference/kotlin/com/google/firebase/inappmessaging/display/ktx/package-summary). # 19.0.1 -* [changed] Internal changes to accommodate open-sourcing of the library and + +- [changed] Internal changes to accommodate open-sourcing of the library and to ensure functionality alignment with other SDK releases. # 19.0.0 -* [changed] Versioned to add nullability annotations to improve the Kotlin + +- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes. # 18.0.2 -* [changed] Updated to support Picasso version 2.71828. -* [fixed] Updated to send engagement metrics via [analytics]. -* [fixed] Fixed issue with callbacks triggering for Card templates. + +- [changed] Updated to support Picasso version 2.71828. +- [fixed] Updated to send engagement metrics via [analytics]. +- [fixed] Fixed issue with callbacks triggering for Card templates. # 17.2.0 -* [feature] Adds support for card in-app messages. -* [feature] Adds direct triggering (via [inappmessaging] SDK) of in-app + +- [feature] Adds support for card in-app messages. +- [feature] Adds direct triggering (via [inappmessaging] SDK) of in-app messages. # 17.1.1 -* [fixed] Fixed [firestore] and [inappmessaging] compatibility on Android + +- [fixed] Fixed [firestore] and [inappmessaging] compatibility on Android API level 19 (KitKat). The underlying issue was that [firestore] and [cloud_functions] couldn't agree on which ciphers to use; this update fixes this issue by overriding the set of ciphers that they use. Refer to @@ -273,19 +296,24 @@ additional updates. for more information. # 17.1.0 -* [feature] Adds functionality to programmatically register listeners for - updates on in-app engagement (for example, impression, click, display errors). See - [`FirebaseInAppMessaging.addClickListener()`](/docs/reference/android/com/google/firebase/inappmessaging/FirebaseInAppMessaging.addClickListener()) + +- [feature] Adds functionality to programmatically register listeners for + updates on in-app engagement (for example, impression, click, display errors). See + [`FirebaseInAppMessaging.addClickListener()`]() for more details. # 17.0.5 -* [fixed] Users with restricted API keys can now use the SDK as expected. + +- [fixed] Users with restricted API keys can now use the SDK as expected. # 17.0.3 -* [fixed] Improved caching logic, added safeguards for cache expiration, and cleaned up API surface to prepare for open sourcing. + +- [fixed] Improved caching logic, added safeguards for cache expiration, and cleaned up API surface to prepare for open sourcing. # 17.0.1 -* [fixed] Fixed an issue where [fiam] and Firestore could not be included/built into the same app, because of an obfuscation collision. + +- [fixed] Fixed an issue where [fiam] and Firestore could not be included/built into the same app, because of an obfuscation collision. # 17.0.0 -* [feature] The initial public beta release of the Firebase In-App Messaging Display SDK for Android is now available. To learn more, see the [Firebase In-App Messaging documentation](/docs/in-app-messaging). + +- [feature] The initial public beta release of the Firebase In-App Messaging Display SDK for Android is now available. To learn more, see the [Firebase In-App Messaging documentation](/docs/in-app-messaging). diff --git a/firebase-inappmessaging-display/README.md b/firebase-inappmessaging-display/README.md index 01688490e4a..ccb2b62ca44 100644 --- a/firebase-inappmessaging-display/README.md +++ b/firebase-inappmessaging-display/README.md @@ -1,18 +1,20 @@ # Firebase In-App Messaging Display SDK -[Firebase In-App Messaging](https://firebase.google.com/docs/in-app-messaging/) helps you engage -users who are actively using your app by sending them targeted and contextual messages that nudge -them to complete key in-app actions - like beating a game level, buying an item, or subscribing to + +[Firebase In-App Messaging](https://firebase.google.com/docs/in-app-messaging/) helps you engage +users who are actively using your app by sending them targeted and contextual messages that nudge +them to complete key in-app actions - like beating a game level, buying an item, or subscribing to content. -The FIAM Display SDK gives you more control over your in-app messages you send, allowing you to +The FIAM Display SDK gives you more control over your in-app messages you send, allowing you to customize typeface, colors, transitions, corner radii, and more. ## Running Tests + Unit tests: `../gradlew :firebase-inappmessaging-display:test` Integration tests, requiring a running and connected device (emulator or real): `../gradlew :firebase-inappmessaging-display:connectedAndroidTest` -The best way to test is via the fiamui-app in this repo - you can run the test, or use -Firebase Test Lab to run a series of UI tests. See fiamui-app/scripts for more details \ No newline at end of file +The best way to test is via the fiamui-app in this repo - you can run the test, or use +Firebase Test Lab to run a series of UI tests. See fiamui-app/scripts for more details diff --git a/firebase-inappmessaging/CHANGELOG.md b/firebase-inappmessaging/CHANGELOG.md index 31bad743aef..a3df53b030b 100644 --- a/firebase-inappmessaging/CHANGELOG.md +++ b/firebase-inappmessaging/CHANGELOG.md @@ -1,56 +1,61 @@ # Unreleased -* [unchanged] Updated internal Dagger dependency. + +- [unchanged] Updated internal Dagger dependency. # 20.3.2 -* [fixed] Fixed nullpointer crash when using experiments - (GitHub [#4716](//github.com/firebase/firebase-android-sdk/issues/4716){: .external}) +- [fixed] Fixed nullpointer crash when using experiments + (GitHub [#4716](//github.com/firebase/firebase-android-sdk/issues/4716){: .external}) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 20.3.1 -* [fixed] Fixed nullpointer crash + +- [fixed] Fixed nullpointer crash ([GitHub Issue #4214](//github.com/firebase/firebase-android-sdk/issues/4214)) -* [changed] Updated gRPC to 1.52.1, and updated JavaLite, protoc, +- [changed] Updated gRPC to 1.52.1, and updated JavaLite, protoc, protobuf-java-util to 3.21.11. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 20.3.0 -* [changed] Migrated [inappmessaging] to use standard Firebase executors. -* [changed] Moved Task continuations off the main thread. +- [changed] Migrated [inappmessaging] to use standard Firebase executors. -* [feature] Added a new API for - [removing a dismiss listener](/docs/reference/android/com/google/firebase/inappmessaging/FirebaseInAppMessaging#removeDismissListener(com.google.firebase.inappmessaging.FirebaseInAppMessagingDismissListener)). +- [changed] Moved Task continuations off the main thread. + +- [feature] Added a new API for + [removing a dismiss listener](). (GitHub [#4492](//github.com/firebase/firebase-android-sdk/issues/4492){: .external}) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 20.2.0 -* [fixed] Fixed a bug that prevented marking more than one message as - impressed. +- [fixed] Fixed a bug that prevented marking more than one message as + impressed. ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-inappmessaging` library. The Kotlin extensions library has the - following additional updates: +`firebase-inappmessaging` library. The Kotlin extensions library has the +following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-inappmessaging-ktx` as a transitive dependency, which exposes @@ -59,212 +64,231 @@ The Kotlin extensions library transitively includes the updated coroutine. # 20.1.3 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 20.1.2 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 20.1.1 -* [changed] Updated the gRPC dependency version. +- [changed] Updated the gRPC dependency version. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 20.1.0 -* [changed] Migrated to Glide library for image downloading. +- [changed] Migrated to Glide library for image downloading. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 20.0.0 -* [changed] Internal infrastructure improvements. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.1.5 -* [fixed] Fixed `WindowManager$BadTokenException` when showing an in-app - message. +- [fixed] Fixed `WindowManager$BadTokenException` when showing an in-app + message. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.1.4 -* [fixed] Fixed in-app message button click not working in Android 11 - because of package visibility changes. +- [fixed] Fixed in-app message button click not working in Android 11 + because of package visibility changes. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.1.3 -* [changed] Internal changes to maintain compatibility with other Firebase - SDKs. +- [changed] Internal changes to maintain compatibility with other Firebase + SDKs. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.1.2 -* [changed] Internal changes to maintain compatibility with other Firebase - SDKs. +- [changed] Internal changes to maintain compatibility with other Firebase + SDKs. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.1.1 -* [fixed] Improved link handling on devices without any browser installed + +- [fixed] Improved link handling on devices without any browser installed or without Chrome installed. -* [feature] Added the ability to register a dismiss listener that reacts to +- [feature] Added the ability to register a dismiss listener that reacts to message dismissal. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.1.0 -* [changed] Updated the protocol buffer dependency to the newer + +- [changed] Updated the protocol buffer dependency to the newer `protobuf-javalite` artifact. The new artifact is incompatible with the old one, so this library needed to be upgraded to avoid conflicts. No developer action is necessary. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.0.7 -* [fixed] Improved handling of activity transitions. + +- [fixed] Improved handling of activity transitions. (GitHub [Issue #1410](//github.com/firebase/firebase-android-sdk/issues/1410) and [Issue #1092](//github.com/firebase/firebase-android-sdk/issues/1092)) -* [changed] Migrated to use the [firebase_installations] service _directly_ +- [changed] Migrated to use the [firebase_installations] service _directly_ instead of using an indirect dependency via the Firebase Instance ID SDK. {% include "docs/reference/android/client/_includes/_iid-indirect-dependency-solutions.html" %} - - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.0.6 -* [fixed] Fixed issue causing apps to become unresponsive in limited network - conditions. [GitHub Issue #1430](//github.com/firebase/firebase-android-sdk/issues/1430) +- [fixed] Fixed issue causing apps to become unresponsive in limited network + conditions. [GitHub Issue #1430](//github.com/firebase/firebase-android-sdk/issues/1430) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.0.5 -* [fixed] Fixed issue where campaigns with frequency limits were not properly - displaying multiple times. +- [fixed] Fixed issue where campaigns with frequency limits were not properly + displaying multiple times. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.0.4 -* [fixed] Fixed issue with messages not being fetched on app first open. - -* [fixed] Fixed issue with first foreground trigger not being picked up. -* [changed] Internal migration to use the [firebase_installations] service. +- [fixed] Fixed issue with messages not being fetched on app first open. +- [fixed] Fixed issue with first foreground trigger not being picked up. +- [changed] Internal migration to use the [firebase_installations] service. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.0.3 -* [changed] Internal changes to enable future SDK improvements. - +- [changed] Internal changes to enable future SDK improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-inappmessaging` library. The Kotlin extensions library has no additional updates. # 19.0.2 -* [changed] Updated version of Dagger to 2.24. -* [changed] Made info messages more clear in logcat. +- [changed] Updated version of Dagger to 2.24. +- [changed] Made info messages more clear in logcat. ## Kotlin -* [feature] The beta release of a [inappmessaging] Android library + +- [feature] The beta release of a [inappmessaging] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively includes the base `firebase-inappmessaging` - library. To learn more, visit the + library. To learn more, visit the [[inappmessaging] KTX documentation](/docs/reference/kotlin/com/google/firebase/inappmessaging/ktx/package-summary). # 19.0.1 -* [changed] Internal changes to accommodate open-sourcing of the library and + +- [changed] Internal changes to accommodate open-sourcing of the library and to ensure functionality alignment with other SDK releases. # 19.0.0 -* [changed] Versioned to add nullability annotations to improve the Kotlin + +- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes. # 18.0.2 -* [fixed] Updated to send engagement metrics via [analytics]. -* [fixed] Fixed issue with callbacks triggering for Card templates. + +- [fixed] Updated to send engagement metrics via [analytics]. +- [fixed] Fixed issue with callbacks triggering for Card templates. # 17.2.0 -* [feature] Adds support for card in-app messages. -* [feature] Adds direct triggering (via [inappmessaging] SDK) of in-app + +- [feature] Adds support for card in-app messages. +- [feature] Adds direct triggering (via [inappmessaging] SDK) of in-app messages. # 17.1.1 -* [fixed] Fixed [firestore] and [inappmessaging] compatibility on Android + +- [fixed] Fixed [firestore] and [inappmessaging] compatibility on Android API level 19 (KitKat). The underlying issue was that [firestore] and [cloud_functions] couldn't agree on which ciphers to use; this update fixes this issue by overriding the set of ciphers that they use. Refer to @@ -272,20 +296,25 @@ additional updates. for more information. # 17.1.0 -* [feature] Adds functionality to programmatically register listeners for + +- [feature] Adds functionality to programmatically register listeners for updates on in-app engagement (for example, impression, click, display errors). See - [`FirebaseInAppMessaging.addClickListener()`](/docs/reference/android/com/google/firebase/inappmessaging/FirebaseInAppMessaging.addClickListener()) + [`FirebaseInAppMessaging.addClickListener()`]() for more details. # 17.0.5 -* [fixed] Users with restricted API keys can now use the SDK as expected. + +- [fixed] Users with restricted API keys can now use the SDK as expected. # 17.0.3 -* [fixed] Improved caching logic, added safeguards for cache expiration, and cleaned up API surface to prepare for open sourcing the [inappmessaging]-display SDK. + +- [fixed] Improved caching logic, added safeguards for cache expiration, and cleaned up API surface to prepare for open sourcing the [inappmessaging]-display SDK. # 17.0.1 -* [fixed] Fixed an issue where [fiam] and Firestore could not be included/built into the same app, because of an obfuscation collision. + +- [fixed] Fixed an issue where [fiam] and Firestore could not be included/built into the same app, because of an obfuscation collision. # 17.0.0 -* [feature] The initial public beta release of the Firebase In-App Messaging SDK for Android is now available. To learn more, see the [Firebase In-App Messaging documentation](/docs/in-app-messaging). + +- [feature] The initial public beta release of the Firebase In-App Messaging SDK for Android is now available. To learn more, see the [Firebase In-App Messaging documentation](/docs/in-app-messaging). diff --git a/firebase-inappmessaging/README.md b/firebase-inappmessaging/README.md index 490454eb994..d6bb14cb517 100644 --- a/firebase-inappmessaging/README.md +++ b/firebase-inappmessaging/README.md @@ -1,4 +1,5 @@ # Firebase In-App Messaging SDK + [Firebase In-App Messaging](https://firebase.google.com/docs/in-app-messaging/) helps you engage users who are actively using your app by sending them targeted and contextual messages that nudge them to complete key in-app actions - like beating a game level, buying an item, or subscribing to @@ -7,6 +8,7 @@ content. The FIAM SDK manages the non-ui logic for FIAM - including fetching new eligible messages from the server, and triggering FIAM messages. ## Running Tests + Unit tests: `../gradlew :firebase-inappmessaging:test` @@ -14,4 +16,4 @@ Integration tests, requiring a running and connected device (emulator or real): `../gradlew :firebase-inappmessaging:connectedAndroidTest` The best way to the FIAM sdks is via the fiamui-app in this repo - you can run the test, or use -Firebase Test Lab to run a series of UI tests. See fiamui-app/scripts for more details \ No newline at end of file +Firebase Test Lab to run a series of UI tests. See fiamui-app/scripts for more details diff --git a/firebase-installations-interop/CHANGELOG.md b/firebase-installations-interop/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/firebase-installations-interop/CHANGELOG.md +++ b/firebase-installations-interop/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/firebase-installations/API_KEY_RESTRICTIONS.md b/firebase-installations/API_KEY_RESTRICTIONS.md index b5b0915d9db..2a8d45376ef 100644 --- a/firebase-installations/API_KEY_RESTRICTIONS.md +++ b/firebase-installations/API_KEY_RESTRICTIONS.md @@ -21,7 +21,7 @@ Before upgrading your application(s) to the latest SDK version, please **make su 1. **Open** the [Google Cloud Platform Console](https://console.cloud.google.com/apis/credentials?folder). 1. **Choose** the project you use for your application(s). -1. **Open** `APIs & Services` and **select** `Credentials`. +1. **Open** `APIs & Services` and **select** `Credentials`. 1. **Click** `Edit API Key` (pencil icon) for the API key in question. 1. **Scroll down** to the `API restrictions` section. 1. From the dropdown menu, **add** the `Firebase Installations API` to the list of permitted APIs, and click `Save`. diff --git a/firebase-installations/CHANGELOG.md b/firebase-installations/CHANGELOG.md index 6356548e477..499a622b6c2 100644 --- a/firebase-installations/CHANGELOG.md +++ b/firebase-installations/CHANGELOG.md @@ -1,14 +1,16 @@ # Unreleased # 17.1.3 -* [changed] Internal changes to improve startup time + +- [changed] Internal changes to improve startup time # 17.1.2 -* [fixed] Updated `firebase-common` to its latest version (v20.3.0) to fix an issue that was + +- [fixed] Updated `firebase-common` to its latest version (v20.3.0) to fix an issue that was causing a nondeterministic crash on startup. # 17.1.0 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [Firebase Instance ID v21.1.0 release notes](/support/release-notes/android#iid_v21-1-0). - diff --git a/firebase-installations/FCM_TOKENS_CHANGE.md b/firebase-installations/FCM_TOKENS_CHANGE.md index 2a341eeea3e..bf67af00629 100644 --- a/firebase-installations/FCM_TOKENS_CHANGE.md +++ b/firebase-installations/FCM_TOKENS_CHANGE.md @@ -2,7 +2,7 @@ ## What happened? -The latest Cloud Messaging SDK i.e firebase-messaging:20.1.1 updates introduce a transitive dependency on the [Firebase Installations SDK](https://console.cloud.google.com/apis/library/firebaseinstallations.googleapis.com), a new infrastructure service for Firebase. Different to before, the Firebase Installations SDK supports [multiple projects in your application](https://firebase.google.com/docs/projects/multiprojects). +The latest Cloud Messaging SDK i.e firebase-messaging:20.1.1 updates introduce a transitive dependency on the [Firebase Installations SDK](https://console.cloud.google.com/apis/library/firebaseinstallations.googleapis.com), a new infrastructure service for Firebase. Different to before, the Firebase Installations SDK supports [multiple projects in your application](https://firebase.google.com/docs/projects/multiprojects). If you use a Firebase application instance different to the default instance, the FCM registration tokens of installed instances of your applications may change one time after the migration. diff --git a/firebase-installations/REQUIRED_FIREBASE_OPTIONS_ANDROID.md b/firebase-installations/REQUIRED_FIREBASE_OPTIONS_ANDROID.md index 13e09d05254..4df93ff00a8 100644 --- a/firebase-installations/REQUIRED_FIREBASE_OPTIONS_ANDROID.md +++ b/firebase-installations/REQUIRED_FIREBASE_OPTIONS_ANDROID.md @@ -1,22 +1,28 @@ # Firebase services require valid Firebase options + ## Firebase Options + [Firebase options](https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseOptions) are a set of parameters required by services in order to successfully communicate with Firebase server APIs and in order to associate client data with your Firebase project and Firebase application. Firebase services rely on valid Firebase options being available from the Firebase common SDK [`FirebaseApp`](https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp), created during Firebase initialization. Different Firebase services require different Firebase options to function properly, but all Firebase services require the following Firebase options: -* [**API key**](https://cloud.google.com/docs/authentication/api-keys) - Note: this is **not** an FCM server key, see below. \ + +- [**API key**](https://cloud.google.com/docs/authentication/api-keys) - Note: this is **not** an FCM server key, see below. \ Example value: `AIzaSyDOCAbC123dEf456GhI789jKl012-MnO` -* [**Project ID**](https://firebase.google.com/docs/projects/learn-more#project-id) \ +- [**Project ID**](https://firebase.google.com/docs/projects/learn-more#project-id) \ Example value: `android-myapp-123` -* **Application ID**, a.k.a. `mobilesdk_app_id`, `GOOGLE_APP_ID`, "AppId" - Note: this is **not** an Android package name! \ +- **Application ID**, a.k.a. `mobilesdk_app_id`, `GOOGLE_APP_ID`, "AppId" - Note: this is **not** an Android package name! \ Example value: `1:1234567890:android:321abc456def7890` ## What do I need to know? + To improve security Firebase SDK updates [on February 27](https://firebase.google.com/support/release-notes/android#2020-02-27) and afterwards replaced the Firebase Instance ID service with a dependency on the [Firebase Installations API](https://console.cloud.google.com/apis/library/firebaseinstallations.googleapis.com). -Firebase Installations enforces the existence and validity of mandatory Firebase options API key, Project ID, and Application ID in order to associate client data with your Firebase project. +Firebase Installations enforces the existence and validity of mandatory Firebase options API key, Project ID, and Application ID in order to associate client data with your Firebase project. + ## Firebase Cloud Messaging (FCM) with Firebase Instance ID (IID) + If you are reading this message, most likely your application is initializing Firebase without the required set of Firebase options. Your application may be using an incomplete or erroneous [`google-services.json`](https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp) configuration file; or your app is [programmatically initializing Firebase](https://firebase.google.com/docs/projects/multiprojects) without the full set of required Firebase options. @@ -24,13 +30,16 @@ Your application may be using an incomplete or erroneous [`google-services.json` As a result, Firebase services like Firebase Cloud Messaging (FCM) will malfunction for end-users who installed your app after it was released with the updated Firebase SDKs. Additionally, repeated failing requests to Firebase may slow down the end-user experience of your app. ## What do I need to do? + To fix malfunctioning Firebase services for your applications, **please take the following steps as soon as possible:** + 1. Update your application by initializing Firebase with a valid API key of your project, a valid Project ID, and a valid Application ID (a.k.a. mobilesdk_app_id, GOOGLE_APP_ID, or simply "App Id"). - * **Default initialization process using a Firebase config file**: [Download your `google-services.json` config file](https://support.google.com/firebase/answer/7015592) from the Firebase console, then replace the existing file in your app. - * **Programmatic initialization using a `FirebaseOptions` object**: [Download your `google-services.json` config file](https://support.google.com/firebase/answer/7015592) from the Firebase console to find your API key, Project ID, and Application ID, then update these values in the `FirebaseOptions` object in your app. + - **Default initialization process using a Firebase config file**: [Download your `google-services.json` config file](https://support.google.com/firebase/answer/7015592) from the Firebase console, then replace the existing file in your app. + - **Programmatic initialization using a `FirebaseOptions` object**: [Download your `google-services.json` config file](https://support.google.com/firebase/answer/7015592) from the Firebase console to find your API key, Project ID, and Application ID, then update these values in the `FirebaseOptions` object in your app. 1. Release a new version of your app to the Play Store. ## FCM Server keys + If your app is using an [FCM Server key](https://firebase.google.com/docs/cloud-messaging/auth-server#authorize-legacy-protocol-send-requests) rather than a Cloud API key, this could cause a security vulnerability in case you are using the same FCM Server key to send push notifications via FCM. \ In this case, we strongly recommend that you revisit how your server [authenticates send requests to FCM.](https://firebase.google.com/docs/cloud-messaging/auth-server) diff --git a/firebase-messaging-directboot/CHANGELOG.md b/firebase-messaging-directboot/CHANGELOG.md index 7b667d54d99..b2b412736f8 100644 --- a/firebase-messaging-directboot/CHANGELOG.md +++ b/firebase-messaging-directboot/CHANGELOG.md @@ -1,116 +1,137 @@ # Unreleased # 23.1.2 -* [unchanged] Updated to keep messaging SDK versions aligned. + +- [unchanged] Updated to keep messaging SDK versions aligned. # 23.1.1 -* [changed] Removed unused classes. + +- [changed] Removed unused classes. # 23.1.0 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. # 23.0.8 -* [changed] Updated dependency of `play-services-basement` to its latest + +- [changed] Updated dependency of `play-services-basement` to its latest version (v18.1.0). + # 23.0.7 -* [changed] Updated `minSdkVersion` to 19 to match [messaging_longer] + +- [changed] Updated `minSdkVersion` to 19 to match [messaging_longer] `minSdkVersion`. -* [changed] Updated `FirebaseMessagingDirectBootReceiver` to match +- [changed] Updated `FirebaseMessagingDirectBootReceiver` to match [messaging_longer] `FirebaseInstanceIdReceiver`. -* [changed] Removed unused dependencies. +- [changed] Removed unused dependencies. # 23.0.6 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [[messaging_longer] v23.0.6 release notes](/support/release-notes/android#messaging_v23-0-6). + # 23.0.5 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [[messaging_longer] v23.0.5 release notes](/support/release-notes/android#messaging_v23-0-5). # 23.0.3 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [[messaging_longer] v23.0.3 release notes](/support/release-notes/android#messaging_v23-0-3). # 23.0.2 -* [fixed] Fixed an issue where the messaging component in + +- [fixed] Fixed an issue where the messaging component in the [firebase_bom_long] leaked the `httpcomponents` transitive dependencies. # 23.0.1 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. -* [changed] Internal changes to ensure functionality alignment with other SDK +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [[messaging_longer] v23.0.1 release note](/support/release-notes/android#messaging_v23-0-1). # 23.0.0 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [[messaging_longer] v23.0.0 release notes](/support/release-notes/android#messaging_v23-0-0). # 22.0.0 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. -* [changed] Internal changes to support dynamic feature modules. +- [changed] Internal changes to support dynamic feature modules. -* [changed] Internal infrastructure improvements. +- [changed] Internal infrastructure improvements. # 21.1.0 -* [changed] Internal changes to ensure functionality alignment with other + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [[messaging_longer] v21.1.0 release notes](/support/release-notes/android#messaging_v21-1-0). # 21.0.1 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [[messaging_longer] v21.0.1 release note](/support/release-notes/android#messaging_v21-0-1). # 21.0.0 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, refer to the [[messaging_longer] v21.0.0 release note](/support/release-notes/android#messaging_v21-0-0). # 20.3.0 -* [changed] Internal changes to the Google Play services interface to improve + +- [changed] Internal changes to the Google Play services interface to improve future development velocity. # 20.2.4 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more information, refer to the [Firebase Installations v16.3.3 release notes](/support/release-notes/android#installations_v16-3-3). # 20.2.3 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more details, see the [`firebase-messaging` v20.2.3 release note](/support/release-notes/android#messaging_v20-2-3). # 20.2.2 + Warning: **This version of `firebase-messaging-directboot` (v20.2.2) should not be used.** A related library has a known issue (for more details, see [`firebase-messaging` v20.2.2](/support/release-notes/android#messaging_v20-2-2)). A fix for this issue was released on July 08, 2020 (see [v20.2.3](/support/release-notes/android#messaging-directboot_v20-2-3)). -* [changed] Internal improvements. +- [changed] Internal improvements. # 20.2.1 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more information, refer to the [Firebase Instance ID v20.2.1 release notes](/support/release-notes/android#iid_v20-2-1). - # 20.2.0 -* [feature] The Firebase Cloud Messaging Direct Boot SDK is now available + +- [feature] The Firebase Cloud Messaging Direct Boot SDK is now available and supports receiving FCM messages in Direct Boot mode. See [Receive FCM messages in direct boot mode](/docs/cloud-messaging/android/receive#receive_fcm_messages_in_direct_boot_mode) for more information. - diff --git a/firebase-messaging/CHANGELOG.md b/firebase-messaging/CHANGELOG.md index f50ca1da336..449eafbe725 100644 --- a/firebase-messaging/CHANGELOG.md +++ b/firebase-messaging/CHANGELOG.md @@ -1,51 +1,56 @@ # Unreleased -* [changed] Changed to finish a background broadcast after the message has been + +- [changed] Changed to finish a background broadcast after the message has been handled, subject to a timeout. This keeps the `FirebaseMessagingService`'s process in an active state while it is handling an FCM message, up to the 20 seconds allowed. # 23.2.0 -* [deprecated] Deprecated FCM upstream messaging. See the + +- [deprecated] Deprecated FCM upstream messaging. See the [FAQ](https://firebase.google.com/support/faq#fcm-23-deprecation) for more details. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.1.2 -* [fixed] Fixed a breakage related to Jetpack core library related to an - [upstream update](https://android-review.googlesource.com/c/platform/frameworks/support/+/2399893). -* [changed] Updated JavaLite, protoc, protobuf-java-util to 3.21.11. +- [fixed] Fixed a breakage related to Jetpack core library related to an + [upstream update](https://android-review.googlesource.com/c/platform/frameworks/support/+/2399893). +- [changed] Updated JavaLite, protoc, protobuf-java-util to 3.21.11. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.1.1 -* [fixed] Fixed deadlock when handling simultaneous messages. +- [fixed] Fixed deadlock when handling simultaneous messages. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.1.0 -* [unchanged] Updated to accommodate the release of the updated - [messaging_longer] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [messaging_longer] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has the following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-messaging-ktx` as a transitive dependency, which exposes the @@ -54,352 +59,389 @@ additional updates: coroutine. # 23.0.8 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.0.7 -* [changed] Message broadcasts now finish immediately after binding to the - service. This change should reduce the chance of ANRs. +- [changed] Message broadcasts now finish immediately after binding to the + service. This change should reduce the chance of ANRs. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.0.6 -* [changed] Added the `POST_NOTIFICATIONS` permission to enable posting + +- [changed] Added the `POST_NOTIFICATIONS` permission to enable posting notifications when targeting SDK level 33. See [messaging] guidance on how to [request runtime notification permission on Android 13+](/docs/cloud-messaging/android/client#request-permission13) -* [fixed] Added an annotation to an internal class to fix a missing class +- [fixed] Added an annotation to an internal class to fix a missing class warning. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.0.5 -* [fixed] Fixed a dependency on the `firebase-datatransport` layer. + +- [fixed] Fixed a dependency on the `firebase-datatransport` layer. ([GitHub #3716](https://github.com/firebase/firebase-android-sdk/issues/3716){: .external}) -* [fixed] Upgraded logging priority for message delivery events to avoid +- [fixed] Upgraded logging priority for message delivery events to avoid dropped logs. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.0.3 -* [fixed] Removed test resources from library. -* [fixed] Changed to catch `RuntimeException` when getting the `Bundle` from - an `Activity Intent` while checking for notification analytics data. -* [changed] Internal changes to notification building methods. +- [fixed] Removed test resources from library. +- [fixed] Changed to catch `RuntimeException` when getting the `Bundle` from + an `Activity Intent` while checking for notification analytics data. +- [changed] Internal changes to notification building methods. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.0.2 -* [fixed] Fixed an issue where the messaging component in - the [firebase_bom_long] leaked the `httpcomponents` transitive dependencies. +- [fixed] Fixed an issue where the messaging component in + the [firebase_bom_long] leaked the `httpcomponents` transitive dependencies. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.0.1 -* [changed] Updated to the latest version of the `firebase-datatransport` + +- [changed] Updated to the latest version of the `firebase-datatransport` library. -* [changed] Updated dependencies of `play-services-basement`, +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. -* [fixed] On Android 7.0 and earlier, the SDK now logs that a notification was +- [fixed] On Android 7.0 and earlier, the SDK now logs that a notification was opened after `onActivityCreated` to avoid a race condition when unparceling the extras Bundle. -* [fixed] Switched to stopping an image download by canceling a `Future` to +- [fixed] Switched to stopping an image download by canceling a `Future` to interrupt the download thread. This change avoids errors that can occur in the image downloading library when trying to close the stream on a different thread than the one that started the download. -* [fixed] Fixed reference documentation for [`RemoteMessage.getMessageId()`](/docs/reference/android/com/google/firebase/messaging/RemoteMessage#public-string-getmessageid) +- [fixed] Fixed reference documentation for [`RemoteMessage.getMessageId()`](/docs/reference/android/com/google/firebase/messaging/RemoteMessage#public-string-getmessageid) and updated obsolete references to Google Cloud Messaging (GCM). - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 23.0.0 -* [changed] Due to its + +- [changed] Due to its [dependency on Google Play services](/docs/android/android-play-services), this SDK now requires devices and emulators to target API level 19 (KitKat) or higher and to use Android 4.4 or higher. -* [feature] Added methods for determining and controlling whether Google +- [feature] Added methods for determining and controlling whether Google Play services is set as the app’s notification delegate. By default, FCM will now set Google Play services as the app’s notification delegate so that it is allowed to display notifications for the app. This could be used in the future to show an app’s notifications without needing to start the app, which may improve message reliability and timeliness. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 22.0.0 -* [changed] Removed dependency on the deprecated Firebase Instance ID SDK. + +- [changed] Removed dependency on the deprecated Firebase Instance ID SDK. Caution: **This is a breaking change for apps that use [messaging] and the deprecated Firebase Instance ID API to manage registration tokens.**
We strongly recommend [migrating to [messaging]'s token APIs](/docs/projects/manage-installations#fid-iid). If you're unable to migrate to the replacement APIs, add a direct dependency on the `firebase-iid` library to your `build.gradle` file. -* [feature] Changed to open an `Activity` directly when a notification is +- [feature] Changed to open an `Activity` directly when a notification is tapped instead of passing it through `FirebaseMessagingService`. This change is to comply with Android 12 notification trampoline restrictions. -* [feature] Internal changes to use proto instead of JSON for logging. -* [changed] Internal changes to support dynamic feature modules. -* [changed] Internal infrastructure improvements. - +- [feature] Internal changes to use proto instead of JSON for logging. +- [changed] Internal changes to support dynamic feature modules. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 21.1.0 -* [feature] Migrated internal handling of new token callbacks and + +- [feature] Migrated internal handling of new token callbacks and notification actions from Firebase Instance ID to [firebase_messaging]. -* [feature] Added functionality to generate [messaging] tokens from +- [feature] Added functionality to generate [messaging] tokens from `FirebaseMessaging.getToken`, while continuing to call through to Firebase Instance ID if it is present. This will allow [firebase_messaging] to remove its dependency on Firebase Instance ID in the future. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 21.0.1 -* [changed] Updated to latest version of the `firebase-datatransport` library. -* [feature] The SDK now gracefully handles missing default resources. +- [changed] Updated to latest version of the `firebase-datatransport` library. +- [feature] The SDK now gracefully handles missing default resources. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 21.0.0 -* [feature] Migrated auto-initialization from Firebase Instance ID to + +- [feature] Migrated auto-initialization from Firebase Instance ID to [firebase_messaging]. -* [feature] Added a check for incompatible versions of Firebase Instance ID. +- [feature] Added a check for incompatible versions of Firebase Instance ID. An exception is thrown during instantiation if one is found. -* [fixed] Fixed an issue where events were erronously logged to +- [fixed] Fixed an issue where events were erronously logged to [firebase_analytics] twice. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-messaging` library. The Kotlin extensions library has no additional updates. # 20.3.0 -* [feature] Added - [`getToken`](/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging.html#getToken()) + +- [feature] Added + [`getToken`]() and - [`deleteToken`](/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging.html#deleteToken()) + [`deleteToken`]() methods directly to `FirebaseMessaging`. -* [changed] Internal changes to the Google Play services interface to improve +- [changed] Internal changes to the Google Play services interface to improve future development velocity. - ## Kotlin -* [feature] The [messaging_longer] Android library with Kotlin + +- [feature] The [messaging_longer] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively - includes the base `firebase-messaging` library. To learn more, visit the + includes the base `firebase-messaging` library. To learn more, visit the [[messaging_longer] KTX documentation](/docs/reference/kotlin/com/google/firebase/messaging/ktx/package-summary). # 20.2.4 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more information, refer to the [Firebase Installations v16.3.3 release notes](/support/release-notes/android#installations_v16-3-3). # 20.2.3 -* [fixed] Fixed an issue that caused an app to crash when a user tapped on a + +- [fixed] Fixed an issue that caused an app to crash when a user tapped on a received notification. # 20.2.2 + Warning: **This version of `firebase-messaging` (v20.2.2) should not be used.** It has a known issue that causes an app to crash when a user taps on a received notification. A fix for this issue was released on July 08, 2020 (see [v20.2.3](/support/release-notes/android#messaging_v20-2-3)). -* [changed] Internal improvements. +- [changed] Internal improvements. # 20.2.1 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. For more information, refer to the [Firebase Instance ID v20.2.1 release notes](/support/release-notes/android#iid_v20-2-1). # 20.2.0 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases (for more information, refer to the [[messaging_longer] Direct Boot v20.2.0 release notes](/support/release-notes/android#messaging-directboot_v20-2-0)). # 20.1.7 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases (for more information, refer to the [Firebase Instance ID v20.1.7 release notes](/support/release-notes/android#iid_v20-1-7)). # 20.1.6 -* [fixed] Fixed a bug in topic syncing that was causing increased usage of + +- [fixed] Fixed a bug in topic syncing that was causing increased usage of shared system resources when waiting for a working network connection. # 20.1.5 + Warning: In some cases, `firebase-messaging` v20.1.4 and v20.1.5 are erroneously consuming system resources which can negatively impact the performance of a user's device. To avoid this effect, **update your app's version of `firebase-messaging` to [v20.1.6](/support/release-notes/android#messaging_v20-1-6) or later**. -* [changed] Internal changes to ensure functionality alignment with other SDK releases. +- [changed] Internal changes to ensure functionality alignment with other SDK releases. # 20.1.4 + Warning: In some cases, `firebase-messaging` v20.1.4 and v20.1.5 are erroneously consuming system resources which can negatively impact the performance of a user's device. To avoid this effect, **update your app's version of `firebase-messaging` to [v20.1.6](/support/release-notes/android#messaging_v20-1-6) or later**. -* [changed] Internal changes to ensure functionality alignment with other SDK releases. +- [changed] Internal changes to ensure functionality alignment with other SDK releases. # 20.1.3 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. # 20.1.2 + **As of v20.1.1, the [messaging_longer] SDK depends on the [installations_sdk]. Learn about possible impacts in the [v20.1.1 release notes](/support/release-notes/android#messaging_v20-1-1).** -* [changed] Internal changes to ensure functionality alignment with other +- [changed] Internal changes to ensure functionality alignment with other SDK releases (for more information, refer to the bug fix in the [Firebase Instance ID v20.1.1 release notes](/support/release-notes/android#iid_v20-1-1)). # 20.1.1 + Warning: This version of `firebase-messaging` (v20.1.1) has known issues involving silent failures and should not be used. A fix for these issues was released on [March 03, 2020](/support/release-notes/android#2020-03-03). -* [changed] Changed the default for notification titles. Previously, an empty +- [changed] Changed the default for notification titles. Previously, an empty title was replaced with the app's label, but now an empty title causes the notification title to be omitted. -* [fixed] Fixed an issue that could cause ANRs when receiving messages. -* [changed] [messaging_longer] now transitively depends on the +- [fixed] Fixed an issue that could cause ANRs when receiving messages. +- [changed] [messaging_longer] now transitively depends on the [installations_sdk]. After updating to the latest dependency versions, make sure that push notifications still work as expected. Also, be aware of the following: - * The [messaging] registration tokens of installed instances of your apps + - The [messaging] registration tokens of installed instances of your apps might change once after updating dependencies to their latest versions. To learn if your apps are affected, review the
[firebase_installations] documentation. Also, make sure to monitor - [messaging] registration token generation using the + [messaging] registration token generation using the #onNewToken implementation. - * Apps that use the Firebase auto-initialization process and the Gradle plugin + - Apps that use the Firebase auto-initialization process and the Gradle plugin to convert `google-services.json` into resources are unaffected. However, apps that create their own `FirebaseOptions` instances must provide a valid API key, Firebase project ID, and application ID. # 20.1.0 -* [feature] Added - [`setDeliveryMetricsExportToBigQuery(boolean)`](/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging.html#setDeliveryMetricsExportToBigQuery(boolean)) + +- [feature] Added + [`setDeliveryMetricsExportToBigQuery(boolean)`]() and - [`deliveryMetricsExportToBigQueryEnabled()`](/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging.html#deliveryMetricsExportToBigQueryEnabled()) + [`deliveryMetricsExportToBigQueryEnabled()`]() to control and query if messsage delivery metrics are exported to BigQuery. -* [changed] Changed to catch and log NullPointerException when trying to close +- [changed] Changed to catch and log NullPointerException when trying to close the image download stream. This NPE can happen if the image download takes too long and times out. # 20.0.1 -* [fixed] Fixed notifications on API level 24 and later to display the event + +- [fixed] Fixed notifications on API level 24 and later to display the event time when `event_time` is set. # 20.0.0 -* [feature] Added support for more Android notification parameters, including: + +- [feature] Added support for more Android notification parameters, including: `ticker`, `sticky`,`event_time`, `local_only`, `notification_priority`, `default_sound`, `default_vibrate_timings`, `default_light_settings`, `visibility`, `notification_count`, `vibrate_timings` and `light_settings`. -* [feature] Added support for Android notifications that include an image. -* [changed] Added nullability annotations to improve the Kotlin developer +- [feature] Added support for Android notifications that include an image. +- [changed] Added nullability annotations to improve the Kotlin developer experience. # 19.0.1 -* [fixed] Fixed an issue where `FirebaseMessagingService.onNewToken` would be + +- [fixed] Fixed an issue where `FirebaseMessagingService.onNewToken` would be invoked for tokens created for non-default FirebaseApp instances. -* [fixed] SDK now only retries topic subscriptions and token registration on +- [fixed] SDK now only retries topic subscriptions and token registration on the following errors: "ERROR_SERVICE_NOT_AVAILABLE" and "ERROR_INTERNAL_SERVER_ERROR". # 18.0.0 -* [changed] Updated minSdkVersion to API level 16. + +- [changed] Updated minSdkVersion to API level 16. # 17.6.0 -* [feature] Added functionality to automatically download and show an image in + +- [feature] Added functionality to automatically download and show an image in a notification message. Retrieve the image URL set in the message with the `getImageUrl` method in [`RemoteMessage.Notification`](/docs/reference/android/com/google/firebase/messaging/RemoteMessage.Notification). # 17.5.0 -* [changed] Added internal improvements and refactored code. + +- [changed] Added internal improvements and refactored code. # 17.4.0 -* [feature] Added `getChannelId` method to [`RemoteMessage.Notification`](/docs/reference/android/com/google/firebase/messaging/RemoteMessage.Notification) for getting the channel ID set in a notification message. -* [fixed] Fixed a rare `ClassCastException` while receiving a message. + +- [feature] Added `getChannelId` method to [`RemoteMessage.Notification`](/docs/reference/android/com/google/firebase/messaging/RemoteMessage.Notification) for getting the channel ID set in a notification message. +- [fixed] Fixed a rare `ClassCastException` while receiving a message. # 17.3.4 -* [fixed] Bug fixes and internal improvements. + +- [fixed] Bug fixes and internal improvements. # 17.3.2 -* [fixed] Fixed an issue that would occasionally cause apps to crash with + +- [fixed] Fixed an issue that would occasionally cause apps to crash with Android Not Responding (ANR) errors when receiving a message. # 17.3.0 -* [changed] Incremented the version number to 17.3.0 due to internal SDK + +- [changed] Incremented the version number to 17.3.0 due to internal SDK changes. These changes do not affect client functionality, and developers do not need to take any action. # 17.1.0 -* [feature] Added `onNewToken` method to [`FirebaseMessagingService`](/docs/reference/android/com/google/firebase/messaging/FirebaseMessagingService) which is invoked when the app gets a new Instance ID token or its existing token changes. + +- [feature] Added `onNewToken` method to [`FirebaseMessagingService`](/docs/reference/android/com/google/firebase/messaging/FirebaseMessagingService) which is invoked when the app gets a new Instance ID token or its existing token changes. # 17.0.0 -* [feature] Added `getPriority()` and `getOriginalPriority()` methods to + +- [feature] Added `getPriority()` and `getOriginalPriority()` methods to [`RemoteMessage`](/docs/reference/android/com/google/firebase/messaging/RemoteMessage). -* [changed] The methods `subscribeToTopic()` and `unsubscribeFromTopic()` on +- [changed] The methods `subscribeToTopic()` and `unsubscribeFromTopic()` on [`FirebaseMessaging`](/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging) now return a [`Task`](/docs/reference/android/com/google/android/gms/tasks/Task) that can be used to see when the request has completed. - diff --git a/firebase-ml-modeldownloader/CHANGELOG.md b/firebase-ml-modeldownloader/CHANGELOG.md index 3bd63a6f7ef..d6498fbb075 100644 --- a/firebase-ml-modeldownloader/CHANGELOG.md +++ b/firebase-ml-modeldownloader/CHANGELOG.md @@ -1,117 +1,133 @@ # Unreleased -* [unchanged] Updated internal Dagger dependency. -* [fixed] Updated the third-party license file to include Dagger's license. +- [unchanged] Updated internal Dagger dependency. +- [fixed] Updated the third-party license file to include Dagger's license. # 24.1.2 -* [changed] Internal infrastructure improvements. -* [changed] Migrated [firebase_ml] to use standard Firebase executors. +- [changed] Internal infrastructure improvements. +- [changed] Migrated [firebase_ml] to use standard Firebase executors. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-ml-modeldownloader` library. The Kotlin extensions library has no additional updates. # 24.1.1 -* [fixed] Fixed an issue where `FirebaseModelDownloader.getModel` was throwing + +- [fixed] Fixed an issue where `FirebaseModelDownloader.getModel` was throwing `FirebaseMlException.PERMISSION_DENIED` when the model name was empty. It now throws `FirebaseMlException.INVALID_ARGUMENT` (#4157) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-ml-modeldownloader` library. The Kotlin extensions library has no additional updates. + # 24.1.0 -* [unchanged] Updated to accommodate the release of the updated - [firebase_ml] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [firebase_ml] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated - `firebase-ml-modeldownloader` library. The Kotlin extensions library has the - following additional updates: +`firebase-ml-modeldownloader` library. The Kotlin extensions library has the +following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-ml-modeldownloader-ktx` as a transitive dependency, which - exposes the `Task.await()` suspend function to convert a + exposes the `Task.await()` suspend function to convert a [`Task`](https://developers.google.com/android/guides/tasks) into a Kotlin coroutine. # 24.0.5 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-ml-modeldownloader` library. The Kotlin extensions library has no additional updates. + # 24.0.4 -* [fixed] Fixed a race condition that was caused when differently sized + +- [fixed] Fixed a race condition that was caused when differently sized models were concurrently downloaded using this SDK and the Model Downloader from the `com.google.firebase:firebase-ml-common` SDK. (#3321) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-ml-modeldownloader` library. The Kotlin extensions library has no additional updates. + # 24.0.3 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-ml-modeldownloader` library. The Kotlin extensions library has no additional updates. + # 24.0.2 -* [fixed] Fixed an issue where `FirebaseModelDownloader.getInstance` would + +- [fixed] Fixed an issue where `FirebaseModelDownloader.getInstance` would crash when using non-default FirebaseApp instances. (#3321) -* [changed] Updated to the latest version of the `firebase-datatransport` +- [changed] Updated to the latest version of the `firebase-datatransport` library. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-ml-modeldownloader` library. The Kotlin extensions library has no additional updates. + # 24.0.1 -* [fixed] Added support for Android API key restrictions. + +- [fixed] Added support for Android API key restrictions. # 24.0.0 -* [changed] Internal infrastructure improvements. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-ml-modeldownloader` library. The Kotlin extensions library has no additional updates. # 23.0.1 -* [unchanged] Updated to accommodate the release of the [firebase_ml] - Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the [firebase_ml] + Kotlin extensions library. ## Kotlin -* [feature] The beta release of a [firebase_ml] Android library with + +- [feature] The beta release of a [firebase_ml] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively includes the base `firebase-ml-model-downloader` library. To learn more, visit the [[firebase_ml] KTX documentation](/docs/reference/android/com/google/firebase/ml/modeldownloader/package-summary). # 23.0.0 + This release includes the initial beta release of the [firebase_ml] Model Downloader SDK. @@ -122,8 +138,8 @@ This SDK is a lightweight version of the ML Kit Custom Models library models without the interpreter API, which is now provided directly by TFLite runtime. -* [feature] Added custom hosted model download and on-device management +- [feature] Added custom hosted model download and on-device management capabilities. -* [feature] Added ability to get the model download ID, which allows progress +- [feature] Added ability to get the model download ID, which allows progress tracking of file downloads. diff --git a/firebase-perf/CHANGELOG.md b/firebase-perf/CHANGELOG.md index 937f7ad3760..5cdd498cb84 100644 --- a/firebase-perf/CHANGELOG.md +++ b/firebase-perf/CHANGELOG.md @@ -1,70 +1,76 @@ # Unreleased # 20.4.0 -* [feature] Integrated with Firebase sessions library to enable upcoming features related to - session-based performance metrics. +- [feature] Integrated with Firebase sessions library to enable upcoming features related to + session-based performance metrics. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.3.3 -* [fixed] Fixed app start trace creation where some measured time could be NULL (#4730). -* [changed] Adjusted default behavior when remote config fetch fails. +- [fixed] Fixed app start trace creation where some measured time could be NULL (#4730). +- [changed] Adjusted default behavior when remote config fetch fails. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.3.2 -* [changed] Updated JavaLite, protoc, protobuf-java-util to 3.21.11. -* [changed] Updated [perfmon] to use double-precision for sampling. +- [changed] Updated JavaLite, protoc, protobuf-java-util to 3.21.11. +- [changed] Updated [perfmon] to use double-precision for sampling. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.3.1 -* [changed] Migrated [perfmon] to use standard Firebase executors. +- [changed] Migrated [perfmon] to use standard Firebase executors. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.3.0 -* [fixed] Fixed a `NullPointerException` crash when instrumenting screen + +- [fixed] Fixed a `NullPointerException` crash when instrumenting screen traces on Android 7, 8, and 9. (#4146) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has the following additional updates: -* [feature] Added a - [`trace(String, Trace.() -> T)`](/docs/reference/kotlin/com/google/firebase/perf/ktx/package-summary#trace(kotlin.String,kotlin.Function1)) +- [feature] Added a + [`trace(String, Trace.() -> T)`]() extension function to create a custom trace with the specified name. # 20.2.0 -* [unchanged] Updated to accommodate the release of the updated - [perfmon] Kotlin extensions library. +- [unchanged] Updated to accommodate the release of the updated + [perfmon] Kotlin extensions library. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has the following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-performance-ktx` as a transitive dependency, which exposes the @@ -73,208 +79,224 @@ additional updates: coroutine. # 20.1.1 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.1.0 -* [feature] Added support for out-of-the-box measurement of screen performance + +- [feature] Added support for out-of-the-box measurement of screen performance metrics for [Fragments](//developer.android.com/guide/fragments){: .external}. For more details, visit [Learn about screen rendering performance data](/docs/perf-mon/screen-traces?platform=android). -* [fixed] Fixed a bug where screen traces were not capturing frame metrics for +- [fixed] Fixed a bug where screen traces were not capturing frame metrics for multi-Activity apps. -* [fixed] Excluded custom attributes that have key/value lengths of 0. - +- [fixed] Excluded custom attributes that have key/value lengths of 0. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.0.6 -* [fixed] Fixed a null pointer exception (NPE) when instrumenting network + +- [fixed] Fixed a null pointer exception (NPE) when instrumenting network requests. (#3406) -* [fixed] Fixed a bug where incorrect session IDs were associated with some +- [fixed] Fixed a bug where incorrect session IDs were associated with some foreground and background traces. -* [changed] Updated dependencies of `play-services-basement`, +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.0.5 -* [feature] Enabled global custom attributes for network request traces. -* [fixed] Updated log statement to differentiate an event being dropped due to - rate limiting and sampling. +- [feature] Enabled global custom attributes for network request traces. +- [fixed] Updated log statement to differentiate an event being dropped due to + rate limiting and sampling. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.0.4 -* [changed] Improved [perfmon] start up time by 25%. This improvement was - achieved by moving some component initialization to background threads. +- [changed] Improved [perfmon] start up time by 25%. This improvement was + achieved by moving some component initialization to background threads. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.0.3 -* [changed] [perfmon] now has a random delay of 5 to 30 seconds before + +- [changed] [perfmon] now has a random delay of 5 to 30 seconds before fetching [remote_config] upon app startup. -* [fixed] Added a validation to stop screen traces with 0 total frames from +- [fixed] Added a validation to stop screen traces with 0 total frames from being sent to the backend. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.0.2 -* [fixed] Fixed inaccurate calculation of screen activity metrics for + +- [fixed] Fixed inaccurate calculation of screen activity metrics for multi-activity apps. (#2672) Note: You may see some changes in data for frozen frames and slow rendering metrics. -* [fixed] Fixed issue where screen traces were not being tracked for Android +- [fixed] Fixed issue where screen traces were not being tracked for Android API levels 23 and below. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.0.1 -* [feature] Logs for [firebase_perfmon] now contain URLs to view - performance data in the [name_appmanager]. -* [fixed] Fixed `RateLimiter` replenishment logic and unit alignment. +- [feature] Logs for [firebase_perfmon] now contain URLs to view + performance data in the [name_appmanager]. +- [fixed] Fixed `RateLimiter` replenishment logic and unit alignment. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 20.0.0 -* [feature] Introduce Dagger as a dependency injection framework for some + +- [feature] Introduce Dagger as a dependency injection framework for some parts of the code. -* [changed] Improved the code organization of the SDK (package restructure, +- [changed] Improved the code organization of the SDK (package restructure, code conventions, remove unncessary annotations). -* [changed] Improve the launch time of the SDK. - +- [changed] Improve the launch time of the SDK. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 19.1.1 -* [feature] The [firebase_perfmon] SDK is now - [open sourced](//github.com/firebase/firebase-android-sdk/tree/master/firebase-perf){: .external}. -* [fixed] Fixed issue on the console logger to avoid throwing - `UnknownFormatConversionException`. +- [feature] The [firebase_perfmon] SDK is now + [open sourced](//github.com/firebase/firebase-android-sdk/tree/master/firebase-perf){: .external}. +- [fixed] Fixed issue on the console logger to avoid throwing + `UnknownFormatConversionException`. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 19.1.0 -* [changed] Removed GMS dependency from [perfmon]. Google Play services + +- [changed] Removed GMS dependency from [perfmon]. Google Play services installation is no longer required to use [perfmon]. -* [changed] Improved performance event dispatch wait time from 2 hours to +- [changed] Improved performance event dispatch wait time from 2 hours to 30 seconds. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 19.0.11 -* [fixed] Upgraded protobuf dependency to the latest released version - (#2158) +- [fixed] Upgraded protobuf dependency to the latest released version + (#2158) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 19.0.10 + Note: We recommend using [perfmon] Gradle plugin v1.3.4+ with this version of the [perfmon] SDK and above. -* [changed] Integrated with the `firebase-datatransport` library for +- [changed] Integrated with the `firebase-datatransport` library for performance log dispatch mechanism. -* [fixed] Synchronized the access to fix a race condition that was causing a +- [fixed] Synchronized the access to fix a race condition that was causing a `NullPointerException` when making network requests. (#2096) - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-performance` library. The Kotlin extensions library has no additional updates. # 19.0.9 -* [fixed] Created lazy dependency on [firebase_remote_config] to avoid + +- [fixed] Created lazy dependency on [firebase_remote_config] to avoid main thread contention issue. (#1810) -* [changed] Updated the protocol buffer dependency to the +- [changed] Updated the protocol buffer dependency to the `protobuf-javalite` artifact to allow for backward compatibility. -* [changed] Removed Guava dependency from the SDK to avoid symbol collision +- [changed] Removed Guava dependency from the SDK to avoid symbol collision with any other SDKs. -* [changed] Removed proguarding for SDK; logcat messages will show original +- [changed] Removed proguarding for SDK; logcat messages will show original class paths for debugging. -* [changed] Improved build configurations and dependencies to reduce SDK +- [changed] Improved build configurations and dependencies to reduce SDK size. - ## Kotlin -* [feature] The [firebase_perfmon] Android library with Kotlin + +- [feature] The [firebase_perfmon] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively - includes the base `firebase-performance` library. To learn more, visit the + includes the base `firebase-performance` library. To learn more, visit the [[perfmon] KTX documentation](/docs/reference/kotlin/com/google/firebase/perf/ktx/package-summary). # 19.0.8 -* [changed] Updated the + +- [changed] Updated the [logging message](/docs/perf-mon/get-started-android#view-log-messages) for performance events. -* [fixed] Silenced [firebase_remote_config] logging triggered by +- [fixed] Silenced [firebase_remote_config] logging triggered by [firebase_perfmon]. (#403) -* [fixed] Removed unnecessary logging. [perfmon] now only logs debug +- [fixed] Removed unnecessary logging. [perfmon] now only logs debug information if the `firebase_performance_logcat_enabled` setting is `true` in `AndroidManifest.xml`. Visit the documentation for details about explicitly [enabling debug logging](/docs/perf-mon/get-started-android#view-log-messages). -* [changed] Migrated to use the [firebase_installations] service _directly_ +- [changed] Migrated to use the [firebase_installations] service _directly_ instead of using an indirect dependency via the Firebase Instance ID SDK. {% include "docs/reference/android/client/_includes/_iid-indirect-dependency-solutions.html" %} # 19.0.7 -* [changed] Updated dependency on the Firebase Instance ID library to v20.1.5, + +- [changed] Updated dependency on the Firebase Instance ID library to v20.1.5, which is a step towards a direct dependency on the [firebase_installations] service in a future release. @@ -284,67 +306,82 @@ updates. [#1339](//github.com/firebase/firebase-android-sdk/issues/1339). # 19.0.6 -* [fixed] Fixed an NPE crash when calling `trace.stop()`. + +- [fixed] Fixed an NPE crash when calling `trace.stop()`. (#1383) # 19.0.5 -* [fixed] Muted logcat logging for [firebase_perfmon] when + +- [fixed] Muted logcat logging for [firebase_perfmon] when `firebase_performance_logcat_enabled` is not set or set to false. ([#403](//github.com/firebase/firebase-android-sdk/issues/403)) -* [fixed] Skipped automatic performance event creation when +- [fixed] Skipped automatic performance event creation when `firebase_performance_collection_enabled` is set to false. -* [changed] Internal infrastructure improvements. +- [changed] Internal infrastructure improvements. # 19.0.4 -* [changed] Improved internal infrastructure to work better with + +- [changed] Improved internal infrastructure to work better with [firebase_remote_config]. # 19.0.3 -* [changed] Internal infrastructure improvements. + +- [changed] Internal infrastructure improvements. # 19.0.2 -* [changed] Internal infrastructure improvements. + +- [changed] Internal infrastructure improvements. # 19.0.1 -* [changed] Internal infrastructure improvements. + +- [changed] Internal infrastructure improvements. # 19.0.0 -* [changed] Versioned to add nullability annotations to improve the Kotlin + +- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes. # 18.0.1 -* [fixed] Fixed an `IllegalStateException` that was thrown when an activity + +- [fixed] Fixed an `IllegalStateException` that was thrown when an activity with hardware acceleration disabled was stopped. # 17.0.2 -* [fixed] Fixed a `Null Pointer Exception` that was being observed on certain Android 7.0 devices. -* [fixed] Updates to make [perfmon] work better with the latest version of + +- [fixed] Fixed a `Null Pointer Exception` that was being observed on certain Android 7.0 devices. +- [fixed] Updates to make [perfmon] work better with the latest version of [firebase_remote_config]. # 17.0.0 -* [removed] Removed the deprecated counter API. Use metrics API going forward. + +- [removed] Removed the deprecated counter API. Use metrics API going forward. # 16.2.5 -* [fixed] Fixed a bug that was causing apps using multiple processses to + +- [fixed] Fixed a bug that was causing apps using multiple processses to throw an `IllegalStateException` in the non-main processes. # 16.2.4 -* [fixed] Fixed a bug that was causing a `NoClassDefFoundError` to be thrown + +- [fixed] Fixed a bug that was causing a `NoClassDefFoundError` to be thrown which resulted in intermittent app crashes. -* [fixed] Updates to make [perfmon] work better with the latest version of +- [fixed] Updates to make [perfmon] work better with the latest version of [firebase_remote_config]. -* [changed] [firebase_perfmon] no longer depends on [firebase_analytics]. +- [changed] [firebase_perfmon] no longer depends on [firebase_analytics]. # 16.2.3 -* [fixed] Bug fixes. + +- [fixed] Bug fixes. # 16.2.1 -* [fixed] SDK size is now smaller. + +- [fixed] SDK size is now smaller. # 16.2.0 -* [feature] Introduces the Sessions feature, which gives developers access to actionable insights about data captured using [perfmon]. -* [fixed] Minor bug fixes and improvements. + +- [feature] Introduces the Sessions feature, which gives developers access to actionable insights about data captured using [perfmon]. +- [fixed] Minor bug fixes and improvements. # 16.1.0 -* [fixed] Fixed a `SecurityException` crash on certain devices that do not have Google Play Services on them. +- [fixed] Fixed a `SecurityException` crash on certain devices that do not have Google Play Services on them. diff --git a/firebase-perf/README.md b/firebase-perf/README.md index c7662aebb45..0adfef55ebf 100644 --- a/firebase-perf/README.md +++ b/firebase-perf/README.md @@ -1,7 +1,8 @@ # Firebase Performance Monitoring Development Workflow -[Firebase Performance Monitoring](https://firebase.google.com/docs/perf-mon/get-started-android) is -a free mobile app performance analytics service that helps you to gain insight into the performance -characteristics of your app. + +[Firebase Performance Monitoring](https://firebase.google.com/docs/perf-mon/get-started-android) is +a free mobile app performance analytics service that helps you to gain insight into the performance +characteristics of your app. For more information about app performance and many other cool mobile services, check out [Firebase](https://firebase.google.com/). @@ -15,12 +16,14 @@ to clone the repository. Add the following lines to your `~/.bash_profile`: For Mac: + ``` export ANDROID_HOME=~/Library/Android/sdk export ANDROID_SDK_ROOT=~/Library/Android/sdk ``` For Linux: + ``` export ANDROID_HOME=~/Android/Sdk export ANDROID_SDK_ROOT=~/Android/Sdk @@ -44,7 +47,7 @@ firebase-android-sdk$ ./gradlew :clean :firebase-perf:build --stacktrace ``` Please note that `:clean` and `--stacktrace` are optional. The build output will be generated in - `firebase-android-sdk/firebase-perf/build/outputs/aar`. +`firebase-android-sdk/firebase-perf/build/outputs/aar`. ## Run Unit Tests @@ -61,11 +64,11 @@ firebase-android-sdk$ ./gradlew :clean :firebase-perf:testDebugUnitTest --tests ``` > `TestMethodName` is optional, if not provided, all tests under `PackageName.ClassName` will be run. -Similar mechanism applies to `ClassName` as well. +> Similar mechanism applies to `ClassName` as well. ## Run Integration Tests -Follow the instructions [here](https://github.com/firebase/firebase-android-sdk/blob/master/README.md#integration-testing) +Follow the instructions [here](https://github.com/firebase/firebase-android-sdk/blob/master/README.md#integration-testing) for the initial one time setup. ### Running Integration Tests on Local Emulator @@ -90,9 +93,9 @@ firebase-android-sdk$ ./gradlew -PpublishMode=SNAPSHOT -PprojectsToPublish="fire ### Publish project locally -The simplest way to publish a project and all its associated dependencies is to just publish all -projects. The following command builds **SNAPSHOT** dependencies of all projects. All pom level -dependencies within the published artifacts will also point to SNAPSHOT versions that are +The simplest way to publish a project and all its associated dependencies is to just publish all +projects. The following command builds **SNAPSHOT** dependencies of all projects. All pom level +dependencies within the published artifacts will also point to SNAPSHOT versions that are co-published. ``` @@ -118,7 +121,7 @@ buildscript { google() jcenter() } - + dependencies { . . . diff --git a/firebase-perf/dev-app/README.md b/firebase-perf/dev-app/README.md index 7b413932358..4e19e3befd3 100644 --- a/firebase-perf/dev-app/README.md +++ b/firebase-perf/dev-app/README.md @@ -2,18 +2,18 @@ ## Setup -Download the `google-services.json` file from [Firebase Console](https://console.firebase.google.com/) -(for whatever Firebase project you have or want to integrate the `dev-app`) and store it under the +Download the `google-services.json` file from [Firebase Console](https://console.firebase.google.com/) +(for whatever Firebase project you have or want to integrate the `dev-app`) and store it under the current directory.

-> **Note:** The [Package name](https://firebase.google.com/docs/android/setup#register-app) for your -app created on the Firebase Console (for which the `google-services.json` is downloaded) must match -the [applicationId](https://developer.android.com/studio/build/application-id.html) declared in the -`dev-app/dev-app.gradle` for the app to link to Firebase. +> **Note:** The [Package name](https://firebase.google.com/docs/android/setup#register-app) for your +> app created on the Firebase Console (for which the `google-services.json` is downloaded) must match +> the [applicationId](https://developer.android.com/studio/build/application-id.html) declared in the +> `dev-app/dev-app.gradle` for the app to link to Firebase. ## Build & Install @@ -33,20 +33,20 @@ firebase-android-sdk$ ./gradlew :clean :firebase-perf:dev-app:build > **Note:** Builds with latest public version of `firebase-perf` SDK. -> **Tip:** The above command will build all the configured variants which may slow down the build. -To fasten local development replace `build` with `assembleRelease` task. To view the complete list -of tasks available run `./gradlew :clean :firebase-perf:dev-app:tasks --all`. +> **Tip:** The above command will build all the configured variants which may slow down the build. +> To fasten local development replace `build` with `assembleRelease` task. To view the complete list +> of tasks available run `./gradlew :clean :firebase-perf:dev-app:tasks --all`. -After the build is successful, [bring up emulator/physical device](https://developer.android.com/studio/run/emulator) +After the build is successful, [bring up emulator/physical device](https://developer.android.com/studio/run/emulator) and install the apk: ``` firebase-android-sdk$ adb install firebase-perf/dev-app/build/outputs/apk/release/dev-app-release.apk ``` -> **Tip:** Alternatively you can also use [Gradle Tool Panel](https://youtu.be/2S94dlL5nMI) located -on the top right side of the Android Studio to run any provided gradle task (including installing/uninstalling -apk and running tests). +> **Tip:** Alternatively you can also use [Gradle Tool Panel](https://youtu.be/2S94dlL5nMI) located +> on the top right side of the Android Studio to run any provided gradle task (including installing/uninstalling +> apk and running tests). ## Instrumentation Test @@ -82,17 +82,17 @@ firebase-android-sdk$ ./gradlew :firebase-perf:dev-app:devicecheck There are differences in terms of Firebase projects when running this command in different scenarios. -1. **CI Run**: These tests are run under Firebase Test Lab of the unified Firebase project -(according to [this](https://github.com/firebase/firebase-android-sdk/blob/master/buildSrc/src/main/java/com/google/firebase/gradle/plugins/ci/device/FirebaseTestServer.java)) -but the performance events are sent to a different project with which apps are configured with -(see [this](https://github.com/firebase/firebase-android-sdk/blob/master/gradle/googleServices.gradle)). - -1. **Local run**: When running locally both the tests and the events will happen on the same locally -integrated Firebase project. +1. **CI Run**: These tests are run under Firebase Test Lab of the unified Firebase project + (according to [this](https://github.com/firebase/firebase-android-sdk/blob/master/buildSrc/src/main/java/com/google/firebase/gradle/plugins/ci/device/FirebaseTestServer.java)) + but the performance events are sent to a different project with which apps are configured with + (see [this](https://github.com/firebase/firebase-android-sdk/blob/master/gradle/googleServices.gradle)). + +1. **Local run**: When running locally both the tests and the events will happen on the same locally + integrated Firebase project. ## Logs -To monitor device logging: +To monitor device logging: ``` firebase-android-sdk$ adb logcat -s FirebasePerformance @@ -103,8 +103,8 @@ Alternatively you can also use Android Studio [Logcat](https://developer.android ## SDK size measurement > **Note:** Currently we are using apk size as ballpark approximations for SDK size impact. It - only serves as a proxy for SDK size changes and should not be considered solely for absolute - SDK size. +> only serves as a proxy for SDK size changes and should not be considered solely for absolute +> SDK size. As a local validation of SDK size impact, you can run the same command as the `dev-app` build: @@ -114,6 +114,6 @@ firebase-android-sdk$ ./gradlew :clean :firebase-perf:dev-app:build --stacktrace And go to the following locations to check for app artifact size: -* Debug: `firebase-perf/dev-app/build/outputs/apk/debug/dev-app-debug.apk` -* Release: `firebase-perf/dev-app/build/outputs/apk/release/dev-app-release.apk` -* Aggressive: `firebase-perf/dev-app/build/outputs/apk/aggressive/dev-app-aggressive.apk` \ No newline at end of file +- Debug: `firebase-perf/dev-app/build/outputs/apk/debug/dev-app-debug.apk` +- Release: `firebase-perf/dev-app/build/outputs/apk/release/dev-app-release.apk` +- Aggressive: `firebase-perf/dev-app/build/outputs/apk/aggressive/dev-app-aggressive.apk` diff --git a/firebase-perf/e2e-app/README.md b/firebase-perf/e2e-app/README.md index 8db04010351..e15bfb5b40a 100644 --- a/firebase-perf/e2e-app/README.md +++ b/firebase-perf/e2e-app/README.md @@ -2,18 +2,18 @@ ## Setup -Download the `google-services.json` file from [Firebase Console](https://console.firebase.google.com/) -(for whatever Firebase project you have or want to integrate the `e2e-app`) and store it under the +Download the `google-services.json` file from [Firebase Console](https://console.firebase.google.com/) +(for whatever Firebase project you have or want to integrate the `e2e-app`) and store it under the current directory.

-> **Note:** The [Package name](https://firebase.google.com/docs/android/setup#register-app) for your -app created on the Firebase Console (for which the `google-services.json` is downloaded) must match -the [applicationId](https://developer.android.com/studio/build/application-id.html) declared in the -`e2e-app/e2e-app.gradle` for the app to link to Firebase. +> **Note:** The [Package name](https://firebase.google.com/docs/android/setup#register-app) for your +> app created on the Firebase Console (for which the `google-services.json` is downloaded) must match +> the [applicationId](https://developer.android.com/studio/build/application-id.html) declared in the +> `e2e-app/e2e-app.gradle` for the app to link to Firebase. ## Build @@ -34,10 +34,10 @@ firebase-android-sdk$ ./gradlew :clean :firebase-perf:e2e-app:build > **Note:** Builds with latest public version of `firebase-perf` SDK. > **Tip:** The above command will build all the configured variants which may slow down the build. -To fasten local development replace `build` with `assembleRelease` task. To view the complete list -of all available tasks run `./gradlew :clean :firebase-perf:e2e-app:tasks --all`. +> To fasten local development replace `build` with `assembleRelease` task. To view the complete list +> of all available tasks run `./gradlew :clean :firebase-perf:e2e-app:tasks --all`. -After the build is successful, you can [bring up emulator/physical device](https://developer.android.com/studio/run/emulator) +After the build is successful, you can [bring up emulator/physical device](https://developer.android.com/studio/run/emulator) which can run the binary however, the purpose of this `e2e-app` is to solely run the [instrumentation tests](https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests). ## Instrumentation Test @@ -74,18 +74,18 @@ firebase-android-sdk$ ./gradlew :firebase-perf:e2e-app:devicecheck There are differences in terms of Firebase projects when running this command in different scenarios. -1. **CI Run**: These tests are run under Firebase Test Lab of the unified Firebase project -(according to [this](https://github.com/firebase/firebase-android-sdk/blob/master/buildSrc/src/main/java/com/google/firebase/gradle/plugins/ci/device/FirebaseTestServer.java)) -but the performance events are sent to a different project with which apps are configured with -(see [this](https://github.com/firebase/firebase-android-sdk/blob/master/gradle/googleServices.gradle) -and the Prow Configuration in tg/831643). +1. **CI Run**: These tests are run under Firebase Test Lab of the unified Firebase project + (according to [this](https://github.com/firebase/firebase-android-sdk/blob/master/buildSrc/src/main/java/com/google/firebase/gradle/plugins/ci/device/FirebaseTestServer.java)) + but the performance events are sent to a different project with which apps are configured with + (see [this](https://github.com/firebase/firebase-android-sdk/blob/master/gradle/googleServices.gradle) + and the Prow Configuration in tg/831643). -1. **Local run**: When running locally both the tests and the events will happen on the same locally -integrated Firebase project. +1. **Local run**: When running locally both the tests and the events will happen on the same locally + integrated Firebase project. ## Logs -To monitor device logging: +To monitor device logging: ``` firebase-android-sdk$ adb logcat -s FirebasePerformance diff --git a/firebase-sessions/CHANGELOG.md b/firebase-sessions/CHANGELOG.md index 1f5e70de220..80df28db5ac 100644 --- a/firebase-sessions/CHANGELOG.md +++ b/firebase-sessions/CHANGELOG.md @@ -1,9 +1,9 @@ # Unreleased -* [fixed] Fixed NPE when no version name is +- [fixed] Fixed NPE when no version name is set ([#5195](//github.com/firebase/firebase-android-sdk/issues/5195)). -* [fixed] Populate DataCollectionStatus fields for Crashlytics and Perf. +- [fixed] Populate DataCollectionStatus fields for Crashlytics and Perf. # 1.0.0 -* [feature] Initial Firebase sessions library. +- [feature] Initial Firebase sessions library. diff --git a/firebase-storage/CHANGELOG.md b/firebase-storage/CHANGELOG.md index d6ae0297195..1a1604512cf 100644 --- a/firebase-storage/CHANGELOG.md +++ b/firebase-storage/CHANGELOG.md @@ -1,34 +1,38 @@ # Unreleased # 20.2.1 -* [changed] Migrated `firebase-storage` SDK to use standard Firebase executors. + +- [changed] Migrated `firebase-storage` SDK to use standard Firebase executors. (GitHub [#4830](//github.com/firebase/firebase-android-sdk/pull/4830){: .external}) ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has no additional updates. # 20.2.0 -* [changed] Internal changes to ensure alignment with other SDK releases. +- [changed] Internal changes to ensure alignment with other SDK releases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has no additional updates. # 20.1.0 -* [fixed] Fixed an issue that caused an infinite number of retries with no - exponential backoff for `uploadChunk()`. +- [fixed] Fixed an issue that caused an infinite number of retries with no + exponential backoff for `uploadChunk()`. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has the following additional updates: -* [feature] Firebase now supports Kotlin coroutines. +- [feature] Firebase now supports Kotlin coroutines. With this release, we added [`kotlinx-coroutines-play-services`](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/){: .external} to `firebase-storage-ktx` as a transitive dependency, which exposes the @@ -36,158 +40,165 @@ additional updates: [`Task`](https://developers.google.com/android/guides/tasks) into a Kotlin coroutine. -* [feature] Added +- [feature] Added [`StorageTask.taskState`](/docs/reference/kotlin/com/google/firebase/storage/ktx/package-summary#taskState) Kotlin Flows to monitor the progress of an upload or download `Task`. # 20.0.2 -* [changed] Updated dependency of `play-services-basement` to its latest - version (v18.1.0). +- [changed] Updated dependency of `play-services-basement` to its latest + version (v18.1.0). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has no additional updates. # 20.0.1 -* [changed] Updated dependencies of `play-services-basement`, + +- [changed] Updated dependencies of `play-services-basement`, `play-services-base`, and `play-services-tasks` to their latest versions (v18.0.0, v18.0.1, and v18.0.1, respectively). For more information, see the [note](#basement18-0-0_base18-0-1_tasks18-0-1) at the top of this release entry. - ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has no additional updates. # 20.0.0 -* [feature] Added abuse reduction features. -* [feature] Added the ability to connect to the [firebase_storage] emulator. +- [feature] Added abuse reduction features. -* [changed] Internal changes to support dynamic feature modules. +- [feature] Added the ability to connect to the [firebase_storage] emulator. -* [changed] Internal infrastructure improvements. +- [changed] Internal changes to support dynamic feature modules. +- [changed] Internal infrastructure improvements. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has no additional updates. # 19.2.2 -* [fixed] Fixed an issue that caused the SDK to report incorrect values for -[`getTotalByteCount()`](docs/reference/android/com/google/firebase/storage/FileDownloadTask.TaskSnapshot#getTotalByteCount()) -after a download was paused and resumed. +- [fixed] Fixed an issue that caused the SDK to report incorrect values for + [`getTotalByteCount()`]() + after a download was paused and resumed. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has no additional updates. # 19.2.1 -* [fixed] Fixed an issue that caused the SDK to crash if the download location - was deleted before the download completed. Instead, the download now fails. +- [fixed] Fixed an issue that caused the SDK to crash if the download location + was deleted before the download completed. Instead, the download now fails. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has no additional updates. - - - - # 19.2.0 -* [changed] Updated to support improvements in the KTX library (see below). +- [changed] Updated to support improvements in the KTX library (see below). ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library and has the following additional updates: -* [feature] Added API support for destructuring of +- [feature] Added API support for destructuring of [`TaskSnapshot`](/docs/reference/kotlin/com/google/firebase/storage/StreamDownloadTask.TaskSnapshot) and [`ListResult`](/docs/reference/kotlin/com/google/firebase/storage/ListResult). # 19.1.1 -* [changed] Internal changes to ensure functionality alignment with other SDK releases. - +- [changed] Internal changes to ensure functionality alignment with other SDK releases. ## Kotlin + The Kotlin extensions library transitively includes the updated `firebase-storage` library. The Kotlin extensions library has no additional updates. # 19.1.0 -* [feature] Added `getCacheControl()`, `getContentDisposition()`, + +- [feature] Added `getCacheControl()`, `getContentDisposition()`, `getContentEncoding()`, `getContentLanguage()`, and `getContentType()` to [`StorageMetadata.Builder`](/docs/reference/android/com/google/firebase/storage/StorageMetadata.Builder) to provide access to the current state of the metadata. -* [fixed] Fixed an encoding issue in - [`StorageReference.list()`](/docs/reference/android/com/google/firebase/storage/StorageReference.html#list(int)) +- [fixed] Fixed an encoding issue in + [`StorageReference.list()`]() that caused the API to miss entries for prefixes that contained special characters. - ## Kotlin -* [feature] The beta release of a [firebase_storage_full] Android library + +- [feature] The beta release of a [firebase_storage_full] Android library with Kotlin extensions is now available. The Kotlin extensions library transitively includes the base `firebase-storage` library. To learn more, visit the [[firebase_storage_full] KTX documentation](/docs/reference/kotlin/com/google/firebase/storage/ktx/package-summary). # 19.0.1 -* [fixed] [`StorageReference.listAll()`](/docs/reference/android/com/google/firebase/storage/StorageReference.html#listAll()) + +- [fixed] [`StorageReference.listAll()`]() now propagates the error messages if the List operation was denied by a Security Rule. # 19.0.0 -* [changed] Versioned to add nullability annotations to improve the Kotlin + +- [changed] Versioned to add nullability annotations to improve the Kotlin developer experience. No other changes. # 18.1.1 -* [changed] Internal changes to ensure functionality alignment with other SDK + +- [changed] Internal changes to ensure functionality alignment with other SDK releases. # 18.1.0 -* [feature] Added - [`StorageReference.list()`](/docs/reference/android/com/google/firebase/storage/StorageReference.html#list(int)) - and [`StorageReference.listAll()`](/docs/reference/android/com/google/firebase/storage/StorageReference.html#listAll()), + +- [feature] Added + [`StorageReference.list()`]() + and [`StorageReference.listAll()`](), which allows developers to list the files and folders under the given StorageReference. -* [changed] Added validation to - [`StorageReference.getDownloadUrl()`](/docs/reference/android/com/google/firebase/storage/StorageReference.html#getDownloadUrl()) - and [`StorageReference.getMetadata()`](/docs/reference/android/com/google/firebase/storage/StorageReference.html#getMetadata()) +- [changed] Added validation to + [`StorageReference.getDownloadUrl()`]() + and [`StorageReference.getMetadata()`]() to return an error if the reference is the root of the bucket. # 17.0.0 -* [changed] Internal changes that rely on an updated API to obtain + +- [changed] Internal changes that rely on an updated API to obtain authentication credentials. If you use [firebase_auth], update to `firebase-auth` v17.0.0 or later to ensure functionality alignment. - - # 16.0.2 -* [fixed] This release includes minor fixes and improvements. + +- [fixed] This release includes minor fixes and improvements. # 16.0.1 -* [feature] Added support for `onSuccessTask()` and `addOnCanceledListener()` + +- [feature] Added support for `onSuccessTask()` and `addOnCanceledListener()` to [`StorageTask`](/docs/reference/android/com/google/firebase/storage/StorageTask), [`UploadTask`](/docs/reference/android/com/google/firebase/storage/UploadTask), [`StreamDownloadTask`](/docs/reference/android/com/google/firebase/storage/StreamDownloadTask), and [`FileDownloadTask`](/docs/reference/android/com/google/firebase/storage/FileDownloadTask). -* [changed] Removed the deprecated `StorageMetadata.getDownloadUrl()` and +- [changed] Removed the deprecated `StorageMetadata.getDownloadUrl()` and `UploadTask.TaskSnapshot.getDownloadUrl()` methods. To get a current download URL, use - [`StorageReference.getDownloadUr()`](/docs/reference/android/com/google/firebase/storage/StorageReference.html#getDownloadUrl()). - + [`StorageReference.getDownloadUr()`](). diff --git a/firebase-storage/README.md b/firebase-storage/README.md index b50bbc78b18..a54847d9888 100644 --- a/firebase-storage/README.md +++ b/firebase-storage/README.md @@ -14,7 +14,7 @@ publishing/testing Firebase Storage. ## Unit Tests -The Firebase Storage Unit tests exercise the public API endpoints and mock the associated network +The Firebase Storage Unit tests exercise the public API endpoints and mock the associated network activity. For each test, the unit tests verify all network traffic and state changes by comparing them to pre-recorded activity. The network traffic as well as the expected states are defined in the resource files included under `src/test/resources/activitylogs`. @@ -22,18 +22,18 @@ resource files included under `src/test/resources/activitylogs`. To add new tests, use the the test app provided under `../firebase-storage-app`. You can run this test app in a simulator or on a device. The app's various test cases can be activated through the UI and record all network traffic and state transitions. After each test run, the -captured network traffic and all state changes are written to the app's local storage directory. You +captured network traffic and all state changes are written to the app's local storage directory. You can use this captured state to add additional unit tests for the storage client. The app reads both from the network and from the device. To run existing test cases, you need to -upload the files under `src/test/resources/assets` to the Storage bucket of your Firebase project. -You can use [gsutil](https://cloud.google.com/storage/docs/gsutil) or the +upload the files under `src/test/resources/assets` to the Storage bucket of your Firebase project. +You can use [gsutil](https://cloud.google.com/storage/docs/gsutil) or the [Firebase Console](https://console.firebase.google.com) for this. Furthermore, to make these file -available locally, they should also be copied to device's local storage. The expected Storage +available locally, they should also be copied to device's local storage. The expected Storage location is shown when you run a test that requires a local file (e.g. an upload tests). When a test run finishes, the test app displays the location of the test output. These files need to -be copied to `src/test/resources/activitylogs` before the can be used in unit tests. Note that the +be copied to `src/test/resources/activitylogs` before the can be used in unit tests. Note that the captured network traffic in these files includes your Authentication Tokens and your Project ID, which need to be replaced. @@ -44,7 +44,6 @@ To supply the fake authentication token used by the Unit test runner, replace an setRequestProperty:x-firebase-gmpid,fooey ``` -Similarly, replace any Firebase Storage URLs (such as -`https://firebasestorage.googleapis.com/v0/b/{PROJECT}.appspot.com/o/...`) with +Similarly, replace any Firebase Storage URLs (such as +`https://firebasestorage.googleapis.com/v0/b/{PROJECT}.appspot.com/o/...`) with `https://firebasestorage.googleapis.com/v0/b/fooey.appspot.com/o/...` - diff --git a/firebase-storage/src/test/resources/assets/flubbertest.jpg b/firebase-storage/src/test/resources/assets/flubbertest.jpg index bf954f58ee2..88547a2ec99 100644 Binary files a/firebase-storage/src/test/resources/assets/flubbertest.jpg and b/firebase-storage/src/test/resources/assets/flubbertest.jpg differ diff --git a/firebase-storage/src/test/resources/assets/image.jpg b/firebase-storage/src/test/resources/assets/image.jpg index 4bcae7abf6c..be6ab1abcc7 100644 Binary files a/firebase-storage/src/test/resources/assets/image.jpg and b/firebase-storage/src/test/resources/assets/image.jpg differ diff --git a/firebase-storage/test-app/README.md b/firebase-storage/test-app/README.md index add91cecbcb..83ee2ca4a56 100644 --- a/firebase-storage/test-app/README.md +++ b/firebase-storage/test-app/README.md @@ -1,4 +1,3 @@ # firebase-storage-app -Please refer to the "Unit Tests" section in [firebase-storage/README.md]( -https://github.com/firebase/firebase-android-sdk/blob/master/firebase-storage/README.md). +Please refer to the "Unit Tests" section in [firebase-storage/README.md](https://github.com/firebase/firebase-android-sdk/blob/master/firebase-storage/README.md). diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0c3531e7246..51f8fe9cd2a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,8 +11,8 @@ kotlin = "1.7.10" protoc = "3.21.11" robolectric = "4.9" truth = "1.1.2" -protobufjavautil = "3.21.11" -kotest = "5.5.5" +protobufjavautil = "3.24.3" +kotest = "5.7.2" quickcheck = "0.6" androidx-test-core="1.5.0" androidx-test-junit="1.1.5" diff --git a/health-metrics/apk-size/README.md b/health-metrics/apk-size/README.md index aa260beab26..468e972be27 100644 --- a/health-metrics/apk-size/README.md +++ b/health-metrics/apk-size/README.md @@ -23,5 +23,5 @@ example, in this project: `build/m2repository/`) in order for gradle to find the ## Toolchains -* Gradle 6.5.1 ([`gradle-wrapper.properties`](./gradle/wrapper/gradle-wrapper.properties)) -* Android Gradle Plugin 4.1.0-beta02 ([`apk-size.gradle`](./apk-size.gradle)) +- Gradle 6.5.1 ([`gradle-wrapper.properties`](./gradle/wrapper/gradle-wrapper.properties)) +- Android Gradle Plugin 4.1.0-beta02 ([`apk-size.gradle`](./apk-size.gradle)) diff --git a/health-metrics/apk-size/app/src/main/res/mipmap-hdpi/ic_launcher.png b/health-metrics/apk-size/app/src/main/res/mipmap-hdpi/ic_launcher.png index cde69bcccec..e1a87544229 100644 Binary files a/health-metrics/apk-size/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/health-metrics/apk-size/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/protolite-well-known-types/CHANGELOG.md b/protolite-well-known-types/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/protolite-well-known-types/CHANGELOG.md +++ b/protolite-well-known-types/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/protolite-well-known-types/README.md b/protolite-well-known-types/README.md index 30926d080d8..d05808df064 100644 --- a/protolite-well-known-types/README.md +++ b/protolite-well-known-types/README.md @@ -1,10 +1,13 @@ # Protolite well known types + This is the proto lite bindingss of the proto [well known types](https://github.com/google/protobuf/tree/5ce724bcebebb56914da6efc40b85c4c801e6fe1/src/google/protobuf) and the google cloud types. ## Problem + When an app uses multiple firebase SDKs, gradle has the ability to [resolve version conflicts](https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html) in overlapping libraries that these SDKs may depend on. The caveat with protobuf is that in addition to a runtime, standard practices to use protobuf will result in final artifacts containing class files of the compiled higher level proto datatypes like TimeStamp.class, Any.class etc. Specifically, protobuf [requires](https://github.com/google/protobuf-gradle-plugin#protos-in-dependencies) apps using these higher level datatypes in their protos use the following dependency declaration in their projects. + ```groovy protobuf 'com.google.protobuf:protobuf-java:3.0.2' ``` @@ -13,11 +16,12 @@ The above declaration in addition to making the proto files like [Timestamp.prot ## Solution -We circumvent by not having a direct dependency on the higher level protos, instead depending on the *protolite-well-known-types* module which makes proto files available to be imported in addition to including it into the final artifact. The key to this approach is that gradle now can resolve a version conflict between firebase libraries that depend on v1 and v2 of the *protolite-well-known-types* library. +We circumvent by not having a direct dependency on the higher level protos, instead depending on the _protolite-well-known-types_ module which makes proto files available to be imported in addition to including it into the final artifact. The key to this approach is that gradle now can resolve a version conflict between firebase libraries that depend on v1 and v2 of the _protolite-well-known-types_ library. Note: For the same reasons, this project also contains the google cloud well known types shared across multiple firebase projects. ## Usage + If you have a direct protobuf dependency like shown above, it can be removed and replaced with ```groovy diff --git a/smoke-tests/src/androidTest/backend/functions/functions/.eslintrc.js b/smoke-tests/src/androidTest/backend/functions/functions/.eslintrc.js index 973030b23cc..cf232ad57e2 100644 --- a/smoke-tests/src/androidTest/backend/functions/functions/.eslintrc.js +++ b/smoke-tests/src/androidTest/backend/functions/functions/.eslintrc.js @@ -4,10 +4,7 @@ module.exports = { es6: true, node: true, }, - extends: [ - "eslint:recommended", - "google", - ], + extends: ["eslint:recommended", "google"], rules: { quotes: ["error", "double"], }, diff --git a/smoke-tests/src/androidTest/backend/functions/functions/index.js b/smoke-tests/src/androidTest/backend/functions/functions/index.js index 3e5158a4ed3..cbfe6474e40 100644 --- a/smoke-tests/src/androidTest/backend/functions/functions/index.js +++ b/smoke-tests/src/androidTest/backend/functions/functions/index.js @@ -28,10 +28,11 @@ exports.addNumbers = functions.https.onCall((data) => { if (!Number.isFinite(firstNumber) || !Number.isFinite(secondNumber)) { throw new functions.https.HttpsError( - "invalid-argument", - "The function must be called with " + - "two arguments \"firstNumber\" and \"secondNumber\" " + - "which must both be numbers."); + "invalid-argument", + "The function must be called with " + + 'two arguments "firstNumber" and "secondNumber" ' + + "which must both be numbers.", + ); } return { diff --git a/smoke-tests/src/androidTest/backend/functions/functions/package-lock.json b/smoke-tests/src/androidTest/backend/functions/functions/package-lock.json index 9029a8d02d1..fe1212e75fb 100644 --- a/smoke-tests/src/androidTest/backend/functions/functions/package-lock.json +++ b/smoke-tests/src/androidTest/backend/functions/functions/package-lock.json @@ -1801,9 +1801,9 @@ } }, "node_modules/google-gax": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.0.tgz", - "integrity": "sha512-2fyb61vWxUonHiArRNJQmE4tx5oY1ni8VPo08fzII409vDSCWG7apDX4qNOQ2GXXT82gLBn3d3P1Dydh7pWjyw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz", + "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==", "optional": true, "dependencies": { "@grpc/grpc-js": "~1.8.0", @@ -1818,7 +1818,7 @@ "node-fetch": "^2.6.1", "object-hash": "^3.0.0", "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.2.3", + "protobufjs": "7.2.4", "protobufjs-cli": "1.1.1", "retry-request": "^5.0.0" }, @@ -2663,9 +2663,9 @@ } }, "node_modules/protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", + "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -2985,9 +2985,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -3479,9 +3479,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "devOptional": true, "engines": { "node": ">=0.10.0" @@ -5011,9 +5011,9 @@ } }, "google-gax": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.0.tgz", - "integrity": "sha512-2fyb61vWxUonHiArRNJQmE4tx5oY1ni8VPo08fzII409vDSCWG7apDX4qNOQ2GXXT82gLBn3d3P1Dydh7pWjyw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz", + "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==", "optional": true, "requires": { "@grpc/grpc-js": "~1.8.0", @@ -5028,7 +5028,7 @@ "node-fetch": "^2.6.1", "object-hash": "^3.0.0", "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.2.3", + "protobufjs": "7.2.4", "protobufjs-cli": "1.1.1", "retry-request": "^5.0.0" } @@ -5685,9 +5685,9 @@ } }, "protobufjs": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", - "integrity": "sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", + "integrity": "sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -5908,9 +5908,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -6299,9 +6299,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "devOptional": true }, "wrap-ansi": { diff --git a/transport/transport-api/CHANGELOG.md b/transport/transport-api/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/transport/transport-api/CHANGELOG.md +++ b/transport/transport-api/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/transport/transport-backend-cct/CHANGELOG.md b/transport/transport-backend-cct/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/transport/transport-backend-cct/CHANGELOG.md +++ b/transport/transport-backend-cct/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/transport/transport-runtime-testing/CHANGELOG.md b/transport/transport-runtime-testing/CHANGELOG.md index f514bbb890e..79e701b844d 100644 --- a/transport/transport-runtime-testing/CHANGELOG.md +++ b/transport/transport-runtime-testing/CHANGELOG.md @@ -1,3 +1 @@ # Unreleased - - diff --git a/transport/transport-runtime/CHANGELOG.md b/transport/transport-runtime/CHANGELOG.md index 74f982265c9..b03f9f6314e 100644 --- a/transport/transport-runtime/CHANGELOG.md +++ b/transport/transport-runtime/CHANGELOG.md @@ -1,2 +1,3 @@ # Unreleased -* [unchanged] Updated internal Dagger dependency. + +- [unchanged] Updated internal Dagger dependency.