SDK Integration | Appodeal Intelligent Ad Mediation

SDK Integration

App key

Link your Admob account

Appodeal yields optimal results in cooperation with Admob. To continue, you need to link your Admob account.

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

To link your Admob account to Appodeal, use the Chrome extension:

INSTALL EXTENSION


The extension source code is available at https://github.com/appodeal/admob-configurator.

The extension will make two changes in your Admob account. First, it will allow Appodeal to access your Admob reports over API, and second, it will create new ad units on Admob and submit them to Appodeal.

VIDEO TUTORIAL

Attention!

Starting from March 1, 2018, we will cease supporting Basic4Android framework. See more details here.

Download SDK

You can download Basic4Android SDK here.

Minimum OS requirements: Android API level 9 (Android OS 2.3).

AndroidManifest.xml

Add following to your AndroidManifest.xml:

Add following permissions:

AddPermission (android.permission.INTERNET)
AddPermission (android.permission.ACCESS_NETWORK_STATE)
AddPermission (android.permission.ACCESS_COARSE_LOCATION) //optional
AddPermission (android.permission.WRITE_EXTERNAL_STORAGE) //optional
AddPermission (android.permission.ACCESS_WIFI_STATE) //optional

Add following under application tag:

<activity android:name="com.appodeal.ads.InterstitialActivity"
	android:configChanges="orientation|screenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name="com.appodeal.ads.VideoActivity"
	android:configChanges="orientation|screenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name="com.appodeal.ads.LoaderActivity"
	android:configChanges="orientation|screenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<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="com.chartboost.sdk.CBImpressionActivity" android:excludeFromRecents="true"
	android:hardwareAccelerated="true" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
	android:configChanges="keyboardHidden|orientation|screenSize" />

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

<activity android:name="com.mopub.mobileads.MoPubActivity"
	android:configChanges="keyboardHidden|orientation|screenSize"
	android:theme="@android:style/Theme.Translucent" />
<activity android:name="com.mopub.common.MoPubBrowser"
	android:configChanges="keyboardHidden|orientation|screenSize" />
<activity android:name="com.mopub.mobileads.MraidActivity"
	android:configChanges="keyboardHidden|orientation|screenSize" />
<activity android:name="com.mopub.mobileads.MraidVideoPlayerActivity"
	android:configChanges="keyboardHidden|orientation|screenSize" />
<activity android:name="com.mopub.mobileads.RewardedMraidActivity"
	android:configChanges="keyboardHidden|orientation|screenSize"/>

<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" />

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

<activity android:name="com.my.target.ads.MyTargetActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
	android:hardwareAccelerated="true"/>

<!--suppress AndroidDomInspection -->
<activity android:name="com.facebook.ads.AudienceNetworkActivity" android:configChanges="keyboardHidden|orientation|screenSize" />

<!--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" />


<service android:name="com.yandex.metrica.MetricaService" android:enabled="true"
	android:exported="true" android:process=":Metrica">
	<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="58" />
</service>
<receiver android:name="com.yandex.metrica.MetricaEventHandler"
	android:enabled="true" android:exported="true">
	<intent-filter>
		<action android:name="com.android.vending.INSTALL_REFERRER" />
	</intent-filter>
</receiver>

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

<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.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" />

<!--suppress AndroidDomInspection -->
<activity android:name="com.jirbo.adcolony.AdColonyOverlay"
	android:configChanges="keyboardHidden|orientation|screenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.jirbo.adcolony.AdColonyFullscreen"
	android:configChanges="keyboardHidden|orientation|screenSize"
	android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.jirbo.adcolony.AdColonyBrowser"
	android:configChanges="keyboardHidden|orientation|screenSize"
	android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />

<!--suppress AndroidDomInspection -->
<activity android:name="com.vungle.publisher.VideoFullScreenAdActivity"
	android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
	android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>
<!--suppress AndroidDomInspection -->
<activity android:name="com.vungle.publisher.MraidFullScreenAdActivity"
	android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<!--suppress AndroidDomInspection -->
<activity android:name="com.vungle.publisher.FlexViewAdActivity"
	android:configChanges="keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

<!--suppress AndroidDomInspection -->
<activity android:name="com.flurry.android.FlurryFullscreenTakeoverActivity"
	android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.flurry.android.FlurryShareActivity"
	android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.flurry.android.FlurryTileAdActivity"
	android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
	android:screenOrientation="portrait"
	android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--suppress AndroidDomInspection -->
<activity android:name="com.flurry.android.FlurryBrowserActivity"
	android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
	android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<!--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" />

<!--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" />

<!--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"/>

