2.8.49.1 Unity SDK Integration Guide

Get started

1. Get the app key

Add your app to Appodeal and get the app key for your application, as it is used during SDK integration.

2. Link your Admob account to Appodeal

Appodeal yields optimal results in cooperation with Admob. Use our Chrome extension to link them. The extension will allow Appodeal to access your Admob reports over API, and will create new ad units on Admob and submit them to Appodeal.

If you don't have Admob account, please sign up on admob.com.

Before installing the Appodeal extension, disable all third-party extensions. They may interfere with the correct operation of the Appodeal extension.


General Data Protection Regulation (GDPR) compliance

Publishers need to update their apps to collect the user consent prior to initializing our SDK (Read our guide on collecting consent here).

Publishers need to pass the boolean consent flag(with 'false' meaning that the user declined to give the consent) to the Appodeal.initialize() method of our SDK.

Appodeal.initialize(YOUR_APPODEAL_APP_KEY, adTypes, consentValue);

Integrate SDK 

1. Download SDK

Download Unity SDK 2.8.49.1. Appodeal Unity 2.8.49 contains Android SDK 2.4.10 and iOS SDK 2.4.10.

If you are not using MultiDex over custom gradle template, export to Android Studio or Eclipse with Andmore Plugin, use the Appodeal SDK below. 

This version does not contain all the networks due to 65k issue resolution. If you would like to have the maximum performance, please turn on MultiDex. How to enable MultiDex in Unity.

You can use our demo app as a reference project.

You can integrate beta Appodeal SDK 2.8.53 includes the newest Appodeal SDK 2.5.0 with major improvements, asynchronous ads loading support. Be aware that this version is still beta and may contain bugs.

Minimum OS requirements:

  • Unity 5.0.0+;
  • Android API level 14 (Android OS 4.0). You can include Appodeal SDK in apps with lower minSdkVersion.
  • iOS 8.0 or higher. You still can integrate the Appodeal SDK into a project with a lower value of minimum iOS version. On the devices that don’t support iOS 8.0+ our SDK will just be disabled.

Mediation A/B testing

If you want to compare Appodeal's performance to another mediation, please follow this Mediation A/B testing guide.

2. Android configuration

1. Import the Appodeal Unity plugin

Open your project in the Unity Editor. Go to Assets → Import Package → Custom package and select the downloaded *.unityPackage file. Select all the files and press Import.  

2. Google Play Services & Android Support Libraries

Appodeal requires Google Play Services 12.0.0 or higher and Android Support 26.1.0 or higher. You can add them in either way:

  • using Google Play Services Resolver;  
  • using *.unitypackage.

Option 1. Use Google Play Services Resolver

Google's Play Services Resolver now separated from Appodeal's Unity Plugin because it caused many issues in cooperation with other plugins.

Please refer to one of the following cases to resolve Appodeal's dependencies:

  • You don't have Google Play Services Resolver in your project yet:

1. Download unitypackage containing Google Play Services Resolver plugin and Appodeal's Dependencies file.

2. After the import, in the Unity editor select File → Build Settings → Android.

3. Then run Assets → Play Services Resolver → Android Resolver and press Resolve Client Jars.

4. As a result, the modules, that are required for the Appodeal SDK support, will be imported to your project. You can edit them or add other modules in the Assets → Appodeal → Editor → AppodealDependencies.xml file.

  • You are using Google Play Services Resolver in your project with another plugin:

Add following dependencies to your current dependencies.xml file:

