Skip to content

Remove deprecated Google Mobile Ads (GMA) C++ SDK #1768

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

jonsimantov
Copy link
Contributor

This commit removes the entire GMA C++ SDK from the Firebase C++ SDK, including all references to it across all platforms (iOS, Desktop, and Android).

Changes include:

  • Deletion of the core gma directory and its contents.
  • Removal of GMA from CMakeLists.txt files.
  • Removal of GMA from Gradle build files.
  • Removal of GMA from iOS Podfiles.
  • Removal of GMA from integration tests and UI tests.
  • Removal of GMA from build scripts and CI workflows.
  • Updates to documentation (README.md, Doxyfile) to reflect the removal, while preserving release notes related to past GMA versions and adding a new note about its removal.

Description

Provide details of the change, and generalize the change in the PR title above.


Testing

Describe how you've tested these changes. Link any manually triggered Integration tests or CPP binary SDK Packaging Github Action workflows, if applicable.


Type of Change

Place an x the applicable box:

  • Bug fix. Add the issue # below if applicable.
  • New feature. A non-breaking change which adds functionality.
  • Other, such as a build process or documentation change.

Notes

  • Bug fixes and feature changes require an update to the Release Notes section of release_build_files/readme.md.
  • Read the contribution guidelines CONTRIBUTING.md.
  • Changes to the public API require an internal API review. If you'd like to help us make Firebase APIs better, please propose your change in a feature request so that we can discuss it together.

This commit removes the entire GMA C++ SDK from the Firebase C++ SDK, including all references to it across all platforms (iOS, Desktop, and Android).

Changes include:
- Deletion of the core `gma` directory and its contents.
- Removal of GMA from CMakeLists.txt files.
- Removal of GMA from Gradle build files.
- Removal of GMA from iOS Podfiles.
- Removal of GMA from integration tests and UI tests.
- Removal of GMA from build scripts and CI workflows.
- Updates to documentation (README.md, Doxyfile) to reflect the removal, while preserving release notes related to past GMA versions and adding a new note about its removal.
@jonsimantov jonsimantov added the tests-requested: full Trigger a FULL set of integration tests (uses expanded test matrix). label Jul 3, 2025
@github-actions github-actions bot added tests: in-progress This PR's integration tests are in progress. and removed tests-requested: full Trigger a FULL set of integration tests (uses expanded test matrix). labels Jul 3, 2025
Copy link

github-actions bot commented Jul 3, 2025

Integration test with FLAKINESS (succeeded after retry)

Requested by @jonsimantov on commit 049b2b0
Last updated: Fri Jul 11 15:48 PDT 2025
View integration test log & download artifacts

Failures Configs
database [TEST] [FLAKINESS] [Android] [1/3 os: ubuntu] [1/2 android_device: emulator_ftl_target]
(1 failed tests)  CRASH/TIMEOUT

Add flaky tests to go/fpl-cpp-flake-tracker

@github-actions github-actions bot added the tests: failed This PR's integration tests failed. label Jul 3, 2025
@firebase-workflow-trigger firebase-workflow-trigger bot removed the tests: in-progress This PR's integration tests are in progress. label Jul 3, 2025
@jonsimantov jonsimantov added the tests-requested: quick Trigger a quick set of integration tests. label Jul 7, 2025
@github-actions github-actions bot added tests: in-progress This PR's integration tests are in progress. tests: failed This PR's integration tests failed. and removed tests-requested: quick Trigger a quick set of integration tests. tests: failed This PR's integration tests failed. labels Jul 7, 2025
@firebase-workflow-trigger firebase-workflow-trigger bot removed the tests: in-progress This PR's integration tests are in progress. label Jul 7, 2025
This commit removes the explicit print statement when skipping GMA-related
encrypted files in `scripts/gha/restore_secrets.py`. The script will
now silently ignore these files, aligning with the complete removal of
the GMA SDK and avoiding unnecessary log output.
This commit ensures that `scripts/gha/restore_secrets.py` correctly
skips processing for any GMA-related encrypted files. The existing
check `if api == "gma": continue` should prevent attempts to write
decrypted secrets to the `gma/integration_test` directory, which no
longer exists after the removal of the GMA SDK.