<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" />
<receiver android:name="com.inmobi.commons.core.utilities.uid.ImIdShareBroadCastReceiver" android:enabled="true" android:exported="true">
	<intent-filter>
		<action android:name="com.inmobi.share.id"/>
	</intent-filter>
</receiver>

Advanced Features

Google Play device compatibility

If you are not using location services in you app and not using any other SDK that requires ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permissions, you can add the following code to manifest to make your app available on devices that don't have GPS support:

<uses-feature android:name="android.hardware.location" android:required="false" />
<uses-feature android:name="android.hardware.location.network" android:required="false" />

Basic4Android Integration

SDK and Plugin Integration

Copy all files from archive to your libraries folder. By default this is the Libraries folder typically located in: \Libraries. You can also configure an Additional Libraries folder by opening Tools -> Configure Paths.

Add additional jars and resources to your project:

#AdditionalJar: appodeal-2.1.7.jar
#AdditionalJar: inmobi-6.2.3.jar
#AdditionalJar: picasso-2.5.2.jar
#AdditionalJar: startapp-3.6.2.jar
#AdditionalJar: yandex-metrica-2.73.jar
#AdditionalJar: adcolony-3.1.2.jar

Attention: Appodeal SDK requires support-v4 (v23+) and google play services (v7.5+) libraries. You can use it from our plugin archive.

Ad Types

Appodeal.INTERSTITIAL

Appodeal.REWARDED_VIDEO

Appodeal.NON_SKIPPABLE_VIDEO

Appodeal.BANNER

Ad types can be combined using "Bit.OR" function. For example Bit.OR(Appodeal.BANNER, Appodeal.INTERSTITIAL)

SDK Initialization

Declare Appodeal variable somewhere in Sub Globals to use it in module:

Dim Appodeal As AppodealB4A

To initialize SDK you need to call::

Dim appKey As String = "fee50c333ff3825fd6ad6d38cff78154de3025546d47a84f"
Appodeal.initialize(appKey, Bit.OR(Appodeal.BANNER, Appodeal.INTERSTITIAL))

To initialize only interstitials use Appodeal.initialize(appKey, Appodeal.INTERSTITIAL)

To initialize only rewarded video use Appodeal.initialize(appKey, Appodeal.REWARDED_VIDEO)

To initialize only non-skippable video use Appodeal.initialize(appKey, Appodeal.NON_SKIPPABLE_VIDEO)

To initialize interstitials and banners use Appodeal.initialize(appKey, Bit.OR(Appodeal.BANNER, Appodeal.INTERSTITIAL))

To initialize only banners use Appodeal.initialize(appKey, Appodeal.BANNER)

Display Ad

Appodeal.show(adTypes)

show() returns a boolean value indicating whether show call was passed to appropriate SDK

To display interstitial use Appodeal.show(Appodeal.INTERSTITIAL)

To display rewarded video use Appodeal.show(Appodeal.REWARDED_VIDEO)

To display non-skippable video use Appodeal.show(Appodeal.NON_SKIPPABLE_VIDEO)

To display banner at the bottom of the screen use Appodeal.show(Appodeal.BANNER_BOTTOM)

To display banner at the top of the screen use Appodeal.show(Appodeal.BANNER_TOP)

Hiding Banner

To hide banner you need to call the following code in activity:

Appodeal.hide(Appodeal.BANNER)

Samples

Display interstitial after it was loaded

Sub Activity_Create(FirstTime As Boolean)
  Activity.LoadLayout("main")
  Dim Appodeal As AppodealB4A
  Appodeal.setAutoCache(Appodeal.ALL, False)
  Appodeal.initialize(appKey)
  Appodeal.cache(Appodeal.INTERSTITIAL)
  Appodeal.setEventHandler("Handler")
End Sub

Sub Handler_interstitialloaded
  Appodeal.show(Appodal.INTERSTITIAL)
End Sub

Display interstitial after app launch

Sub Activity_Create(FirstTime As Boolean)
  Activity.LoadLayout("main")
  Dim Appodeal As AppodealB4A
  Appodeal.initialize(appKey)
  Appodeal.show(Appodeal.INTERSTITIAL)
End Sub

Advanced Features

Enabling test mode

Appodeal.setTesting(True)

In test mode test, ads will be shown and debug data will be written to logcat

Enabling logging

Appodeal.setLogLevel(Appodeal.LOG_LEVEL_VERBOSE)

Enable debug logging to logcat using tag "Appodeal"

Available parameters: Appodeal.LOG_LEVEL_VERBOSE, Appodeal.LOG_LEVEL_DEBUG, Appodeal.LOG_LEVEL_NONE

Checking if ad is loaded

Appodeal.isLoaded(adTypes)

To check if interstitial is loaded use Appodeal.isLoaded(Appodeal.INTERSTITIAL)

To check if rewarded video is loaded use Appodeal.isLoaded(Appodeal.REWARDED_VIDEO)

To check if non-skippable video is loaded use Appodeal.isLoaded(Appodeal.NON_SKIPPABLE_VIDEO)

To check if banner is loaded use Appodeal.isLoaded(Appodeal.BANNER)

Checking if loaded ad is precache

Appodeal.isPrecache(adTypes)

Currently supported only for interstitials, Use Appodeal.isPrecache(Appodeal.INTERSTITIAL)

Setting Interstitial callbacks

Appodeal.setInterstitialCallbacks()
Appodeal.setEventHandler("Handler")

Sub Handler_interstitialloaded
End Sub
Sub Handler_interstitialfailedtoload
End Sub
Sub Handler_interstitialshown
End Sub
Sub Handler_interstitialclicked
End Sub
Sub Handler_interstitialclosed
End Sub

Setting rewarded video callbacks

Appodeal.setRewardedVideoCallbacks()
Appodeal.setEventHandler("Handler")

Sub Handler_rewardedvideoloaded
End Sub
Sub Handler_rewardedvideofailedtoload
End Sub
Sub Handler_rewardedvideoshown
End Sub
Sub Handler_rewardedvideofinished
End Sub
Sub Handler_rewardedvideoclosed
End Sub

Setting non-skippable video callbacks

Appodeal.setNonSkippableVideoCallbacks()
Appodeal.setEventHandler("Handler")

Sub Handler_nonskippablevideoloaded
End Sub
Sub Handler_nonskippablevideofailedtoload
End Sub
Sub Handler_nonskippablevideoshown
End Sub
Sub Handler_nonskippablevideofinished
End Sub
Sub Handler_nonskippablevideoclosed
End Sub

Setting banner callbacks

Appodeal.setBannerCallbacks()
Appodeal.setEventHandler("Handler")

Sub Handler_bannerloaded
End Sub
Sub Handler_bannerfailedtoload
End Sub
Sub Handler_bannershown
End Sub
Sub Handler_bannerclicked
End Sub

Manual ad caching

Appodeal.cache(adTypes)

You should disable automatic caching before SDK initialization using setAutoCache(adTypes, false).

To cache interstitial use Appodeal.cache(Appodeal.INTERSTITIAL)

To cache rewarded video use Appodeal.cache(Appodeal.REWARDED_VIDEO)

To cache non-skippable video use Appodeal.cache(Appodeal.NON_SKIPPABLE_VIDEO)

To cache interstitial and banner use Appodeal.cache(Bit.OR(Appodeal.BANNER, Appodeal.INTERSTITIAL))

To cache banner use Appodeal.cache(Appodeal.BANNER)

Enabling or disabling automatic caching

Appodeal.setAutoCache(adTypes, false)

Should be used before SDK initialization

To disable automatic caching for interstitials use Appodeal.setAutoCache(Appodeal.INTERSTITIAL, false)

To disable automatic caching for skippable videos use

To disable automatic caching for rewarded videos use Appodeal.setAutoCache(Appodeal.REWARDED_VIDEO, false)

To disable automatic caching for non-skippable videos use Appodeal.setAutoCache(Appodeal.NON_SKIPPABLE_VIDEO, false)

To disable automatic caching for banners use Appodeal.setAutoCache(Appodeal.BANNER, false)

Triggering onLoaded callback on precache

Appodeal.setTriggerOnLoadedOnPrecache(adTypes, true)

Currently supported only for interstitials and banners

setTriggerOnLoadedOnPrecache(Appodeal.INTERSTITIAL, False) - Handler_interstitialloaded will trigger only when normal ad was loaded (default).

setTriggerOnLoadedOnPrecache(Appodeal.INTERSTITIAL, True) - Handler_interstitialloaded will trigger twice, both when precache and normal ad were loaded.

Should be used before SDK initialization

Disabling networks

Appodeal.disableNetwork((String)network)

Available parameters: "amazon_ads", "applovin", "chartboost", "mopub", "unity_ads", "mailru", "facebook", "adcolony", "vungle", "yandex", "startapp", "avocarrot", "flurry", "pubnative", "cheetah", "inner-active", "revmob".

Should be used before SDK initialization

Disabling location permission check

To disable toast messages ACCESS_COARSE_LOCATION permission is missing, use the following method:

Appodeal.disableLocationPermissionCheck()

Should be used before SDK initialization.

Tracking in-app purchase

