Skip to content

Include Android

Denis edited this page Feb 16, 2022 · 31 revisions

⚡ Before you start
Make sure you have correctly setup project settings.


The Clever Ads Solutions Unity plugin is distributed with the EDM4U library. This library is intended for use by any Unity plugin that requires access to Android specific libraries (e.g., AARs) or iOS CocoaPods. It provides Unity plugins the ability to declare dependencies, which are then automatically resolved and copied into your Unity project.

Configure Gradle

Using EDM4U, you will be able to avoid downloading the Android artifacts into your project. Instead, the artifacts will be added to your gradle file during the compilation. To enable this process, follow these steps:

  • Go to: Player Settings > Publishing Settings > Build
  • Custom Main Gradle Template to configure third party dependencies.

For Unity 2019.3+:

  • Custom Launcher Gradle Template to enable MultiDEX.
    You can read more about MuliDex on the Android Deleveloper page.
  • Custom Base Gradle Template to update Gradle plugin with fix support Android 11.
    You can read more about fix Gradle plugin with support Android 11 on the Android Deleveloper page.
  • Custom Gradle Properties Template to use Jetfier by EDM4U.

image

Configure EDM4U

  • Go to: Assets > External Dependency Manager > Android > Settings
  • Patch mainTemplate.gradle
    The mainTemplate.gradle file will be patched with dependencies managed by the Android Resolver.
  • Use Jetfier
    Legacy Android support libraries and references to them from other libraries will be rewritten to use Jetpack using the Jetifier tool.
  • Patch gradleTemplate.properties
    For Unity 2019.3 and above, it is recommended to enable Jetfier and AndroidX via gradleTemplate.properties. This has no effect in older versions of Unity.
  • Save your changes, by pressing OK

In the Unity editor, select Assets > External Dependency Manager > Android Resolver > Resolve. The Unity External Dependency Manager library will append dependencies to mainTemplate.gradle of your Unity app.

Enable MultiDEX

At times, including the CAS SDK may cause the 64K limit on methods that can be packaged in an Android dex file to be breached. This can happen if, for example, your app packs a lot of features for your users and includes substantive code to realize this.
If you would like to enable the MultiDEX support library, you can do so in the Assets > CleverAdsSolutions > Android Settings by following these instructions:

  • MultiDEX enabled

You can read more about MultiDex on the Android Deleveloper page.

AndroidManifest template

If you do not find the manifest file Plugins/Android/AndroidManifest.xml, you can take it from the example.
Or Unity 2019.3+ makes it possible to activate in Player Settings > Publishing Settings > Build > Custom Main Manifest checkmark.

Update AndroidManifest permissions

Add the optional permissions to your Assets/Plugins/Android/AndroidManifest.xml file inside the <manifest> tag but outside the <application> tag.
VIBRATE permission is used for certain ads that vibrate during play. This is a normal level permission, so this permission just needs to be defined in the manifest to enable this ad feature.

<manifest>
 <uses-permission android:name="android.permission.VIBRATE" />
</manifest>

ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permissions is not a mandatory permission, however, including it will enable accurate ad targeting.

<manifest>
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <!-- OR -->
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

WRITE_EXTERNAL_STORAGE permission is used for certain ads that allow the user to save a screenshot to their phone. Note that with this permission on devices running Android 6.0 (API 23) or higher, this permission must be requested from the user. See Requesting Permissions for more details.

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

Included permissions in SDK

Sometimes permissions are included in the partner SDK’s internal AndroidManifest.
To remove a specific embedded permission (for example, ACCESS_COARSE_LOCATION), add the following tag to your top level AndroidManifest during integration:

<manifest>
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove"/>
</manifest>

What’s Next?

Clone this wiki locally