<dependencies>
<androidPackages>
<androidPackage spec="com.google.android.gms:play-services-ads:15.0.1">
<androidSdkPackageIds>
<androidSdkPackageId>extra-google-m2repository</androidSdkPackageId>
</androidSdkPackageIds>
<repositories>
<repository>https://maven.google.com</repository>
</repositories>
</androidPackage>
<androidPackage spec="com.google.android.gms:play-services-gcm:15.0.1">
<androidSdkPackageIds>
<androidSdkPackageId>extra-google-m2repository</androidSdkPackageId>
</androidSdkPackageIds>
<repositories>
<repository>https://maven.google.com</repository>
</repositories>
</androidPackage>
<androidPackage spec="com.google.android.gms:play-services-location:15.0.1">
<androidSdkPackageIds>
<androidSdkPackageId>extra-google-m2repository</androidSdkPackageId>
</androidSdkPackageIds>
<repositories>
<repository>https://maven.google.com</repository>
</repositories>
</androidPackage>
<androidPackage spec="com.android.support:support-v4:26.1.0">
<androidSdkPackageIds>
<androidSdkPackageId>extra-android-m2repository</androidSdkPackageId>
</androidSdkPackageIds>
<repositories>
<repository>https://maven.google.com</repository>
</repositories>
</androidPackage>
<androidPackage spec="com.android.support:recyclerview-v7:26.1.0">
<androidSdkPackageIds>
<androidSdkPackageId>extra-android-m2repository</androidSdkPackageId>
</androidSdkPackageIds>
<repositories>
<repository>https://maven.google.com</repository>
</repositories>
</androidPackage>
</androidPackages>
</dependencies>
Or you can add this file with dependencies to the Assets/Editor folder.

Option 2. Use *.unitypackage

You can import Google Play Services and Android Support libraries manually using this unitypackage's:


If you use Play Services version 17 or higher, add <meta-data> tag to AndroidManifest file:

<manifest>
	<application>
		<meta-data
			android:name="com.google.android.gms.ads.APPLICATION_ID"
			android:value="[ADMOB_APP_ID]"/>
	</application>
</manifest>

3. Configure AndroidManifest.xml

All the required AndroidManifest.xml tags are already added to the Appodeal Unity Plugin. If you don't want to use optional permissions, go to Plugins → Android → Appodeal, open AndroidManifest.xml and remove them from there.

Add required permissions to your AndroidManifest.xml file under manifest tag:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

Add optional permissions to your AndroidManifest.xml file under manifest tag to improve ad targeting:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Add the lines below to the application section of your AndroidManifest.xml file:

<activity android:name="com.appodeal.ads.InterstitialActivity" 
    android:configChanges="orientation|screenSize" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity android:name="com.appodeal.ads.VideoActivity" 
    android:configChanges="orientation|screenSize"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity android:name="com.appodealx.mraid.MraidActivity" 
    android:configChanges="orientation|screenSize" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<activity android:name="com.appodeal.ads.VideoPlayerActivity" 
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"/>
<receiver android:name="com.appodeal.ads.AppodealPackageAddedReceiver" 
    android:exported="true" 
    android:enabled="true">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED" />
        <data android:scheme="package" />
    </intent-filter>
</receiver>
<activity android:name="com.appodeal.ads.TestActivity" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<meta-data android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" />
<activity android:name="com.google.android.gms.ads.AdActivity" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
    android:theme="@android:style/Theme.Translucent" />

<activity android:name="org.nexage.sourcekit.vast.activity.VASTActivity" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:configChanges="keyboardHidden|orientation|screenSize"/>

<activity android:name="org.nexage.sourcekit.vast.activity.VPAIDActivity" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />

<activity android:name="com.appodeal.ads.networks.vpaid.VPAIDActivity" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />

<!-- Chartboost -->
<activity android:name="com.chartboost.sdk.CBImpressionActivity" 
    android:excludeFromRecents="true" 
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 
    android:configChanges="keyboardHidden|orientation|screenSize" />
<!-- End Chartboost -->

<!-- Applovin -->
<activity android:name="com.applovin.adview.AppLovinInterstitialActivity" 
    android:configChanges="orientation|screenSize"/>
<activity android:name="com.applovin.adview.AppLovinConfirmationActivity" 
    android:configChanges="orientation|screenSize"/>
<!-- End Applovin -->