This submission is to confirm the CI tests against this version of the
script.
This commit further refines `scripts/gha/restore_secrets.py` to prevent
attempts to write to the deleted `gma/integration_test` directory.

Changes include:
- Initializing `dest_paths` as an empty list.
- More careful construction of `dest_paths` based on whether `FLAGS.artifact`
  is set, ensuring that GMA paths are not inadvertently created.
- Explicitly continuing the loop if no valid destination path is determined
  for a file, preventing unnecessary decryption or write attempts.
- Adding redundant checks to ensure GMA paths are not processed before file
  write operations as a final safeguard.

This should robustly address the `FileNotFoundError` previously observed in CI.
else:
# If not a google-services file or the artifact API directory doesn't exist,
# skip this file for artifact processing.
print(f"Skipping artifact path for {path} (API: {api}, Artifact: {FLAGS.artifact})")

Check failure

Code scanning / CodeQL

Clear-text logging of sensitive information High

This expression logs
sensitive data (secret)
as clear text.
This expression logs
sensitive data (secret)
as clear text.

# If dest_paths is still empty (e.g., was artifact flow but conditions not met), skip.
if not dest_paths:
print(f"No valid destination paths determined for {path} (API: {api}). Skipping.")

Check failure

Code scanning / CodeQL

Clear-text logging of sensitive information High

This expression logs
sensitive data (secret)
as clear text.
This expression logs
sensitive data (secret)
as clear text.

# If, after all checks, dest_paths is empty, skip.
if not dest_paths:
print(f"No destination paths after internal check for {path}. Skipping.")

Check failure

Code scanning / CodeQL

Clear-text logging of sensitive information High

This expression logs
sensitive data (secret)
as clear text.
This expression logs
sensitive data (secret)
as clear text.
for dest_path_item in dest_paths:
# Final explicit check, although redundant if above logic is correct.
if "/gma/" in dest_path_item or "\\gma\\" in dest_path_item:
print(f"CRITICAL WARNING: Attempting to write to a GMA path, this should not happen: {dest_path_item}. Skipping.")

Check failure

Code scanning / CodeQL

Clear-text logging of sensitive information High

This expression logs
sensitive data (secret)
as clear text.
This expression logs
sensitive data (secret)
as clear text.
if "/gma/" in dest_path_item or "\\gma\\" in dest_path_item:
print(f"CRITICAL WARNING: Attempting to write to a GMA path, this should not happen: {dest_path_item}. Skipping.")
continue
print(f"Writing decrypted file to {dest_path_item}")

Check failure

Code scanning / CodeQL

Clear-text logging of sensitive information High

This expression logs
sensitive data (secret)
as clear text.
This expression logs
sensitive data (secret)
as clear text.
if dest_path.endswith(".plist"):
_patch_reverse_id(dest_path)
_patch_bundle_id(dest_path)
print("Copied decrypted google service file to %s" % dest_path_item)

Check failure

Code scanning / CodeQL

Clear-text logging of sensitive information High

This expression logs
sensitive data (secret)
as clear text.
This expression logs
sensitive data (secret)
as clear text.
@jonsimantov jonsimantov added the tests-requested: quick Trigger a quick set of integration tests. label Jul 11, 2025
@github-actions github-actions bot added tests: in-progress This PR's integration tests are in progress. tests: succeeded This PR's integration tests succeeded. and removed tests-requested: quick Trigger a quick set of integration tests. tests: failed This PR's integration tests failed. labels Jul 11, 2025
@firebase-workflow-trigger firebase-workflow-trigger bot removed the tests: in-progress This PR's integration tests are in progress. label Jul 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tests: succeeded This PR's integration tests succeeded.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant