2.1. SDK Integration
2.1.1 Apply for Account and Ad Units
Apply to advertising Operations Personnel for an advertising platform account and corresponding ad units. When creating an application on the platform, please note the integration method chosen is Mediation SDK or Hisavana SDK, as different integration methods correspond to different SDK documentation.
2.1.2 Import Ad SDK
Step 1: Add maven remote dependency address in project-level build.gradle file, as follows:
buildscript {
repositories {
// Required
mavenCentral()
// Required
maven { url "https://mvn.shalltry.com/repository/maven-public/" }
// Required
maven { url "https://mvn.shalltry.com/repository/ad-releases/" }
// If integrating ironsource, add
maven { url 'https://android-sdk.is.com/'}
// If integrating pangle, add
maven { url 'https://artifact.bytedance.com/repository/pangle'}
// Domestic app markets, Android X Version; if integrating mintegral, add
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_china"}
// Overseas app markets, Android X Version; if integrating mintegral, add
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea"}
}
}
allprojects {
repositories {
// Required
mavenCentral()
// Required
maven { url "https://mvn.shalltry.com/repository/maven-public/" }
// Required
maven { url "https://mvn.shalltry.com/repository/ad-releases/" }
// If integrating ironsource, add
maven { url 'https://android-sdk.is.com/'}
// If integrating pangle, add
maven { url 'https://artifact.bytedance.com/repository/pangle'}
// Domestic app markets, Android X Version; if integrating mintegral, add
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_china"}
// Overseas app markets, Android X Version; if integrating mintegral, add
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea"}
}
}
Step 2: Import ad-related libraries in Module's build.gradle, where mediation-lib is the required dependency library, others are optional, please add as needed
Reminder:
- If choosing to integrate topon, please first understand Third-party Library Compatibility status
- If you choose to integrate Facebook and encounter an exception on devices with Android 8 and below, please refer to FAQ section 5.2.21.
// Current latest sdk version
def versionName = "3.5.5.0"
// Required
implementation("com.cloud.hisavana.sdk.mediation:mediation-lib:$versionName")
// Optional, if integrating admob, add
implementation("com.cloud.hisavana.sdk.mediation:admob-lib:$versionName")
// Optional, if integrating facebook, add
implementation("com.cloud.hisavana.sdk.mediation:fan-lib:$versionName")
// Optional, if integrating applovin, add
implementation("com.cloud.hisavana.sdk.mediation:applovin-lib:$versionName")
// Optional, if integrating unity, add unity
implementation("com.cloud.hisavana.sdk.mediation:unity-lib:$versionName")
// Optional, if integrating ironsource, add
implementation("com.cloud.hisavana.sdk.mediation:ironsource-lib:$versionName")
// Optional, if integrating inmobi, add
implementation("com.cloud.hisavana.sdk.mediation:inmobi-lib:$versionName")
// Optional, if integrating liftoff (vungle), add
implementation("com.cloud.hisavana.sdk.mediation:liftoff-lib:$versionName")
// Optional, if integrating adcolony, add
implementation("com.cloud.hisavana.sdk.mediation:adcolony-lib:$versionName")
// Optional, if integrating pangle, add
implementation("com.cloud.hisavana.sdk.mediation:pangle-lib:$versionName")
// Optional, if integrating mintegral, add
implementation("com.cloud.hisavana.sdk.mediation:mintegral-lib:$versionName")
// Optional, if integrating yandex, add (yandex is multi-process, pay attention to WebView data directory settings, details refer to SDK initialization configuration)
implementation("com.cloud.hisavana.sdk.mediation:yandex-lib:$versionName")
// Optional, if integrating bigo, add
implementation("com.cloud.hisavana.sdk.mediation:bigo-lib:$versionName")
// Optional, if integrating topon, add
implementation("com.cloud.hisavana.sdk.mediation:topon-lib:$versionName")
// 'The following are Admob mediator adapted ad sources and versions'
// Optional, if integrating Admob Mediator Applovin, add
implementation 'com.google.ads.mediation:applovin:13.2.0.1'
// Optional, if integrating Admob Mediator Mintegral, add
implementation 'com.google.ads.mediation:mintegral:16.9.71.0'
// Optional, if integrating Admob Mediator Pangle, add
implementation 'com.google.ads.mediation:pangle:7.1.0.8.0'
// Optional, if integrating Admob Mediator Unity, must add unity-lib, cannot add separately
implementation 'com.google.ads.mediation:unity:4.14.2.0'
// Optional, if integrating Admob Mediator Inmobi, add
implementation 'com.google.ads.mediation:inmobi:10.8.3.1'
// Optional, if integrating Admob Mediator Ironsource, add
implementation 'com.google.ads.mediation:ironsource:8.8.0.0'
// Optional, if integrating Admob Mediator Liftoff (Vungle), add
implementation 'com.google.ads.mediation:vungle:7.5.0.1'
Solution for 16kb Page Size Compatibility
In SDK versions 3.4.8.2 and below, there is a mandatory dependency on the so files from the Gif Library. These native files are incompatible with the 16KB page size. To resolve this, you must manually integrate the compatible library version v1.2.29.
/**
* Version (v1.2.29) is now compatible with 16kb page size.
*
* Environment Requirements:
* - Gradle 8.0+
* - Android Gradle Plugin 8.1.0+ (excluding 8.3)
* - minSdkVersion 23
* - Kotlin Plugin 2.1.0以上(Required), Standard Library, and Coroutines Library 1.8.0+ (Required)
*/
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.29'
Starting from SDK version 3.5.0.3, the mandatory dependency on the Gif Library has been removed. Media applications now have the discretion to include this library as needed.
2.1.3 Add Admob App Id
If admob-lib is integrated, need to add Admob AppID in AndroidManifest.xml.
<manifest>
<application>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="[ADMOB_APP_ID]"/>
</application>
</manifest>
In real applications, please use your actual AdMob app ID, not the one listed above. If you just want to try the SDK in a demo application, you can use the sample app ID shown above. Also note that if the above steps are not followed, it may cause a crash with the following message:
The Google Mobile Ads SDK was initialized incorrectly.
2.1.4 Add InMobi Proguard
If InMobi ad source is integrated, need to set the following proguard in proguard-rules.pro file:
-keepattributes SourceFile,LineNumberTable
-keep class com.inmobi.** { *; }
-keep public class com.google.android.gms.**
-dontwarn 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{
public *;
}
# skip the Picasso library classes
-keep class com.squareup.picasso.** {*;}
-dontwarn com.squareup.okhttp.**# skip Moat classes
-keep class com.moat.** {*;}
-dontwarn com.moat.**# skip IAB classes
-keep class com.iab.** {*;}
-dontwarn com.iab.**
-keep class com.hisavana.inmobi.**{
public *;
}