<!-- Mopub -->
<activity android:name="com.mopub.common.privacy.ConsentDialogActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity android:name="com.mopub.common.MoPubBrowser" 
    android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity android:name="com.mopub.mobileads.MoPubActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" />
<activity android:name="com.mopub.mobileads.MraidActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity android:name="com.mopub.mobileads.RewardedMraidActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"/>
<activity android:name="com.mopub.mobileads.MraidVideoPlayerActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize"/>
<!-- End Mopub -->

<!-- Amazon_ads -->
<activity android:name="com.amazon.device.ads.AdActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"/>
<!-- End Amazon_ads -->

<!-- Facebook -->
<!--suppress AndroidDomInspection -->
<activity
    android:name="com.facebook.ads.AudienceNetworkActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:exported="false" />
<activity
    android:name="com.facebook.ads.internal.ipc.RemoteANActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:exported="false"
    android:process=":adnw" />
<service
    android:name="com.facebook.ads.internal.ipc.AdsProcessPriorityService"
    android:exported="false" />
<service
    android:name="com.facebook.ads.internal.ipc.AdsMessengerService"
    android:exported="false"
    android:process=":adnw" />
<!-- End Facebook -->

<!-- Startapp -->
<!--suppress AndroidDomInspection -->
<activity android:name="com.startapp.android.publish.ads.list3d.List3DActivity" 
    android:theme="@android:style/Theme" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.startapp.android.publish.adsCommon.activities.OverlayActivity" 
    android:theme="@android:style/Theme.Translucent" 
    android:configChanges="orientation|keyboardHidden|screenSize" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.startapp.android.publish.adsCommon.activities.FullScreenActivity" 
    android:theme="@android:style/Theme" 
    android:configChanges="orientation|keyboardHidden|screenSize" />
<!--suppress AndroidDomInspection -->
<service android:name="com.startapp.android.publish.common.metaData.PeriodicMetaDataService" />
<!--suppress AndroidDomInspection -->
<service android:name="com.startapp.android.publish.common.metaData.InfoEventService" />
<!--suppress AndroidDomInspection -->
<service android:name="com.startapp.android.publish.common.metaData.PeriodicJobService" 
    android:permission="android.permission.BIND_JOB_SERVICE" />
<receiver android:name="com.startapp.android.publish.common.metaData.BootCompleteListener">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
<!-- End Startapp -->

<!-- Yandex-metrica -->
<service android:name="com.yandex.metrica.MetricaService"
    android:enabled="true"
    android:exported="true" 
    android:process=":Metrica" 
    tools:ignore="ExportedService">
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT" />
        <action android:name="com.yandex.metrica.IMetricaService" />
        <data android:scheme="metrica" />
    </intent-filter>
    <meta-data android:name="metrica:api:level" 
        android:value="70" />
</service>
<service android:name="com.yandex.metrica.ConfigurationService" 
    android:enabled="true" 
    android:exported="true" 
    android:process=":Metrica" 
    tools:ignore="ExportedService">
    <meta-data android:name="metrica:configuration:api:level" android:value="2" />
    <intent-filter>
        <action android:name="com.yandex.metrica.configuration.ACTION_START" />
    </intent-filter>
</service>
<service android:name="com.yandex.metrica.ConfigurationJobService" 
    android:enabled="true" android:exported="false" 
    android:permission="android.permission.BIND_JOB_SERVICE"
    android:process=":Metrica">
</service>
<receiver android:name="com.yandex.metrica.MetricaEventHandler" 
    android:enabled="true" 
    android:exported="true" 
    tools:ignore="ExportedReceiver">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>
<!-- End Yandex-metrica -->

<!-- Yandex-mobileads -->
<!--suppress AndroidDomInspection -->
<activity android:name="com.yandex.mobile.ads.AdActivity" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
<!-- End Yandex-mobileads -->