Appdeal.trackInAppPurchase(amount, currencyCode)

Tracks in-app purchase information and sends info to our servers for analytics. Example:

Appdeal.trackInAppPurchase(5, "USD")

Disabling data collection for kids apps

Appodeal.setChildDirectedTreatment(True)

Muting videos if call volume is muted

Appodeal.muteVideosIfCallsMuted(True)

Muting videos if call volume is muted

Proguard Settings

If you are using Proguard

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

# Appodeal
-keep class com.appodeal.** { *; }
-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 {}
-dontwarn com.mopub.volley.toolbox.**
-keepclassmembers class ** { @com.mopub.common.util.ReflectionTarget *; } 

# 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*

# StartApp
-keep class com.startapp.** { *;}
-dontwarn com.startapp.**
-keepattributes Exceptions, InnerClasses, Signature, Deprecated, SourceFile, LineNumberTable, *Annotation*, EnclosingMethod

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

# Avocarrot
-keep class com.avocarrot.** { *; }
-keepclassmembers class com.avocarrot.** { *; }
-dontwarn com.avocarrot.**
-keep public class * extends android.view.View {
  public <init>(android.content.Context);
  public <init>(android.content.Context, android.util.AttributeSet);
  public <init>(android.content.Context, android.util.AttributeSet, int);
  public void set*(...);
}

# 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.**

# Vungle
-keepattributes *Annotation*, Signature
-keep class com.vungle.** { *;}
-dontwarn com.vungle.**
-keep class com.moat.analytics.mobile.vng.** { *;}
-keep class dagger.**
-keep class de.greenrobot.event.**
-keep class javax.inject.**
-keep class rx.**

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

# 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 class com.ironsource.** { *; }
-dontwarn com.ironsource.**

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

#Appnext
-keep class com.appnext.** { *; }
-dontwarn com.appnext.**

# Inmobi
-keep class com.inmobi.** { *; }
-dontwarn com.inmobi.**
-dontwarn com.squareup.picasso.**
-keep class com.squareup.picasso.** {*;}
-dontwarn com.squareup.picasso.**
-dontwarn com.squareup.okhttp.**
-keep class com.moat.** {*;}
-dontwarn com.moat.**

# MMdeia
-keepclassmembers class com.millennialmedia** {public *;}
-keep class com.millennialmedia**
-dontwarn com.millennialmedia.**

# Ogury
-dontwarn io.presage.**
-dontnote io.presage.**
-dontwarn shared_presage.**
-dontwarn org.codehaus.**
-keepattributes Signature
-keep class shared_presage.** { *; }
-keep class io.presage.** { *; }
-keepclassmembers class io.presage.** { *; }
-keepattributes *Annotation*
-keepattributes JavascriptInterface
-keepclassmembers class * {
  @android.webkit.JavascriptInterface <methods>;
}
-dontnote okhttp3.**
-dontnote okio.**
-dontwarn okhttp3.**
-dontwarn okio.**
-dontwarn javax.annotation.Nullable
-dontwarn javax.annotation.ParametersAreNonnullByDefault

-dontnote sun.misc.Unsafe
-dontnote android.net.http.*

-dontnote org.apache.commons.codec.**
-dontnote org.apache.http.**

-dontwarn org.apache.commons.collections.BeanMap
-dontwarn java.beans.**
-dontnote com.google.gson.**
-keepclassmembers class * implements java.io.Serializable {
  static final long serialVersionUID;
  private static final java.io.ObjectStreamField[] serialPersistentFields;
  private void writeObject(java.io.ObjectOutputStream);
  private void readObject(java.io.ObjectInputStream);
  java.lang.Object writeReplace();
  java.lang.Object readResolve();
}

# 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 { *; }

Admob Adapter

Admob adapter for Appodeal is included with our jar.

To use it, do the following:

1. Go to your adUnit, click on “Mediation ad sources”

2. Add New ad network

3. Add new Custom Event:

Class Name - com.google.ads.mediation.appodeal.AppodealCustomEvent

Label - AppodealCustomEvent

Parameter - fee50c333ff3825fd6ad6d38cff78154de3025546d47a84f

Admob1
Admob2

MoPub Adapter

MoPub adapter for Appodeal is included with our jar.

To use it, do the following:

1. On the MoPub Networks page click “Add Network”

2. Choose “Custom Native Network”

3. Enter the Custom Event Class information into the text boxes.

Custom Event Class - com.mopub.mobileads.AppodealCustomEventInterstitial

Custom Event Class Data - {"appKey":"fee50c333ff3825fd6ad6d38cff78154de3025546d47a84f"}

Mopub1
Mopub2