diff --git a/examples/audience/Assets/Plugins/Android/mainTemplate.gradle b/examples/audience/Assets/Plugins/Android/mainTemplate.gradle index 795cadd4d..3558a761f 100644 --- a/examples/audience/Assets/Plugins/Android/mainTemplate.gradle +++ b/examples/audience/Assets/Plugins/Android/mainTemplate.gradle @@ -22,6 +22,12 @@ apply plugin: 'com.android.library' dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) **DEPS** + // Google Play Install Referrer Library, resolved from Maven (the Audience + // package no longer bundles it as an .aar - it conflicted with other SDKs). + // EDM4U projects get it automatically from ImmutableAudienceDependencies.xml; + // this sample has no EDM4U, so it declares the dependency manually. + implementation 'com.android.installreferrer:installreferrer:2.2' + // Uncomment to enable GAID collection (requires AUDIENCE_MOBILE_ATTRIBUTION // scripting define + AudienceConfig.EnableMobileAttribution). Without this // line the SDK still builds and runs, but `gaid` / `gaidLimitAdTracking` diff --git a/src/Packages/Audience/Editor/ImmutableAudienceDependencies.xml b/src/Packages/Audience/Editor/ImmutableAudienceDependencies.xml new file mode 100644 index 000000000..795855d1d --- /dev/null +++ b/src/Packages/Audience/Editor/ImmutableAudienceDependencies.xml @@ -0,0 +1,25 @@ + + + + + + + https://maven.google.com + + + + diff --git a/src/Packages/Audience/Editor/ImmutableAudienceDependencies.xml.meta b/src/Packages/Audience/Editor/ImmutableAudienceDependencies.xml.meta new file mode 100644 index 000000000..cc144bdd1 --- /dev/null +++ b/src/Packages/Audience/Editor/ImmutableAudienceDependencies.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9d07b68218d6495c87d75e4db65d7b7b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/src/Packages/Audience/README.md b/src/Packages/Audience/README.md index 936bdb801..57fa92b71 100644 --- a/src/Packages/Audience/README.md +++ b/src/Packages/Audience/README.md @@ -47,17 +47,29 @@ Press Play; `ImmutableAudience.Initialized` returns `true` and `AnonymousId` bec - Integration guide and API reference: - Sample Unity project: [`examples/audience`](https://github.com/immutable/unity-immutable-sdk/tree/main/examples/audience) -## Vendored dependencies +## Android dependencies -The package vendors prebuilt third-party AARs for mobile attribution. They are only included in your build when the corresponding scripting define is set; without the define they're stripped via `defineConstraints` on the plugin meta files. +Mobile install attribution (the `AUDIENCE_MOBILE_ATTRIBUTION` define) needs the Google Play Install Referrer Library. The package does **not** bundle it as a prebuilt `.aar` — bundled AARs can't be de-duplicated by Gradle, so shipping `installreferrer-2.2.aar` directly caused class/version conflicts when a game already pulled in the same library via another SDK. Instead it's resolved from Maven: -| File | Version | Source | Required define | -| --- | --- | --- | --- | -| `Runtime/Plugins/Android/installreferrer-2.2.aar` | 2.2 | [maven.google.com](https://maven.google.com/web/index.html#com.android.installreferrer:installreferrer:2.2) | `AUDIENCE_MOBILE_ATTRIBUTION` | +| Dependency | Version | Source | +| --- | --- | --- | +| `com.android.installreferrer:installreferrer` | 2.2 | [maven.google.com](https://maven.google.com/web/index.html#com.android.installreferrer:installreferrer:2.2) | -`Runtime/Plugins/Android/proguard-user.txt` ships explicit R8 keep rules for the Install Referrer Library. Unity's gradle build merges it automatically when the AAR is included. +**With [EDM4U](https://github.com/googlesamples/unity-jar-resolver) (recommended):** no action needed. `Editor/ImmutableAudienceDependencies.xml` declares the dependency and EDM4U's Android Resolver fetches it, resolving any version conflict with other SDKs to a single highest version. Install EDM4U as a project prerequisite — do not embed a second copy. -Before tagging a release, check `maven.google.com` for newer versions of any vendored dependency and bump the pinned filename if needed. +**Without EDM4U:** add the dependency to your `Assets/Plugins/Android/mainTemplate.gradle`: + +```gradle +dependencies { + implementation 'com.android.installreferrer:installreferrer:2.2' +} +``` + +`Runtime/Plugins/Android/proguard-user.txt` ships explicit R8 keep rules for the Install Referrer Library; Unity's gradle build merges them regardless of how the dependency is resolved. + +`play-services-ads-identifier` (GAID) is intentionally left for the studio to add, so games that don't collect the advertising ID never declare the `AD_ID` permission. + +Before tagging a release, check `maven.google.com` for a newer version and bump the pinned version above and in `ImmutableAudienceDependencies.xml` if needed. ## License diff --git a/src/Packages/Audience/Runtime/Plugins/Android/installreferrer-2.2.aar b/src/Packages/Audience/Runtime/Plugins/Android/installreferrer-2.2.aar deleted file mode 100644 index ea4f702e5..000000000 Binary files a/src/Packages/Audience/Runtime/Plugins/Android/installreferrer-2.2.aar and /dev/null differ diff --git a/src/Packages/Audience/Runtime/Plugins/Android/installreferrer-2.2.aar.meta b/src/Packages/Audience/Runtime/Plugins/Android/installreferrer-2.2.aar.meta deleted file mode 100644 index 4dd39c72f..000000000 --- a/src/Packages/Audience/Runtime/Plugins/Android/installreferrer-2.2.aar.meta +++ /dev/null @@ -1,33 +0,0 @@ -fileFormatVersion: 2 -guid: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: - - AUDIENCE_MOBILE_ATTRIBUTION - isPreloaded: 0 - isOverridable: 1 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Android: Android - second: - enabled: 1 - settings: {} - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: diff --git a/src/Packages/Audience/Runtime/Plugins/Android/proguard-user.txt b/src/Packages/Audience/Runtime/Plugins/Android/proguard-user.txt index fad7cf61b..64f37cf29 100644 --- a/src/Packages/Audience/Runtime/Plugins/Android/proguard-user.txt +++ b/src/Packages/Audience/Runtime/Plugins/Android/proguard-user.txt @@ -1,6 +1,7 @@ # Keep Google Play Install Referrer Library symbols. # -# The AAR (installreferrer-2.2.aar) ships consumer rules in +# The installreferrer AAR (resolved from Maven via EDM4U or a manual gradle +# dependency - see README) ships consumer rules in # META-INF/com.android.tools/proguard/proguard.txt and Unity's gradle build # auto-merges them, but R8 fullMode in Unity 2022.3+ has been observed to # discard merged consumer rules in some studio configurations. These