<!-- Unity_ads -->
<activity android:name="com.unity3d.ads.adunit.AdUnitActivity" 
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:hardwareAccelerated="true" />
<activity android:name="com.unity3d.ads.adunit.AdUnitSoftwareActivity" 
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:hardwareAccelerated="false" />
<activity android:name="com.unity3d.ads.adunit.AdUnitTransparentActivity" 
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 
    android:hardwareAccelerated="true" />
<activity android:name="com.unity3d.ads.adunit.AdUnitTransparentSoftwareActivity" 
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 
    android:hardwareAccelerated="false" />
<activity android:name="com.unity3d.ads2.adunit.AdUnitActivity" 
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:hardwareAccelerated="true" />
<activity android:name="com.unity3d.ads2.adunit.AdUnitSoftwareActivity" 
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:hardwareAccelerated="false" />
<activity android:name="com.unity3d.ads2.adunit.AdUnitTransparentActivity" 
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 
    android:hardwareAccelerated="true" />
<activity android:name="com.unity3d.ads2.adunit.AdUnitTransparentSoftwareActivity" 
    android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 
    android:hardwareAccelerated="false" />
<!-- End Unity_ads -->

<!-- Vungle -->
<!--suppress AndroidDomInspection -->
<activity android:name="com.vungle.warren.ui.VungleActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize" 
    android:launchMode="singleTop" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity android:name="com.vungle.warren.ui.VungleWebViewActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize" 
    android:launchMode="singleTop" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity android:name="com.vungle.warren.ui.VungleFlexViewActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize" 
    android:launchMode="singleTop" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<!-- End Vungle -->

<!-- Flurry-ads -->
<!--suppress AndroidDomInspection -->
<activity android:name="com.flurry.android.FlurryFullscreenTakeoverActivity" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize">
</activity>
<!-- End Flurry-ads -->

<!-- Mobvista -->
<activity
    android:name="com.mintegral.msdk.activity.MTGCommonActivity"
    android:configChanges="keyboard|orientation"
    android:exported="true"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
    android:name="com.mintegral.msdk.reward.player.MTGRewardVideoActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />
<activity
    android:name="com.mintegral.msdk.interstitial.view.MTGInterstitialActivity"
    android:configChanges="orientation|screenSize"
    android:screenOrientation="portrait" />
<service android:name="com.mintegral.msdk.shell.MTGService">
    <intent-filter>
        <action android:name="com.mintegral.msdk.download.action" />
    </intent-filter>
</service>
<!-- End Mobvista -->

<!-- Tapjoy -->
<!--suppress AndroidDomInspection -->
<activity android:name="com.tapjoy.TJAdUnitActivity" 
    android:configChanges="orientation|keyboardHidden|screenSize" 
    android:hardwareAccelerated="true" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.tapjoy.mraid.view.ActionHandler" 
    android:configChanges="orientation|keyboardHidden|screenSize" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.tapjoy.mraid.view.Browser" 
    android:configChanges="orientation|keyboardHidden|screenSize" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.tapjoy.TJContentActivity" 
    android:configChanges="orientation|keyboardHidden|screenSize" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar" 
    android:hardwareAccelerated="true" />
<!-- End Tapjoy -->

<!-- Ironsource -->
<!--suppress AndroidDomInspection -->
<activity android:name="com.ironsource.sdk.controller.ControllerActivity" 
    android:configChanges="orientation|screenSize" 
    android:hardwareAccelerated="true" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.ironsource.sdk.controller.InterstitialActivity" 
    android:configChanges="orientation|screenSize" 
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.Translucent" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.ironsource.sdk.controller.OpenUrlActivity" 
    android:configChanges="orientation|screenSize"
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.Translucent" />
<!-- End Ironsource -->

