Compatibility

Android Native supports the following 3d - party plugins

  • Playmaker - Artists and Designers: Realize your creative vision without coding! Unlock the power of Unity.
  • Simple IAP System  - Takes the complexity out of in-app purchases (IAPs) and the billing process as the whole by providing a one-stop solution for managing IAPs.
  • Parce Push Notifications - Creating, scheduling, and segmenting push notifications just became much easier.
  • Anti-Cheat Toolkit - There are always some people who want to cheat, hack or crack something in your game. Anti-Cheat Toolkit (ACTk) is designed to let you add some extra pain to these nasty people!
  • Soomla Grow - With SOOMLA Grow traditional analytics fade away. Instead of knowing your users based only on data you collect, you can now study their behaviors across thousands of games.

 

Data Restrictions:

in order to transfer data from Native Android code to Unity C#,  the plugin uses serialization, and "|" symbol as the separator. It means that if you use the same symbol in your data which has to be transferred from Native Android code to Unity C#, it may break the de-serialization process. 

Compatibility with other Unity Android Plugins (version 6.0+):

Starting from Android Native v6.0, Android Native plugin does not require to override the main app activity, which means that there won't be conflicts with other 3-rd party plugins.

If you find a conflict with another Android Unity plugin, check these three steps:

  • make sure you only have 1 .jar of each type in your project
  • make sure they are in the right directory locations as different plugins have different post-processing scripts
  • clean up the android manifest by comparing to a new project with fresh installs of all your latest plugins

If you find a conflict with another Android Unity plugin, please, let us know via support e-mail.

After updating  to version 6.0+ from version 5.3 or lower, please check your manifest manually after the plugin installation.

Your app manifest is located at:  Assets -> Plugins -> Android -> AndroidManifest.xml and make sure:

  • Activity with name com.androidnative.AndroidNativeBridge does not exist in your manifest anymore. If you still see this activity, feel free to remove it.
  • You do not have the duplicates of com.unity3d.player.UnityPlayerNativeActivity Activity. If you see 2 or more UnityPlayerNativeActivity's, feel free to leave only one UnityPlayerNativeActivity which is marked as a launcher.

Note: Launcher Activity - this is an activity which has an intent-filter as in code snipped bellow:

<activity android:name="com.unity3d.player.UnityPlayerNativeActivity"  ...... >
	<intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
	</intent-filter>
</activity>

 

Compatibility with other Unity Android Plugins (before version 6.0):

This is a process without problems if another Android plugin doesn't use the main activity. But if it does, then, we have to solve the conflict and merge the plugins to use in activity.

Not all Android Native API require the main activity and will work on enabling more features to work without main activity. The current list of APIs with doesn't require the main activity overriding:

  • Google Mobile Ad
  • Native Popups and Preloaders
  • Immersive Mode
  • App Licensing
  • Package Detail Retrieval 

 

The reason why Android Native needs Main activity. APIs which are implemented in the plugin require an access to the native Android callbacks:

void onActivityResult(int requestCode, int resultCode, Intent data)

Use by:

  • Camera API
  • Billing API
  • Play Service API

 

void onNewIntent(Intent intent)

Use by:

  • Twitter OAuth API

 

void onDestroy()

Use by:

  • Billing API

 

Warning: The following margin guide can be useful only if you have two plugins with requirements to override the main activity class. There will be no merging issues if another plugin is not overriding main activity. But, probably, you will need to merge the Manifest.

 

Here is a basic instruction on how you can merge two Android plugins. I cannot give straight forward step by step guide on how to integrate my plugin with any other.

Here are the reasons why:

  1. I cannot keep track of other plugins changes
  2. My plugins may also have changes and I do not know how it will affect other plugins
  3. Not all plugins have an open source

What can I do

  1. Provide open source Eclipse project with clean coding
  2. Give general instruction how to combine two plugins (can be found below)

 

When you have built a Unity app for Android  without any plugins, the main application activity class is UnityPlayerActivity.

When you are using Android Native Plugin it replaces UnityPlayerActivity class by AndroidNativeBridge class which  is extended from UnityPlayerActivity.

 

Without plugin:

Android App → UnityPlayerActivity

With plugin

Android App →  AndroidNativeBridge → UnityPlayerActivity

 

which  means that if you want to use 2 plugins in your project, you have to extend one plugin from another. To have a picture like:

Android App →  AndroidNativeBridge → OtherPlugin → UnityPlayerActivity

or:

Android App →  OtherPlugin → AndroidNativeBridge → UnityPlayerActivity

 

To do this you should have at least one plugin with full open source and source Eclipse project.  Android Native Plugin comes with full open source and eclipse source project.

 

For example, you have another plugin that you want to use with  Android Native Plugin.

  • Open Android Native Eclipse project.
  • Add Other Plugin jar file to the project
  • Extend AndroidNativeBridge from other plugin Activity class.
  • Rebuild androidnative.jar and replace it in your project

 

After this step, both plugin should work correctly.  

If you are not able to merge Plugins by yourself or just want to save some time, you can use our premium support Setup package.