Repo Created
This commit is contained in:
parent
eb305e2886
commit
a8c22c65db
4784 changed files with 329907 additions and 2 deletions
42
play-services-ads-lite/build.gradle
Normal file
42
play-services-ads-lite/build.gradle
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'maven-publish'
|
||||
apply plugin: 'signing'
|
||||
|
||||
android {
|
||||
namespace "com.google.android.gms.ads"
|
||||
|
||||
compileSdkVersion androidCompileSdk
|
||||
buildToolsVersion "$androidBuildVersionTools"
|
||||
|
||||
buildFeatures {
|
||||
aidl = true
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
versionName version
|
||||
minSdkVersion androidMinSdk
|
||||
targetSdkVersion androidTargetSdk
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
}
|
||||
|
||||
apply from: '../gradle/publish-android.gradle'
|
||||
|
||||
description = 'microG implementation of play-services-ads-lite'
|
||||
|
||||
dependencies {
|
||||
api 'androidx.work:work-runtime:2.7.0'
|
||||
api project(':play-services-ads-base')
|
||||
api project(':play-services-basement')
|
||||
// api project(':play-services-measurement-sdk-api')
|
||||
// api project(':user-messaging-platform')
|
||||
}
|
||||
38
play-services-ads-lite/core/build.gradle
Normal file
38
play-services-ads-lite/core/build.gradle
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'kotlin-android'
|
||||
|
||||
dependencies {
|
||||
api project(':play-services-ads-lite')
|
||||
implementation project(':play-services-base-core')
|
||||
}
|
||||
|
||||
android {
|
||||
namespace "org.microg.gms.ads"
|
||||
|
||||
compileSdkVersion androidCompileSdk
|
||||
buildToolsVersion "$androidBuildVersionTools"
|
||||
|
||||
defaultConfig {
|
||||
versionName version
|
||||
minSdkVersion androidMinSdk
|
||||
targetSdkVersion androidTargetSdk
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = 1.8
|
||||
targetCompatibility = 1.8
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = 1.8
|
||||
}
|
||||
}
|
||||
7
play-services-ads-lite/core/src/main/AndroidManifest.xml
Normal file
7
play-services-ads-lite/core/src/main/AndroidManifest.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
~ SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
</manifest>
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.google.android.gms.ads
|
||||
|
||||
import android.os.IBinder
|
||||
import android.os.Parcel
|
||||
import android.util.Log
|
||||
import androidx.annotation.Keep
|
||||
import com.google.android.gms.ads.internal.client.IAdLoaderBuilderCreator
|
||||
import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator
|
||||
import com.google.android.gms.dynamic.IObjectWrapper
|
||||
import org.microg.gms.utils.warnOnTransactionIssues
|
||||
|
||||
private const val TAG = "AdLoaderBuilder"
|
||||
|
||||
@Keep
|
||||
class AdLoaderBuilderCreatorImpl : IAdLoaderBuilderCreator.Stub() {
|
||||
override fun newAdLoaderBuilder(context: IObjectWrapper?, adUnitId: String, adapterCreator: IAdapterCreator?, clientVersion: Int): IBinder? {
|
||||
Log.d(TAG, "newAdLoaderBuilder: adUnitId=$adUnitId clientVersion=$clientVersion")
|
||||
return null
|
||||
}
|
||||
|
||||
override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.google.android.gms.ads
|
||||
|
||||
import android.os.Parcel
|
||||
import androidx.annotation.Keep
|
||||
import org.microg.gms.utils.warnOnTransactionIssues
|
||||
|
||||
private const val TAG = "AdManager"
|
||||
|
||||
@Keep
|
||||
class AdManagerCreatorImpl : AdManagerCreator.Stub() {
|
||||
override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean =
|
||||
warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.google.android.gms.ads
|
||||
|
||||
import android.content.Context
|
||||
import android.os.IBinder
|
||||
import android.os.Parcel
|
||||
import android.util.Log
|
||||
import androidx.annotation.Keep
|
||||
import com.google.android.gms.ads.internal.client.IMobileAdsSettingManagerCreator
|
||||
import com.google.android.gms.dynamic.IObjectWrapper
|
||||
import com.google.android.gms.dynamic.ObjectWrapper
|
||||
import org.microg.gms.ads.MobileAdsSettingManagerImpl
|
||||
import org.microg.gms.utils.warnOnTransactionIssues
|
||||
|
||||
private const val TAG = "AdsSettingManager"
|
||||
|
||||
@Keep
|
||||
class MobileAdsSettingManagerCreatorImpl : IMobileAdsSettingManagerCreator.Stub() {
|
||||
override fun getMobileAdsSettingManager(context: IObjectWrapper?, clientVersion: Int): IBinder {
|
||||
Log.d(TAG, "getMobileAdsSettingManager($clientVersion)")
|
||||
return MobileAdsSettingManagerImpl(ObjectWrapper.unwrap(context) as Context)
|
||||
}
|
||||
|
||||
override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.google.android.gms.ads.measurement
|
||||
|
||||
import android.os.Parcel
|
||||
import android.util.Log
|
||||
import androidx.annotation.Keep
|
||||
import com.google.android.gms.dynamic.IObjectWrapper
|
||||
import org.microg.gms.utils.warnOnTransactionIssues
|
||||
|
||||
private const val TAG = "DynamiteMeasurement"
|
||||
|
||||
@Keep
|
||||
class DynamiteMeasurementManager : IMeasurementManager.Stub() {
|
||||
|
||||
override fun initialize(context: IObjectWrapper?, proxy: IAppMeasurementProxy?) {
|
||||
Log.d(TAG, "Not yet implemented: initialize")
|
||||
}
|
||||
|
||||
override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean =
|
||||
warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package com.google.android.gms.ads.rewarded
|
||||
|
||||
import android.content.Context
|
||||
import android.os.IBinder
|
||||
import android.util.Log
|
||||
import androidx.annotation.Keep
|
||||
import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator
|
||||
import com.google.android.gms.ads.internal.rewarded.client.IRewardedAdCreator
|
||||
import com.google.android.gms.dynamic.IObjectWrapper
|
||||
import com.google.android.gms.dynamic.ObjectWrapper
|
||||
import org.microg.gms.ads.rewarded.RewardedAdImpl
|
||||
|
||||
private const val TAG = "RewardedAd"
|
||||
|
||||
@Keep
|
||||
class ChimeraRewardedAdCreatorImpl : IRewardedAdCreator.Stub() {
|
||||
override fun newRewardedAd(context: IObjectWrapper, str: String, adapterCreator: IAdapterCreator, clientVersion: Int): IBinder {
|
||||
Log.d(TAG, "newRewardedAd($str, $clientVersion)")
|
||||
return RewardedAdImpl(ObjectWrapper.unwrap(context) as Context?, str, adapterCreator, clientVersion)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
package org.microg.gms.ads
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Parcel
|
||||
import android.os.RemoteException
|
||||
import android.util.Log
|
||||
import com.google.android.gms.ads.internal.AdapterStatusParcel
|
||||
import com.google.android.gms.ads.internal.RequestConfigurationParcel
|
||||
import com.google.android.gms.ads.internal.client.IMobileAdsSettingManager
|
||||
import com.google.android.gms.ads.internal.client.IOnAdInspectorClosedListener
|
||||
import com.google.android.gms.ads.internal.initialization.IInitializationCallback
|
||||
import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator
|
||||
import com.google.android.gms.dynamic.IObjectWrapper
|
||||
import org.microg.gms.utils.warnOnTransactionIssues
|
||||
|
||||
private const val TAG = "AdsSettingManager"
|
||||
|
||||
class MobileAdsSettingManagerImpl(private val context: Context?) : IMobileAdsSettingManager.Stub() {
|
||||
private var initialized = false
|
||||
private val initializationCallbacks = mutableListOf<IInitializationCallback>()
|
||||
private var muted = false
|
||||
private var volume = 1.0f
|
||||
|
||||
override fun initialize() {
|
||||
Log.d(TAG, "initialize")
|
||||
if (initialized) return
|
||||
initialized = true
|
||||
for (callback in initializationCallbacks) {
|
||||
runCatching { callback.onInitialized(emptyList()) }
|
||||
}
|
||||
}
|
||||
|
||||
override fun setAppVolume(volume: Float) {
|
||||
this.volume = volume
|
||||
}
|
||||
|
||||
override fun fetchAppSettings(appId: String?) {
|
||||
fetchAppSettingsV2(appId, null)
|
||||
}
|
||||
|
||||
override fun setAppMuted(muted: Boolean) {
|
||||
this.muted = muted
|
||||
}
|
||||
|
||||
override fun openDebugMenu(context: IObjectWrapper?, adUnitId: String?) {
|
||||
Log.d(TAG, "openDebugMenu($adUnitId)")
|
||||
}
|
||||
|
||||
override fun fetchAppSettingsV2(appId: String?, runnable: IObjectWrapper?) {
|
||||
Log.d(TAG, "fetchAppSettings($appId)")
|
||||
}
|
||||
|
||||
override fun getAdVolume(): Float {
|
||||
return volume
|
||||
}
|
||||
|
||||
override fun isAdMuted(): Boolean {
|
||||
return muted
|
||||
}
|
||||
|
||||
override fun getVersionString(): String {
|
||||
return ""
|
||||
}
|
||||
|
||||
override fun registerRtbAdapter(className: String?) {
|
||||
Log.d(TAG, "registerRtbAdapter($className)")
|
||||
}
|
||||
|
||||
override fun setAdapterCreator(iAdapterCreator: IAdapterCreator?) {
|
||||
Log.d(TAG, "Not yet implemented: setAdapterCreator")
|
||||
}
|
||||
|
||||
override fun addInitializationCallback(callback: IInitializationCallback?) {
|
||||
Log.d(TAG, "addInitializationCallback")
|
||||
callback?.let { initializationCallbacks.add(it) }
|
||||
}
|
||||
|
||||
override fun getAdapterStatus(): List<AdapterStatusParcel> {
|
||||
Log.d(TAG, "getAdapterStatus")
|
||||
return arrayListOf(AdapterStatusParcel("com.google.android.gms.ads.MobileAds", true, 0, "Dummy"))
|
||||
}
|
||||
|
||||
override fun setRequestConfiguration(configuration: RequestConfigurationParcel?) {
|
||||
Log.d(TAG, "setRequestConfiguration")
|
||||
}
|
||||
|
||||
override fun disableMediationAdapterInitialization() {
|
||||
Log.d(TAG, "disableMediationAdapterInitialization")
|
||||
}
|
||||
|
||||
override fun openAdInspector(listener: IOnAdInspectorClosedListener?) {
|
||||
Log.d(TAG, "openAdInspector")
|
||||
}
|
||||
|
||||
override fun enableSameAppKey(enabled: Boolean) {
|
||||
Log.d(TAG, "enableSameAppKey($enabled)")
|
||||
}
|
||||
|
||||
override fun setPlugin(plugin: String?) {
|
||||
Log.d(TAG, "setPlugin($plugin)")
|
||||
}
|
||||
|
||||
override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package org.microg.gms.ads.rewarded
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import com.google.android.gms.ads.internal.AdapterResponseInfoParcel
|
||||
import com.google.android.gms.ads.internal.client.IResponseInfo
|
||||
|
||||
private const val TAG = "RewardedAdResponseInfo"
|
||||
|
||||
class ResponseInfoImpl : IResponseInfo.Stub() {
|
||||
override fun getMediationAdapterClassName(): String? {
|
||||
Log.d(TAG, "getMediationAdapterClassName")
|
||||
return null
|
||||
}
|
||||
|
||||
override fun getResponseId(): String? {
|
||||
Log.d(TAG, "getResponseId")
|
||||
return null
|
||||
}
|
||||
|
||||
override fun getAdapterResponseInfo(): List<AdapterResponseInfoParcel> {
|
||||
Log.d(TAG, "getAdapterResponseInfo")
|
||||
return arrayListOf()
|
||||
}
|
||||
|
||||
override fun getLoadedAdapterResponse(): AdapterResponseInfoParcel? {
|
||||
Log.d(TAG, "getLoadedAdapterResponse")
|
||||
return null
|
||||
}
|
||||
|
||||
override fun getResponseExtras(): Bundle {
|
||||
Log.d(TAG, "getResponseExtras")
|
||||
return Bundle()
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package org.microg.gms.ads.rewarded
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.RemoteException
|
||||
import android.util.Log
|
||||
import com.google.android.gms.ads.internal.AdErrorParcel
|
||||
import com.google.android.gms.ads.internal.AdRequestParcel
|
||||
import com.google.android.gms.ads.internal.ServerSideVerificationOptionsParcel
|
||||
import com.google.android.gms.ads.internal.client.IOnAdMetadataChangedListener
|
||||
import com.google.android.gms.ads.internal.client.IOnPaidEventListener
|
||||
import com.google.android.gms.ads.internal.client.IResponseInfo
|
||||
import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator
|
||||
import com.google.android.gms.ads.internal.rewarded.client.*
|
||||
import com.google.android.gms.common.api.CommonStatusCodes
|
||||
import com.google.android.gms.dynamic.IObjectWrapper
|
||||
|
||||
private const val TAG = "RewardedAd"
|
||||
|
||||
class RewardedAdImpl(context: Context?, str: String?, adapterCreator: IAdapterCreator?, clientVersion: Int) : IRewardedAd.Stub() {
|
||||
private var immersive: Boolean = false
|
||||
|
||||
private fun load(request: AdRequestParcel, callback: IRewardedAdLoadCallback, interstitial: Boolean) {
|
||||
Handler(Looper.getMainLooper()).post {
|
||||
try {
|
||||
callback.onAdLoadError(AdErrorParcel().apply { code = CommonStatusCodes.INTERNAL_ERROR; message = "Not supported" })
|
||||
} catch (e: RemoteException) {
|
||||
Log.w(TAG, e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun load(request: AdRequestParcel, callback: IRewardedAdLoadCallback) {
|
||||
Log.d(TAG, "load")
|
||||
load(request, callback, false)
|
||||
}
|
||||
|
||||
override fun setCallback(callback: IRewardedAdCallback) {
|
||||
Log.d(TAG, "setCallback")
|
||||
}
|
||||
|
||||
override fun canBeShown(): Boolean {
|
||||
Log.d(TAG, "canBeShown")
|
||||
return false
|
||||
}
|
||||
|
||||
override fun getMediationAdapterClassName(): String {
|
||||
Log.d(TAG, "getMediationAdapterClassName")
|
||||
return responseInfo.mediationAdapterClassName
|
||||
}
|
||||
|
||||
override fun show(activity: IObjectWrapper) {
|
||||
Log.d(TAG, "show")
|
||||
showWithImmersive(activity, immersive)
|
||||
}
|
||||
|
||||
override fun setRewardedAdSkuListener(listener: IRewardedAdSkuListener?) {
|
||||
Log.d(TAG, "setRewardedAdSkuListener")
|
||||
}
|
||||
|
||||
override fun setServerSideVerificationOptions(options: ServerSideVerificationOptionsParcel) {
|
||||
Log.d(TAG, "setServerSideVerificationOptions")
|
||||
}
|
||||
|
||||
override fun setOnAdMetadataChangedListener(listener: IOnAdMetadataChangedListener) {
|
||||
Log.d(TAG, "setOnAdMetadataChangedListener")
|
||||
}
|
||||
|
||||
override fun getAdMetadata(): Bundle {
|
||||
Log.d(TAG, "getAdMetadata")
|
||||
return Bundle()
|
||||
}
|
||||
|
||||
override fun showWithImmersive(activity: IObjectWrapper?, immersive: Boolean) {
|
||||
Log.d(TAG, "showWithBoolean")
|
||||
}
|
||||
|
||||
override fun getRewardItem(): IRewardItem? {
|
||||
Log.d(TAG, "getRewardItem")
|
||||
return null
|
||||
}
|
||||
|
||||
override fun getResponseInfo(): IResponseInfo {
|
||||
Log.d(TAG, "getResponseInfo")
|
||||
return ResponseInfoImpl()
|
||||
}
|
||||
|
||||
override fun setOnPaidEventListener(listener: IOnPaidEventListener) {
|
||||
Log.d(TAG, "setOnPaidEventListener")
|
||||
}
|
||||
|
||||
override fun loadInterstitial(request: AdRequestParcel, callback: IRewardedAdLoadCallback) {
|
||||
Log.d(TAG, "loadInterstitial")
|
||||
load(request, callback, true)
|
||||
}
|
||||
|
||||
override fun setImmersiveMode(enabled: Boolean) {
|
||||
Log.d(TAG, "setImmersiveMode($enabled)")
|
||||
}
|
||||
}
|
||||
|
||||
26
play-services-ads-lite/src/main/AndroidManifest.xml
Normal file
26
play-services-ads-lite/src/main/AndroidManifest.xml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
~ SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
~ SPDX-License-Identifier: Apache-2.0
|
||||
-->
|
||||
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
|
||||
|
||||
<queries>
|
||||
<!-- Website links -->
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="https" />
|
||||
</intent>
|
||||
<!-- Custom tabs -->
|
||||
<intent>
|
||||
<action
|
||||
android:name="android.support.customtabs.action.CustomTabsService" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<application />
|
||||
</manifest>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
package com.google.android.gms.ads;
|
||||
|
||||
interface AdManagerCreator {
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.google.android.gms.ads.internal;
|
||||
|
||||
parcelable AdErrorParcel;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.google.android.gms.ads.internal;
|
||||
|
||||
parcelable AdRequestParcel;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.google.android.gms.ads.internal;
|
||||
|
||||
parcelable AdapterResponseInfoParcel;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.google.android.gms.ads.internal;
|
||||
|
||||
parcelable AdapterStatusParcel;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.google.android.gms.ads.internal;
|
||||
|
||||
parcelable RequestConfigurationParcel;
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package com.google.android.gms.ads.internal;
|
||||
|
||||
parcelable ServerSideVerificationOptionsParcel;
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package com.google.android.gms.ads.internal.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator;
|
||||
import com.google.android.gms.dynamic.IObjectWrapper;
|
||||
|
||||
interface IAdLoaderBuilderCreator {
|
||||
IBinder newAdLoaderBuilder(IObjectWrapper context, String adUnitId, IAdapterCreator adapterCreator, int clientVersion);
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package com.google.android.gms.ads.internal.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdapterStatusParcel;
|
||||
import com.google.android.gms.ads.internal.RequestConfigurationParcel;
|
||||
import com.google.android.gms.ads.internal.client.IOnAdInspectorClosedListener;
|
||||
import com.google.android.gms.ads.internal.initialization.IInitializationCallback;
|
||||
import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator;
|
||||
import com.google.android.gms.dynamic.IObjectWrapper;
|
||||
|
||||
interface IMobileAdsSettingManager {
|
||||
void initialize() = 0;
|
||||
void setAppVolume(float volume) = 1;
|
||||
void fetchAppSettings(String appId) = 2;
|
||||
void setAppMuted(boolean muted) = 3;
|
||||
void openDebugMenu(IObjectWrapper context, String adUnitId) = 4;
|
||||
void fetchAppSettingsV2(String appId, IObjectWrapper runnable) = 5;
|
||||
float getAdVolume() = 6;
|
||||
boolean isAdMuted() = 7;
|
||||
String getVersionString() = 8;
|
||||
void registerRtbAdapter(String className) = 9;
|
||||
void setAdapterCreator(IAdapterCreator iAdapterCreator) = 10;
|
||||
void addInitializationCallback(IInitializationCallback callback) = 11;
|
||||
List<AdapterStatusParcel> getAdapterStatus() = 12;
|
||||
void setRequestConfiguration(in RequestConfigurationParcel configuration) = 13;
|
||||
void disableMediationAdapterInitialization() = 14;
|
||||
void openAdInspector(IOnAdInspectorClosedListener listener) = 15;
|
||||
void enableSameAppKey(boolean enabled) = 16;
|
||||
void setPlugin(String plugin) = 17;
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
package com.google.android.gms.ads.internal.client;
|
||||
|
||||
import com.google.android.gms.dynamic.IObjectWrapper;
|
||||
|
||||
interface IMobileAdsSettingManagerCreator {
|
||||
IBinder getMobileAdsSettingManager(IObjectWrapper context, int clientVersion);
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
package com.google.android.gms.ads.internal.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdErrorParcel;
|
||||
|
||||
interface IOnAdInspectorClosedListener {
|
||||
void onAdInspectorClosed(in @nullable AdErrorParcel adErrorParcel);
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
package com.google.android.gms.ads.internal.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdErrorParcel;
|
||||
|
||||
interface IOnAdMetadataChangedListener {
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
package com.google.android.gms.ads.internal.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdErrorParcel;
|
||||
|
||||
interface IOnPaidEventListener {
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
package com.google.android.gms.ads.internal.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdapterResponseInfoParcel;
|
||||
|
||||
interface IResponseInfo {
|
||||
String getMediationAdapterClassName() = 0;
|
||||
String getResponseId() = 1;
|
||||
List<AdapterResponseInfoParcel> getAdapterResponseInfo() = 2;
|
||||
AdapterResponseInfoParcel getLoadedAdapterResponse() = 3;
|
||||
Bundle getResponseExtras() = 4;
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
package com.google.android.gms.ads.internal.initialization;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdapterStatusParcel;
|
||||
|
||||
interface IInitializationCallback {
|
||||
void onInitialized(in List<AdapterStatusParcel> status);
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
package com.google.android.gms.ads.internal.mediation.client;
|
||||
|
||||
interface IAdapterCreator {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
package com.google.android.gms.ads.internal.rewarded.client;
|
||||
|
||||
interface IRewardItem {
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package com.google.android.gms.ads.internal.rewarded.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdRequestParcel;
|
||||
import com.google.android.gms.ads.internal.ServerSideVerificationOptionsParcel;
|
||||
import com.google.android.gms.ads.internal.client.IOnPaidEventListener;
|
||||
import com.google.android.gms.ads.internal.client.IOnAdMetadataChangedListener;
|
||||
import com.google.android.gms.ads.internal.client.IResponseInfo;
|
||||
import com.google.android.gms.ads.internal.rewarded.client.IRewardedAdCallback;
|
||||
import com.google.android.gms.ads.internal.rewarded.client.IRewardedAdLoadCallback;
|
||||
import com.google.android.gms.ads.internal.rewarded.client.IRewardedAdSkuListener;
|
||||
import com.google.android.gms.ads.internal.rewarded.client.IRewardItem;
|
||||
import com.google.android.gms.dynamic.IObjectWrapper;
|
||||
|
||||
interface IRewardedAd {
|
||||
void load(in AdRequestParcel request, IRewardedAdLoadCallback callback) = 0;
|
||||
void setCallback(IRewardedAdCallback callback) = 1;
|
||||
boolean canBeShown() = 2;
|
||||
String getMediationAdapterClassName() = 3;
|
||||
void show(IObjectWrapper activity) = 4;
|
||||
void setRewardedAdSkuListener(IRewardedAdSkuListener listener) = 5;
|
||||
void setServerSideVerificationOptions(in ServerSideVerificationOptionsParcel options) = 6;
|
||||
void setOnAdMetadataChangedListener(IOnAdMetadataChangedListener listener) = 7;
|
||||
Bundle getAdMetadata() = 8;
|
||||
void showWithImmersive(IObjectWrapper activity, boolean immersive) = 9;
|
||||
IRewardItem getRewardItem() = 10;
|
||||
IResponseInfo getResponseInfo() = 11;
|
||||
void setOnPaidEventListener(IOnPaidEventListener listener) = 12;
|
||||
void loadInterstitial(in AdRequestParcel request, IRewardedAdLoadCallback callback) = 13;
|
||||
void setImmersiveMode(boolean enabled) = 14;
|
||||
}
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
package com.google.android.gms.ads.internal.rewarded.client;
|
||||
|
||||
interface IRewardedAdCallback {
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package com.google.android.gms.ads.internal.rewarded.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator;
|
||||
import com.google.android.gms.dynamic.IObjectWrapper;
|
||||
|
||||
interface IRewardedAdCreator {
|
||||
IBinder newRewardedAd(IObjectWrapper context, String str, IAdapterCreator adapterCreator, int clientVersion);
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.google.android.gms.ads.internal.rewarded.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdErrorParcel;
|
||||
|
||||
interface IRewardedAdLoadCallback {
|
||||
void onAdLoaded() = 0;
|
||||
void onAdLoadErrorCode(int code) = 1;
|
||||
void onAdLoadError(in AdErrorParcel error) = 2;
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
package com.google.android.gms.ads.internal.rewarded.client;
|
||||
|
||||
import com.google.android.gms.ads.internal.AdErrorParcel;
|
||||
|
||||
interface IRewardedAdSkuListener {
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
package com.google.android.gms.ads.measurement;
|
||||
|
||||
interface IAppMeasurementProxy {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package com.google.android.gms.ads.measurement;
|
||||
|
||||
import com.google.android.gms.ads.measurement.IAppMeasurementProxy;
|
||||
import com.google.android.gms.dynamic.IObjectWrapper;
|
||||
|
||||
interface IMeasurementManager {
|
||||
void initialize(IObjectWrapper context, IAppMeasurementProxy proxy) = 1;
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Google Ad Manager.
|
||||
*/
|
||||
package com.google.android.gms.ads.admanager;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for H5 ads.
|
||||
*/
|
||||
package com.google.android.gms.ads.h5;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes related to SDK initialization.
|
||||
*/
|
||||
package com.google.android.gms.ads.initialization;
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.google.android.gms.ads.internal;
|
||||
|
||||
import org.microg.safeparcel.AutoSafeParcelable;
|
||||
|
||||
public class AdDataParcel extends AutoSafeParcelable {
|
||||
public static final Creator<AdDataParcel> CREATOR = new AutoCreator<>(AdDataParcel.class);
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.google.android.gms.ads.internal;
|
||||
|
||||
import com.google.android.gms.ads.internal.client.IResponseInfo;
|
||||
import org.microg.safeparcel.AutoSafeParcelable;
|
||||
|
||||
public class AdErrorParcel extends AutoSafeParcelable {
|
||||
@Field(1)
|
||||
public int code;
|
||||
@Field(2)
|
||||
public String message;
|
||||
@Field(3)
|
||||
public String domain;
|
||||
@Field(4)
|
||||
public AdErrorParcel cause;
|
||||
@Field(5)
|
||||
public IResponseInfo responseInfo;
|
||||
public static final Creator<AdErrorParcel> CREATOR = new AutoCreator<>(AdErrorParcel.class);
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.google.android.gms.ads.internal;
|
||||
|
||||
import android.location.Location;
|
||||
import android.os.Bundle;
|
||||
import org.microg.safeparcel.AutoSafeParcelable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class AdRequestParcel extends AutoSafeParcelable {
|
||||
@Field(1)
|
||||
private int versionCode = 8;
|
||||
@Field(2)
|
||||
public long birthday;
|
||||
@Field(3)
|
||||
public Bundle adMobNetworkExtras = new Bundle();
|
||||
@Field(4)
|
||||
public int gender;
|
||||
@Field(5)
|
||||
public ArrayList<String> keywords;
|
||||
@Field(6)
|
||||
public boolean isTestDevice;
|
||||
@Field(7)
|
||||
public int taggedForChildDirectedTreatment;
|
||||
@Field(9)
|
||||
public String publisherProvidedId;
|
||||
@Field(10)
|
||||
public SearchAdRequestParcel searchAdRequest;
|
||||
@Field(11)
|
||||
public Location location;
|
||||
@Field(12)
|
||||
public String contentUrl;
|
||||
@Field(13)
|
||||
public Bundle networkExtrasBundles = new Bundle();
|
||||
@Field(14)
|
||||
public Bundle customTargeting;
|
||||
@Field(15)
|
||||
public List<String> categoryExclusion;
|
||||
@Field(16)
|
||||
public String requestAgent;
|
||||
@Field(18)
|
||||
public boolean designedForFamilies;
|
||||
@Field(19)
|
||||
public AdDataParcel adData;
|
||||
@Field(20)
|
||||
public int tagForUnderAgeOfConsent;
|
||||
@Field(21)
|
||||
public String maxAdContentRating;
|
||||
@Field(22)
|
||||
public List<String> neighboringContentUrls;
|
||||
@Field(23)
|
||||
public int httpTimeoutMillis;
|
||||
@Field(24)
|
||||
public String adString;
|
||||
|
||||
public static final Creator<AdRequestParcel> CREATOR = new AutoCreator<>(AdRequestParcel.class);
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.google.android.gms.ads.internal;
|
||||
|
||||
import android.os.Bundle;
|
||||
import org.microg.safeparcel.AutoSafeParcelable;
|
||||
|
||||
public class AdapterResponseInfoParcel extends AutoSafeParcelable {
|
||||
@Field(1)
|
||||
public String adapterClassName;
|
||||
@Field(2)
|
||||
public long latencyMillis;
|
||||
@Field(3)
|
||||
public AdErrorParcel error;
|
||||
@Field(4)
|
||||
public Bundle credentials;
|
||||
@Field(5)
|
||||
public String adSourceName;
|
||||
@Field(6)
|
||||
public String adSourceId;
|
||||
@Field(7)
|
||||
public String adSourceInstanceName;
|
||||
@Field(8)
|
||||
public String adSourceInstanceId;
|
||||
|
||||
public static final Creator<AdapterResponseInfoParcel> CREATOR = new AutoCreator<>(AdapterResponseInfoParcel.class);
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.google.android.gms.ads.internal;
|
||||
|
||||
import org.microg.safeparcel.AutoSafeParcelable;
|
||||
|
||||
public class AdapterStatusParcel extends AutoSafeParcelable {
|
||||
@Field(1)
|
||||
public String className;
|
||||
@Field(2)
|
||||
public boolean isReady;
|
||||
@Field(3)
|
||||
public int latency;
|
||||
@Field(4)
|
||||
public String description;
|
||||
|
||||
public AdapterStatusParcel() {}
|
||||
|
||||
public AdapterStatusParcel(String className, boolean isReady, int latency, String description) {
|
||||
this.className = className;
|
||||
this.isReady = isReady;
|
||||
this.latency = latency;
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public static final Creator<AdapterStatusParcel> CREATOR = new AutoCreator<>(AdapterStatusParcel.class);
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.google.android.gms.ads.internal;
|
||||
|
||||
import org.microg.safeparcel.AutoSafeParcelable;
|
||||
|
||||
public class RequestConfigurationParcel extends AutoSafeParcelable {
|
||||
public static final Creator<RequestConfigurationParcel> CREATOR = new AutoCreator<>(RequestConfigurationParcel.class);
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.google.android.gms.ads.internal;
|
||||
|
||||
import org.microg.safeparcel.AutoSafeParcelable;
|
||||
|
||||
public class SearchAdRequestParcel extends AutoSafeParcelable {
|
||||
@Field(15)
|
||||
public String query;
|
||||
public static final Creator<SearchAdRequestParcel> CREATOR = new AutoCreator<>(SearchAdRequestParcel.class);
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2023 microG Project Team
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package com.google.android.gms.ads.internal;
|
||||
|
||||
import org.microg.safeparcel.AutoSafeParcelable;
|
||||
|
||||
public class ServerSideVerificationOptionsParcel extends AutoSafeParcelable {
|
||||
@Field(1)
|
||||
public String userId;
|
||||
@Field(2)
|
||||
public String customData;
|
||||
public static final Creator<ServerSideVerificationOptionsParcel> CREATOR = new AutoCreator<>(ServerSideVerificationOptionsParcel.class);
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Interstitial Ads.
|
||||
*/
|
||||
package com.google.android.gms.ads.interstitial;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Google Mobile Ads mediation custom events.
|
||||
*/
|
||||
package com.google.android.gms.ads.mediation.customevent;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Google Mobile Ads mediation adapters.
|
||||
*/
|
||||
package com.google.android.gms.ads.mediation;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Google Mobile Ads RTB mediation adapters.
|
||||
*/
|
||||
package com.google.android.gms.ads.mediation.rtb;
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for native ads functionality within Google Mobile
|
||||
Ads.
|
||||
*/
|
||||
package com.google.android.gms.ads.nativead;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Google Mobile Ads.
|
||||
*/
|
||||
package com.google.android.gms.ads;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Rewarded Ads.
|
||||
*/
|
||||
package com.google.android.gms.ads.rewarded;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Rewarded Interstitial Ads.
|
||||
*/
|
||||
package com.google.android.gms.ads.rewardedinterstitial;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2022 microG Project Team
|
||||
* SPDX-License-Identifier: CC-BY-4.0
|
||||
* Notice: Portions of this file are reproduced from work created and shared by Google and used
|
||||
* according to terms described in the Creative Commons 4.0 Attribution License.
|
||||
* See https://developers.google.com/readme/policies for details.
|
||||
*/
|
||||
/**
|
||||
* Contains classes for Search Ads for Apps.
|
||||
*/
|
||||
package com.google.android.gms.ads.search;
|
||||
Loading…
Add table
Add a link
Reference in a new issue