<!-- Adcolony -->
<!--suppress AndroidDomInspection -->
<activity android:name="com.adcolony.sdk.AdColonyInterstitialActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:hardwareAccelerated="true"/>
<!--suppress AndroidDomInspection -->
<activity android:name="com.adcolony.sdk.AdColonyAdViewActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:hardwareAccelerated="true"/>
<!-- End Adcolony -->

<!-- Inmobi -->
<activity android:name="com.inmobi.rendering.InMobiAdActivity" 
    android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize|screenLayout" 
    android:hardwareAccelerated="true" 
    android:resizeableActivity="false" 
    android:theme="@android:style/Theme.NoTitleBar" 
    tools:ignore="UnusedAttribute"/>
<!-- End Inmobi -->

<!-- Mailru -->
<activity android:name="com.my.target.common.MyTargetActivity" 
    android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
<!-- End Mailru -->

3. iOS configuration

No additional steps are required to include the Appodeal SDK into an iOS-based project. 

4. Initialize SDK

Before starting to load ads, you need to initialize the Appodeal SDK, as follows:

1. Import the namespaces:

using AppodealAds.Unity.Api;
using AppodealAds.Unity.Common;
2. Add the following code within the Start() method of your main scene’s MonoBehavior: 
string appKey = "9024fdb392ea431eda69ea1fb5291a74d3f3ebce9a322cf0";
Appodeal.initialize("YOUR_APPODEAL_APP_KEY", adTypes, consentValue);
consentValue is boolean, with 'false' meaning that the user declines to give the consent. Read our guide on collecting consent here.

Make sure to replace YOUR_APPODEAL_APP_KEY with the actual app key.

To initialize the SDK, add the lines below to the onCreate method of your main activity:

Use the type codes below to set the preferred ad format:

  • Appodeal.INTERSTITIAL for interstitial;
  • Appodeal.REWARDED_VIDEO for rewarded videos;
  • Appodeal.NON_SKIPPABLE_VIDEO for non-skippable videos;
  • Appodeal.BANNER for banners;
  • Appodeal.MREC for 300*250 banners.

Please note:

1. Ad types can be combined using "|" operator. For example, Appodeal.INTERSTITIAL | Appodeal.REWARDED_VIDEO.

2. Appodeal.NON_SKIPPABLE_VIDEO - the alias of Appodeal.REWARDED_VIDEO. Both of them shouldn't be used together.

Non-skippable and rewarded videos cannot be used simultaneously. If you are not sure, which ad formats would suit you the best, check out our FAQ.

Publish your app

iOS publication

1. Update Your IDFA Settings

When you submit your application to the AppStore, you need to update its "Advertising Identifier (IDFA)" settings in order to comply with Apple advertising policy.

1. Go to the Advertising Identifier section.

2. Set Yes on the right panel.

3. Tick Serve advertisements within the app and Attribute this app installation to a previously served advertisement. 

4. Tick confirmation box under Limit Ad tracking setting in iOS.

2. Add usage descriptions to info.plist

If your app gets rejected by the App Store because of some missing usage descriptions, add those of them you need to your info.plist file:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Advertising</string>
<key>NSCalendarsUsageDescription</key>
<string>Advertising</string>

Android publication

Proguard settings

If you are using Proguard, add the following to your Proguard config file:

# AdMediator
-keep class com.admediator.** { *; }

# Appodeal
-keep class com.appodeal.** { *; }
-keep class com.appodealx.** { *; }
-keep class org.nexage.** { *; }
-keepattributes EnclosingMethod, InnerClasses, Signature, JavascriptInterface

# Amazon
-keep class com.amazon.** { *; }
-dontwarn com.amazon.**

