Unity Plugin 3.1.0 Android crashes at failure to find support-v4 ArrayMap

We are having difficulty with a client's app. The app crashes on launch stating the following error in logcat:
10-28 13:44:42.346: E/AndroidRuntime(12165): java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
10-28 13:44:42.346: E/AndroidRuntime(12165): at com.google.firebase.FirebaseApp.<clinit>(Unknown Source)

Android support-v4 is in the plugins directory, as well as support annotations and support core utils. Though, I'm not sure of the correct version that should work with your Unity plugin and the versions we have apparently don't (or Android removed ArrayMap from support-v4...).

I'm attaching the full logcat error as well as the file list for the plugin directory for the project in hopes that you can tell us what is going wrong.

List of files in plugins folder: http://pastebin.com/4Hbeh2AR

Logcat: http://pastebin.com/TNkgdfHE


Didn't find what you were looking for?

New post



  • Unity version 5.3.4p5

    JDK jdk1.8.0_111

    Android Support Repository 39

    Google Play Services 37

    Google Repository 38



    Comment actions Permalink
  • Hi Sean,

    Can you confirm that, using the Android SDK manager, that the latest Android Support library has downloaded and installed into your Android SDK location?

    Note, that this should be linked to your Android SDK location, not the Plugins folder.

    Comment actions Permalink
  • Hi Michael, 

    All appears to check out. I've got v4, v7, v13, v14, and v17 in C:\@Deployment\android\android-sdk\extras\android\support\

    The android-support-v4.jar is there.

    If I extract the "support-v4-24.2.0.aar" that Google Play services resolver copies (or generates) into the Unity project it is suspiciously small. The classes.jar inside the aar is only 563 bytes. How is it generating that file OR where is it copying it from? This is happening on both my Mac and my PC. 

    Here are some screencaps of my Android SDK manager if that helps.

    Comment actions Permalink
  • I dug in a bit further and found out that PlayServicesResolver is grabbing files from the m2repository folders. I'm not sure exactly why it is not grabbing the latest versions of libraries, but some in-between versions.I'm not sure how it decides that as our min SDK version is 16, A bit lost here as to what I can do. Things were easier manually copying the jars over!

    Comment actions Permalink
  • Tried forcing the dependencies to use GCM 9.8.0 and v4 support 25.0.0 and still the same crash. Doen't really make sense.

    Comment actions Permalink
  • Well... I shut off Google Play services jar resolver and copied over the libraries from an older working project. I didn't get the crash at start anymore, but after allowing permissions it crashes at:
    10-28 19:33:06.115: E/AndroidRuntime(14765): FATAL EXCEPTION: pool-6-thread-1
    10-28 19:33:06.115: E/AndroidRuntime(14765): Process: com.sicks.pcocadhoc, PID: 14765
    10-28 19:33:06.115: E/AndroidRuntime(14765): java.lang.Error: FATAL EXCEPTION [pool-6-thread-1]
    10-28 19:33:06.115: E/AndroidRuntime(14765): Unity version : 5.3.4p5
    10-28 19:33:06.115: E/AndroidRuntime(14765): Device model : LGE Nexus 5
    10-28 19:33:06.115: E/AndroidRuntime(14765): Device fingerprint: google/hammerhead/hammerhead:6.0.1/M4B30X/3237893:user/release-keys
    10-28 19:33:06.115: E/AndroidRuntime(14765): Caused by: java.lang.NoSuchMethodError: No virtual method areNotificationsEnabled()Z in class Landroid/support/v4/app/NotificationManagerCompat; or its super classes (declaration of 'android.support.v4.app.NotificationManagerCompat' appears in /data/app/com.sicks.pcocadhoc-2/base.apk)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at com.urbanairship.push.PushManager.isOptIn(PushManager.java:491)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at com.urbanairship.push.PushManager.getNextChannelRegistrationPayload(PushManager.java:503)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at com.urbanairship.push.ChannelJobHandler.onUpdateChannelRegistration(ChannelJobHandler.java:327)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at com.urbanairship.push.ChannelJobHandler.performJob(ChannelJobHandler.java:161)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at com.urbanairship.push.PushManager.onPerformJob(PushManager.java:326)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at com.urbanairship.AirshipService$1.run(AirshipService.java:168)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
    10-28 19:33:06.115: E/AndroidRuntime(14765): at java.lang.Thread.run(Thread.java:818)

    This is with firebase-common-9.0.2









    Comment actions Permalink
  • removed plugin, downgraded back to 3.0.0 no problems...

    Comment actions Permalink
  • Sean,

    That seems strange that 3.0.0 would work and not 3.1.0. It doesn't seem like 3.1.0 made any changes to the Android plugin, so it should work.

    Would you be able to post your Android Manifest here? I'd be curious to see what setup that is using.

    Comment actions Permalink

Please sign in to leave a comment.