# Mopub
-keep public class com.mopub.**
-keepclassmembers class com.mopub.** { public *; }
-dontwarn com.mopub.**
-keep class * extends com.mopub.mobileads.CustomEventBanner {}
-keepclassmembers class com.mopub.mobileads.CustomEventBannerAdapter {!private !public !protected *;}
-keep class * extends com.mopub.mobileads.CustomEventInterstitial {}
-keep class * extends com.mopub.nativeads.CustomEventNative {}
-keep class * extends com.mopub.mobileads.CustomEventRewardedVideo {}
-keep class * extends com.mopub.nativeads.CustomEventRewardedAd {}
-keepclassmembers class ** { @com.mopub.common.util.ReflectionTarget *; }
-dontwarn com.mopub.volley.toolbox.**
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.NetworkDispatcher {
    void processRequest();
}
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.CacheDispatcher {
    void processRequest();
}
-keep public class android.webkit.JavascriptInterface {}
-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

# Applovin
-keep class com.applovin.** { *; }
-dontwarn com.applovin.**

# Facebook
-keep class com.facebook.ads.** { *; }
-keeppackagenames com.facebook.*
-dontwarn com.facebook.ads.**

# Chartboost
-keep class com.chartboost.** { *; }
-dontwarn com.chartboost.**

# Unity Ads
-keepattributes SourceFile,LineNumberTable
-keep class com.unity3d.** { *; }
-dontwarn com.unity3d.**

# Yandex
-keep class com.yandex.metrica.** { *; }
-dontwarn com.yandex.metrica.**
-keep class com.yandex.mobile.ads.** { *; }
-dontwarn com.yandex.mobile.ads.**
-keepattributes *Annotation*
-keep class com.android.installreferrer.api.* { *; }
-dontwarn com.android.installreferrer.api.*

# StartApp
-keep class com.startapp.** { *;}
-keep class com.truenet.** { *;}
-dontwarn com.startapp.**
-dontwarn android.webkit.JavascriptInterface
-keepattributes Exceptions, InnerClasses, Signature, Deprecated, SourceFile, LineNumberTable, *Annotation*, EnclosingMethod
-dontwarn org.jetbrains.annotations.**

# Flurry
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepclasseswithmembers class * {
  public <init>(android.content.Context, android.util.AttributeSet, int);
}

# Adcolony
-keep class com.jirbo.adcolony.** { *;}
-keep class com.adcolony.** { *;}
-keep class com.immersion.** { *;}
-dontnote com.immersion.**
-dontwarn android.webkit.**
-dontwarn com.jirbo.adcolony.**
-dontwarn com.adcolony.**
-keepclassmembers class com.adcolony.sdk.ADCNative** { *; }

# Vungle
-keep class com.vungle.warren.** { *; }
-dontwarn com.vungle.warren.error.VungleError$ErrorCode

# Vungle/Moat SDK
-keep class com.moat.** { *; }
-dontwarn com.moat.**

# Vungle/Okio
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

# Vungle/Retrofit
-dontwarn okio.**
-dontwarn retrofit2.Platform$Java8

# Vungle/Gson
-keepattributes Signature
-keepattributes *Annotation*
-dontwarn sun.misc.**
-keep class com.google.gson.examples.android.model.** { *; }
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

# Vungle/Google Android Advertising ID
-keep class com.google.android.gms.internal.** { *; }
-dontwarn com.google.android.gms.ads.identifier.**

# MyTarget
-keep class com.my.target.** { *; }
-dontwarn com.my.target.**

# Mobvista
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.mintegral.** {*; }
-keep interface com.mintegral.** {*; }
-keep class android.support.v4.** { *; }
-dontwarn com.mintegral.**
-keep class **.R$* { public static final int mintegral*; }
-keep class com.alphab.** {*; }
-keep interface com.alphab.** {*; }

# Admob
-keep class com.google.android.gms.ads.** { *; }

# Tapjoy
-keep class com.tapjoy.** { *; }
-dontwarn com.tapjoy.**

# IronSource
-keepclassmembers class com.ironsource.sdk.controller.IronSourceWebView$JSInterface { public *; }
-keepclassmembers class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }
-keep public class com.google.android.gms.ads.** { public *; }
-dontwarn com.moat.**
-keep class com.moat.** { public protected private *; }
-keep class com.ironsource.adapters.** { *; }
-keepnames class com.ironsource.mediationsdk.IronSource { *; }
-dontwarn com.ironsource.**

# AdColonyV3
-keepclassmembers class * { @android.webkit.JavascriptInterface <methods>; }
-keep class com.adcolony.** { *; }
-dontwarn com.adcolony.**
-dontwarn android.app.Activity

# Inmobi
-keep class com.inmobi.** { *; }
-dontwarn com.inmobi.**
-keep public class com.google.android.gms.**
-dontwarn com.squareup.picasso.**
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient{
     public *;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info{ *; }
-keep class com.squareup.picasso.** {*;}
-dontwarn com.squareup.picasso.**
-dontwarn com.squareup.okhttp.**
-keep class com.moat.** {*;}
-dontwarn com.moat.**
-keep class com.integralads.avid.library.* {*;}

# Google
-keep class com.google.android.gms.common.GooglePlayServicesUtil {*;}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.google.android.gms.**

# Legacy
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
-dontwarn android.net.http.**

# Google Play Services library
-keep class * extends java.util.ListResourceBundle {
  protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
  public static final *** NULL;
}
-keepnames class * implements android.os.Parcelable
-keepclassmembers class * implements android.os.Parcelable {
  public static final *** CREATOR;
}
-keep @interface android.support.annotation.Keep
-keep @android.support.annotation.Keep class *
-keepclasseswithmembers class * {
  @android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
  @android.support.annotation.Keep <methods>;
}
-keep @interface com.google.android.gms.common.annotation.KeepName
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
  @com.google.android.gms.common.annotation.KeepName *;
}
-keep @interface com.google.android.gms.common.util.DynamiteApi
-keep public @com.google.android.gms.common.util.DynamiteApi class * {
  public <fields>;
  public <methods>;
}
-keep class com.google.android.gms.common.GooglePlayServicesNotAvailableException {*;}
-keep class com.google.android.gms.common.GooglePlayServicesRepairableException {*;}

# Google Play Services library 9.0.0 only
-dontwarn android.security.NetworkSecurityPolicy
-keep public @com.google.android.gms.common.util.DynamiteApi class * { *; }

# support-v4
-keep class android.support.v4.app.Fragment { *; }
-keep class android.support.v4.app.FragmentActivity { *; }
-keep class android.support.v4.app.FragmentManager { *; }
-keep class android.support.v4.app.FragmentTransaction { *; }
-keep class android.support.v4.content.ContextCompat { *; }
-keep class android.support.v4.content.LocalBroadcastManager { *; }
-keep class android.support.v4.util.LruCache { *; }
-keep class android.support.v4.view.PagerAdapter { *; }
-keep class android.support.v4.view.ViewPager { *; }
-keep class android.support.v4.content.ContextCompat { *; }

# support-v7-recyclerview
-keep class android.support.v7.widget.RecyclerView { *; }
-keep class android.support.v7.widget.LinearLayoutManager { *; }

#MultiDex
-keepnames class android.support.multidex.MultiDex


It's done!

You are ready to use Appodeal and implement ad types. If you have any questions, check out our FAQ or contact the support team.

Third-party SDKs versions

NetworkAndroid SDK versioniOS SDK version
Adcolony3.3.43.3.5
Admob15.0.07.31.0
Amazon Ads5.9.02.2.17
Applovin8.0.25.0.2
Chartboost7.2.07.2.0
Facebook Audience Network5.1.05.1.0
Flurry11.0.09.0.0
Inmobi7.1.17.1.1
IronSource6.7.9.16.7.9.3
Mobvista9.0.03.8.1
myTarget5.1.04.7.9
Mopub5.1.05.2.0
Ogury3.0.13-
StartApp3.9.33.7.1
Tapjoy11.12.212.0.0
Unity Ads2.2.22.2.1
Vungle6.3.126.2.0
Yandex Mobile Ads2.722.9.0