Search Unity

Native method not found: com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator:()V

Discussion in 'Android' started by morozov1333, Aug 21, 2018.

  1. Rutger

    Rutger

    Joined:
    Sep 17, 2013
    Posts:
    16
    Correct me if I'm wrong. But this fix won't actually solve the whole problem. Only partially.
    Because we also get these crashes from installs via Google Play, not just when installed outside of Google Play / via a utility app like Files Go.
    Although much much less of these crashes occur (for us) when the app has been installed via Google Play.
     
  2. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Correct, but we're fixing one problem at the time. Like mentioned somewhere above, there's actually 3-4 bugs out there, and all those bugs produce same stacktrace. We already fixed one problem on our side, where quitting application wouldn't actually quit it, so relaunching the app would simply crash, the second problem was on google side, where sharing an app wouldn't copy native libraries, and again producing same crash stacktrace.

    The last 1 or 2 problems are not yet clear, even if you install app correctly from Google Play, the app crashes, but from reports, it's not clear if it crashes on startup or somewhere later during application cycle. Again if you can reproduce this locally, please tell us how, because upon till now, we couldn't reproduce this on our side. This leads me to believe, that it might be again somekind of problem with app bundles, where they're not correctly installed even with Google Play.
     
  3. Minicades-Mobile

    Minicades-Mobile

    Joined:
    Sep 15, 2012
    Posts:
    19
    We've already switched to using App Bundles. Would there be any issues for users if we do an update that switches back to Universal APK?
     
  4. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    That's a good question, you would need to test this yourself via Google Play Console with Internal Testing track (Install app from app bundles, install universal apk on top). Package installation routine is handled by google's online framework, so I can't really say.
     
  5. benjamin_tk

    benjamin_tk

    Joined:
    Jun 6, 2017
    Posts:
    3
    Yes, I still seeing this crash on 2018.4.6f1, and I removed all Application.Quit
     
  6. Zeeppo-Games

    Zeeppo-Games

    Joined:
    May 13, 2015
    Posts:
    25
    Unity 2019.2.3 has been released today. I’ll test it soon. But there’s nothing about this issue on the release notes.
     
  7. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    There will be a related change in 2019.3 b2, while it will be not a fix, it will help differentiate bug where app was installed in a wrong way, from the other bugs which had similar stacktraces

    Basically if libmain.so will be missing from the app package, you will get this stacktrace in google play console

    Code (csharp):
    1.  
    2. AndroidRuntime: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.DefaultCompany.TestLog-GN3HltbS24fxBzCWQCiy8w==/base.apk"],nativeLibraryDirectories=[/data/app/com.DefaultCompany.TestLog-GN3HltbS24fxBzCWQCiy8w==/lib/arm, /data/app/com.DefaultCompany.TestLog-GN3HltbS24fxBzCWQCiy8w==/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]] couldn't find "libmain.so"
    3. AndroidRuntime:        at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
    4. AndroidRuntime:        at java.lang.System.loadLibrary(System.java:1657)
    5. AndroidRuntime:        at com.unity3d.player.UnityPlayer.<clinit>(Unknown Source:13)
    6. AndroidRuntime:        at com.unity3d.player.UnityPlayerActivity.onCreate(UnityPlayerActivity.java:40)
    7. AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:7258)
    8. AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:7249)
    9. AndroidRuntime:        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1221)
    10. AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
    11. AndroidRuntime:        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3059)
    12. AndroidRuntime:        at android.app.ActivityThread.-wrap11(Unknown Source:0)
    13. AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1724)
    14. AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:106)
    15. AndroidRuntime:        at android.os.Looper.loop(Looper.java:164)
    16. AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7002)
    17. AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
    18. AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
    19. AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
    20.  
    previously this error was only visible in logcat, and was not very informative
    Code (csharp):
    1.  
    2. 07-30 06:32:15.376: E/Unity(21144): Unable to find main
    3.  
    additionally as you know, you don't get logcats from user phones in google play console, so that error was hidden.

    If that will be the case and google play console will show that new stacktrace above, we'll have some proof for google, that installation of apps is still not correct.
     
    hadarhadar likes this.
  8. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    The change will be available in 2019.2.5f1 as well
     
  9. Duobix

    Duobix

    Joined:
    Dec 6, 2014
    Posts:
    49
    @Tomas1856
    I'd like to sum it up, please correct me if I'm wrong, we're dealing here with 3-4 issues:
    1. The Quit Error problem, which supposedly already got fixed / we got a community fix for that
    2. The Android App bundle problem that google is about to fix
    3. The unsatisfied link error at launch of the app
    4. The uknown issue for now

    By the way, Dear Unity, could you guys please contact google about (at least) temporarily removing this
    issue from being taken into account to the crash rate? If we all can't fix it up right away it'd be nice to at least
    not get our buisness oppurtunities destroyed by an inflated crash rate. Thanks in advance!
     
  10. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    2 and 3 are the same issues. Because apps installed via app bundles and then shared, doesn't copy native libraries, thus apps are crashing on startup.

    Also as far I am aware crashes coming from "Installed from Anywhere" don't affect Android vitals, only "Installed from Play" do affect Android vitals, correct me if I am wrong.
     
  11. Zeeppo-Games

    Zeeppo-Games

    Joined:
    May 13, 2015
    Posts:
    25
    both affect vitals. It’s a nightmare
     
  12. Duobix

    Duobix

    Joined:
    Dec 6, 2014
    Posts:
    49
    Thanks for clarification. I'm not sure if "Installed from Anywhere" affect our crash rate or not, We'd need to contact Google about that, but yes-we do have plenty more crashes listed when we switch to "installed from anywhere", including plenty of "UnityPlayer.nativeRestartActivityIndicator".

    The thing is, that we got plenty of those errors from a game installed straight from Play Store. Instances of those crashes (we haven't been able to replicate them on our side):

    Code (CSharp):
    1. Samsung Galaxy A20 (a20), Android 9
    2. Raport 2
    3.  
    4. java.lang.Error: FATAL EXCEPTION [main]
    5. Unity version     : 2018.4.2f1
    6. Device model      : samsung SM-A205F
    7. Device fingerprint: samsung/a20dd/a20:9/PPR1.180610.011/A205FXXU2ASFB:user/release-keys
    8. Caused by
    9.   at com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator (Native Method)
    10.   at com.unity3d.player.UnityPlayer.resume (Unknown Source:27)
    11.   at com.unity3d.player.UnityPlayerActivity.onResume (Unknown Source:5)
    12.   at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1416)
    13.   at android.app.Activity.performResume (Activity.java:7609)
    14.   at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4013)
    15.   at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4053)
    16.   at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:51)
    17.   at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:145)
    18.   at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
    19.   at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1955)
    20.   at android.os.Handler.dispatchMessage (Handler.java:106)
    21.   at android.os.Looper.loop (Looper.java:214)
    22.   at android.app.ActivityThread.main (ActivityThread.java:7091)
    23.   at java.lang.reflect.Method.invoke (Native Method)
    24.   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
    25.   at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
    Code (CSharp):
    1. Samsung Galaxy J7+ (jadelte), Android 8.1
    2. Raport 1
    3.  
    4. java.lang.Error: FATAL EXCEPTION [main]
    5. Unity version     : 2018.4.2f1
    6. Device model      : samsung SM-C710F
    7. Device fingerprint: samsung/jadeltedx/jadelte:8.1.0/M1AJQ/C710FDXU2BSG2:user/release-keys
    8. Caused by
    9.   at com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator (Native Method)
    10.   at com.unity3d.player.UnityPlayer.resume (Unknown Source:27)
    11.   at com.unity3d.player.UnityPlayerActivity.onResume (Unknown Source:5)
    12.   at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1363)
    13.   at android.app.Activity.performResume (Activity.java:7440)
    14.   at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3794)
    15.   at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3859)
    16.   at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1783)
    17.   at android.os.Handler.dispatchMessage (Handler.java:106)
    18.   at android.os.Looper.loop (Looper.java:164)
    19.   at android.app.ActivityThread.main (ActivityThread.java:7025)
    20.   at java.lang.reflect.Method.invoke (Native Method)
    21.   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:441)
    22.   at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408)
    Code (CSharp):
    1. LGE LG K11 (mcv3), Android 7.1
    2. Raport 9
    3.  
    4. java.lang.Error: FATAL EXCEPTION [main]
    5. Unity version     : 2018.4.2f1
    6. Device model      : LGE LM-X410.F
    7. Device fingerprint: lge/mcv3_lao_com/mcv3:7.1.2/N2G47H/191872116a828.F:user/release-keys
    8. Caused by
    9.   at com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator (Native Method)
    10.   at com.unity3d.player.UnityPlayer.resume (Unknown Source)
    11.   at com.unity3d.player.UnityPlayerActivity.onResume (Unknown Source)
    12.   at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1270)
    13.   at android.app.Activity.performResume (Activity.java:6879)
    14.   at android.app.ActivityThread.performResumeActivity (ActivityThread.java:3535)
    15.   at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3598)
    16.   at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1596)
    17.   at android.os.Handler.dispatchMessage (Handler.java:102)
    18.   at android.os.Looper.loop (Looper.java:154)
    19.   at android.app.ActivityThread.main (ActivityThread.java:6351)
    20.   at java.lang.reflect.Method.invoke (Native Method)
    21.   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:896)
    22.   at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:786)
     
  13. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    You should try updating to 2018.4.6f1 if possible, it fixed application quit issues, before - even if quitting the activity, only Unity native part would be unloaded, and when resuming such activity, the stacktrace you copy-pasted above would be printed.
     
  14. saevioapps

    saevioapps

    Joined:
    Aug 7, 2014
    Posts:
    7
    How about Unity 2019.1? When will the Application.Quit issue be fixed for Unity 2019.1?
     
  15. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    There won't be any updates to 2019.1,thus it won't be fixed in 2019.1, you would need to update to 2019.2.
     
  16. Duobix

    Duobix

    Joined:
    Dec 6, 2014
    Posts:
    49
    Should we do the update even if we did remove all Application.quit instances prior to that and applied a fix ourselves (the fix was to quit the app via an Android native code)?
     
  17. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Yes, because while you fixed the Application.Quit manually, you didn't (and couldn't) fix case, where activity quit was invoked via other means. for ex Android OS tried to close your application, I think in those cases you would also see the stacktrace mentioned in this thread.

    Also, just to be on the safe side, try rolling out the update only for 1/3 of users first.
     
    Duobix likes this.
  18. ShinSeok

    ShinSeok

    Joined:
    Jan 17, 2015
    Posts:
    1
    Was this problem fixed in 2018.4.8f1?
     
  19. LukasH

    LukasH

    Joined:
    May 16, 2014
    Posts:
    15
    @Tomas1856 will there be any backports to LTS versions?
     
  20. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Application.Quit/activty quit fix was backported to 2018.4.6f
     
  21. LukasH

    LukasH

    Joined:
    May 16, 2014
    Posts:
    15
    Any plans for 2017 LTS?

    Yes it is older but most of our games are still on that version.
     
  22. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    2017 LTS didn't have Application.Quit bug as far as I am aware, the regression was introduced in 2018 lifecycle.
     
  23. Onur_Yildirim

    Onur_Yildirim

    Joined:
    May 13, 2019
    Posts:
    4
    These fixes are included in any 2018.3 version after 4.6f too right?
     
  24. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Of course :)
     
  25. Rutger

    Rutger

    Joined:
    Sep 17, 2013
    Posts:
    16
    In a new build. Using Unity 2018.4.6f, the
    Code (CSharp):
    1. No implementation found for void com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator() (tried Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator and Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator__)
    Crash still occurs. Is this expected behaviour?
    Wasn't quite clear if this was already fixed in Unity 2018.4.6f or not
     
  26. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Like mentioned above, there are multiple bugs, producing same stacktraces. We fixed bugs from our side, the other ones were on google side. And there's probably still one unfixed, but can't be reproduced as well.

    Does the crash happen for you locally, or you only saw it in Google Play Console, if you seen it on Google Play Console, can you attach screenshots from "Installed from Anywhere" vs "Installed from Play"
     
  27. Duobix

    Duobix

    Joined:
    Dec 6, 2014
    Posts:
    49
    We rolled out to most of our users with 2018.4.6f1 and, after a week of gathering crash data, there seems to be no sign
    of this issue occuring (yet). 2018.4.6f1 suprisingly also lowered occurence of some other crashes (I suppose this means that there were issues of 'double-crashes' happening as a result of the nativePlayerIndicator crash). I'm going to post in a week or two info if this really solved the issue (when we're sure it did help).
     
  28. MalyaWka

    MalyaWka

    Joined:
    Jan 2, 2015
    Posts:
    12
    Hello!

    I am using version 2018.4.6f, but unfortunately, nothing has changed for me - there are exactly the same number of errors as on the other versions.

    The game does not use Application.Quit.

    upload_2019-9-10_9-36-27.png

    upload_2019-9-10_9-36-37.png

    upload_2019-9-10_9-36-52.png

    Are there any hopes for happiness?

    The Google Play Store simply drowns the game. Game no longer appears in collections, not in Similar Apps, and the organics almost died.
     
    leni8ec likes this.
  29. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    I assume it's not reproducible for you locally?
     
  30. MalyaWka

    MalyaWka

    Joined:
    Jan 2, 2015
    Posts:
    12
    Yes, locally on all my devices everything is fine. It has not been possible to catch failures for several months.
     
  31. Rutger

    Rutger

    Joined:
    Sep 17, 2013
    Posts:
    16
    I've seen it both in Google Play Console (both under Installed from Anywhere and Installed from Play). Also (obviously) seen in Crashlytics.
    Locally I've not been able to reproduce this.



     

    Attached Files:

  32. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    P.S @MalyaWka @Rutger , I assume you use app bundles. Out of curiosity, was the first version of your app was also an app bundle, or was it simply an apk.
     
  33. MalyaWka

    MalyaWka

    Joined:
    Jan 2, 2015
    Posts:
    12
    First versions were only apk for all versions. Then there was a migrate to Unity 2019 and the app bundle, and this error appeared. Then downgrade until 2018, but it did not help.
     
  34. Rutger

    Rutger

    Joined:
    Sep 17, 2013
    Posts:
    16
    First versions were APKs for us as well. Migrated to 2018 LTS for AppBundle support (among other things).
    Using Unity Cloud build to make the bundles (in case this is relevant).
     
  35. Zeeppo-Games

    Zeeppo-Games

    Joined:
    May 13, 2015
    Posts:
    25
    Unity 2019.2.5 released.


    Backwards Compatibility Breaking Changes
    • Android: Improve error messages for cases where android application fails to load libmain.so. Previously it was printing "Unable to find main", now it will print "Failed to load 'libmain.so', the application will terminate.", additionally it will print exception from System.loadLibrary with detailed info, where the application was looking for libmain.so
     
  36. muhammadadnan0075

    muhammadadnan0075

    Joined:
    Dec 17, 2016
    Posts:
    14
    Hi, Have you gathered enough data yet?
     
  37. Duobix

    Duobix

    Joined:
    Dec 6, 2014
    Posts:
    49
    It's been about two weeks since we did release the version on 2018.4.6f1. What's suprising is that the "bitter.jnibridge.JNIBridge.invoke" bug is back, but not as pronounced (just a few reports) (this supposedly got fixed after unity 2018.3.12f1), and that we have a new set of errors related to facebook (gonna post about that in a different thread). Also, after a week, we DID get the com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator crashes reported out of version installed from play store (which is one user with Galaxy A50).

    What's also suprising is that we got a lot of com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator crash reported that happened on installs made outside play store, both in java.lang.Error and java.lang.UnsatisfiedLinkError variation.The number of those isn't as high as it was on 2018.4.2f1 build, but still that's a considerable amount.

    @Tomas1856 so from what I gather the bugs I get from play store now are an unidentified issue, and those not from play store are supposedly going to be fixed by google? Could the unidentified issue be related to this: https://dontkillmyapp.com/ ?
     
  38. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Yes, google should fix it.

    Not sure about https://dontkillmyapp.com/, like I said without knowing in what circumstances the error occurs, I can only guess. We tried to reproduce this locally on devices reported by this thread with no luck.

    P.S we're backporting:

    Android: Improve error messages for cases where android application fails to load libmain.so. Previously it was printing "Unable to find main", now it will print "Failed to load 'libmain.so', the application will terminate.", additionally it will print exception from System.loadLibrary with detailed info, where the application was looking for libmain.so
    to 2018.4 which might give more insight on this problem.
     
    hadarhadar and Duobix like this.
  39. leni8ec

    leni8ec

    Joined:
    May 23, 2013
    Posts:
    5
    We got the same issues for Unity versions: 2018.4.7 and 2018.4.9

    Code (CSharp):
    1. Report 1 of 4
    2.  
    3. java.lang.Error: FATAL EXCEPTION [main]
    4. Unity version     : 2018.4.7f1
    5. Device model      : samsung SM-J400F
    6. Device fingerprint: samsung/j4ltejx/j4lte:9/PPR1.180610.011/J400FXXU4BSG1:user/release-keys
    7. Caused by
    8.   at com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator (Native Method)
    9.   at com.unity3d.player.UnityPlayer.resume (Unknown Source:23)
    10.   at com.unity3d.player.UnityPlayerActivity.onResume (Unknown Source:5)
    11.   at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1416)
    12.   at android.app.Activity.performResume (Activity.java:7584)
    13.   at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4013)
    14.   at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4053)
    15.   at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:51)
    16.   at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:145)
    17.   at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:70)
    18.   at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1955)
    19.   at android.os.Handler.dispatchMessage (Handler.java:106)
    20.   at android.os.Looper.loop (Looper.java:214)
    21.   at android.app.ActivityThread.main (ActivityThread.java:7078)
    22.   at java.lang.reflect.Method.invoke (Native Method)
    23.   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
    24.   at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)

    Code (CSharp):
    1. # Crashlytics - plaintext stacktrace downloaded by Aleksandr at Sat, 14 Sep 2019 12:40:22 GMT
    2. # URL: https://fabric.io/oriole-games/android/apps/com.bonbeart.doors4/issues/77ed9e23730a5547621dd08e85945f43/sessions/latest
    3. # Organization: Bonbeart
    4. # Platform: android
    5. # Application: 100 Дверей: Дом головоломок
    6. # Version: 1.3.0 (34)
    7. # Bundle Identifier: com.bonbeart.doors4
    8. # Issue ID: 77ed9e23730a5547621dd08e85945f43
    9. # Session ID: 5D7CD6340337000136DEC06FFE1BE176_DNE_0_v2
    10. # Date: 2019-09-14T11:59:00Z
    11. # OS Version: 9
    12. # Device: Pixel
    13. # RAM Free: 58.9%
    14. # Disk Free: 79%
    15.  
    16. Fatal Exception: java.lang.Error: FATAL EXCEPTION [main]
    17. Unity version     : 2018.4.9f1
    18. Device model      : Google Pixel
    19. Device fingerprint: google/sailfish/sailfish:9/PQ1A.181105.017.A1/5081125:user/release-keys
    20.  
    21.  
    22.  
    23. Caused by java.lang.UnsatisfiedLinkError: No implementation found for void com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator() (tried Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator and Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator__)
    24.        at com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator()
    25.        at com.unity3d.player.UnityPlayer.resume + 23(:23)
    26.        at com.unity3d.player.UnityPlayerActivity.onResume + 5(:5)
    27.        at android.app.Instrumentation.callActivityOnResume + 1412(Instrumentation.java:1412)
    28.        at android.app.Activity.performResume + 7300(Activity.java:7300)
    29.        at android.app.ActivityThread.performResumeActivity + 3777(ActivityThread.java:3777)
    30.        at android.app.ActivityThread.handleResumeActivity + 3817(ActivityThread.java:3817)
    31.        at android.app.servertransaction.ResumeActivityItem.execute + 51(ResumeActivityItem.java:51)
    32.        at android.app.servertransaction.TransactionExecutor.executeLifecycleState + 145(TransactionExecutor.java:145)
    33.        at android.app.servertransaction.TransactionExecutor.execute + 70(TransactionExecutor.java:70)
    34.        at android.app.ActivityThread$H.handleMessage + 1809(ActivityThread.java:1809)
    35.        at android.os.Handler.dispatchMessage + 106(Handler.java:106)
    36.        at android.os.Looper.loop + 193(Looper.java:193)
    37.        at android.app.ActivityThread.main + 6680(ActivityThread.java:6680)
    38.        at java.lang.reflect.Method.invoke(Method.java)
    39.        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 493(RuntimeInit.java:493)
    40.        at com.android.internal.os.ZygoteInit.main + 858(ZygoteInit.java:858)
    41.  
    42. #0. main
    43.        at android.os.BinderProxy.transactNative(Binder.java)
    44.        at android.os.BinderProxy.transact + 1127(Binder.java:1127)
    45.        at android.app.IActivityManager$Stub$Proxy.handleApplicationCrash + 3711(IActivityManager.java:3711)
    46.        at com.android.internal.os.RuntimeInit$KillApplicationHandler.uncaughtException + 143(RuntimeInit.java:143)
    47.        at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException + 51(CrashlyticsUncaughtExceptionHandler.java:51)
    48.        at com.unity3d.player.m.uncaughtException + 94(:94)
    49.        at java.lang.ThreadGroup.uncaughtException + 1068(ThreadGroup.java:1068)
    50.        at java.lang.ThreadGroup.uncaughtException + 1063(ThreadGroup.java:1063)
    51.        at java.lang.Thread.dispatchUncaughtException + 1955(Thread.java:1955)
    52.  
    53. #1. Queue
    54.        at libcore.io.Linux.android_getaddrinfo(Linux.java)
    55.        at libcore.io.BlockGuardOs.android_getaddrinfo + 172(BlockGuardOs.java:172)
    56.        at java.net.Inet6AddressImpl.lookupHostByName + 137(Inet6AddressImpl.java:137)
    57.        at java.net.Inet6AddressImpl.lookupAllHostAddr + 105(Inet6AddressImpl.java:105)
    58.        at java.net.InetAddress.getAllByName + 1154(InetAddress.java:1154)
    59.        at com.android.okhttp.Dns$1.lookup + 39(Dns.java:39)
    60.        at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress + 175(RouteSelector.java:175)
    61.        at com.android.okhttp.internal.http.RouteSelector.nextProxy + 141(RouteSelector.java:141)
    62.        at com.android.okhttp.internal.http.RouteSelector.next + 83(RouteSelector.java:83)
    63.        at com.android.okhttp.internal.http.StreamAllocation.findConnection + 174(StreamAllocation.java:174)
    64.        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection + 126(StreamAllocation.java:126)
    65.        at com.android.okhttp.internal.http.StreamAllocation.newStream + 95(StreamAllocation.java:95)
    66.        at com.android.okhttp.internal.http.HttpEngine.connect + 281(HttpEngine.java:281)
    67.        at com.android.okhttp.internal.http.HttpEngine.sendRequest + 224(HttpEngine.java:224)
    68.        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute + 461(HttpURLConnectionImpl.java:461)
    69.        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse + 407(HttpURLConnectionImpl.java:407)
    70.        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode + 538(HttpURLConnectionImpl.java:538)
    71.        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode + 105(DelegatingHttpsURLConnection.java:105)
    72.        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode + 26(HttpsURLConnectionImpl.java:26)
    73.        at io.fabric.sdk.android.services.network.HttpRequest.code + 1357(HttpRequest.java:1357)
    74.        at io.fabric.sdk.android.services.settings.DefaultSettingsSpiCall.handleResponse + 104(DefaultSettingsSpiCall.java:104)
    75.        at io.fabric.sdk.android.services.settings.DefaultSettingsSpiCall.invoke + 88(DefaultSettingsSpiCall.java:88)
    76.        at io.fabric.sdk.android.services.settings.DefaultSettingsController.loadSettingsData + 93(DefaultSettingsController.java:93)
    77.        at io.fabric.sdk.android.services.settings.DefaultSettingsController.loadSettingsData + 70(DefaultSettingsController.java:70)
    78.        at io.fabric.sdk.android.services.settings.Settings.loadSettingsData + 156(Settings.java:156)
    79.        at io.fabric.sdk.android.Onboarding.retrieveSettingsData + 128(Onboarding.java:128)
    80.        at io.fabric.sdk.android.Onboarding.doInBackground + 100(Onboarding.java:100)
    81.        at io.fabric.sdk.android.Onboarding.doInBackground + 46(Onboarding.java:46)
    82.        at io.fabric.sdk.android.InitializationTask.doInBackground + 63(InitializationTask.java:63)
    83.        at io.fabric.sdk.android.InitializationTask.doInBackground + 28(InitializationTask.java:28)
    84.        at io.fabric.sdk.android.services.concurrency.AsyncTask$2.call + 311(AsyncTask.java:311)
    85.        at java.util.concurrent.FutureTask.run + 266(FutureTask.java:266)
    86.        at java.util.concurrent.Executors$RunnableAdapter.call + 458(Executors.java:458)
    87.        at java.util.concurrent.FutureTask.run + 266(FutureTask.java:266)
    88.        at java.util.concurrent.ThreadPoolExecutor.runWorker + 1167(ThreadPoolExecutor.java:1167)
    89.        at java.util.concurrent.ThreadPoolExecutor$Worker.run + 641(ThreadPoolExecutor.java:641)
    90.        at java.lang.Thread.run + 764(Thread.java:764)
    91.  
    92. #2. queued-work-looper
    93.        at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    94.        at android.os.MessageQueue.next + 326(MessageQueue.java:326)
    95.        at android.os.Looper.loop + 160(Looper.java:160)
    96.        at android.os.HandlerThread.run + 65(HandlerThread.java:65)
    97.  
    98. #3. Queue
    99.        at java.lang.Object.wait(Object.java)
    100.        at java.lang.Thread.parkFor$ + 2137(Thread.java:2137)
    101.        at sun.misc.Unsafe.park + 358(Unsafe.java:358)
    102.        at java.util.concurrent.locks.LockSupport.park + 190(LockSupport.java:190)
    103.        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await + 2059(AbstractQueuedSynchronizer.java:2059)
    104.        at java.util.concurrent.PriorityBlockingQueue.take + 548(PriorityBlockingQueue.java:548)
    105.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation + 197(DependencyPriorityBlockingQueue.java:197)
    106.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get + 236(DependencyPriorityBlockingQueue.java:236)
    107.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take + 65(DependencyPriorityBlockingQueue.java:65)
    108.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take + 46(DependencyPriorityBlockingQueue.java:46)
    109.        at java.util.concurrent.ThreadPoolExecutor.getTask + 1092(ThreadPoolExecutor.java:1092)
    110.        at java.util.concurrent.ThreadPoolExecutor.runWorker + 1152(ThreadPoolExecutor.java:1152)
    111.        at java.util.concurrent.ThreadPoolExecutor$Worker.run + 641(ThreadPoolExecutor.java:641)
    112.        at java.lang.Thread.run + 764(Thread.java:764)
    113.  
    114. #4. FinalizerWatchdogDaemon
    115.        at java.lang.Object.wait(Object.java)
    116.        at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded + 297(Daemons.java:297)
    117.        at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal + 277(Daemons.java:277)
    118.        at java.lang.Daemons$Daemon.run + 103(Daemons.java:103)
    119.        at java.lang.Thread.run + 764(Thread.java:764)
    120.  
    121. #5. ReferenceQueueDaemon
    122.        at java.lang.Object.wait(Object.java)
    123.        at java.lang.Daemons$ReferenceQueueDaemon.runInternal + 178(Daemons.java:178)
    124.        at java.lang.Daemons$Daemon.run + 103(Daemons.java:103)
    125.        at java.lang.Thread.run + 764(Thread.java:764)
    126.  
    127. #6. FinalizerDaemon
    128.        at java.lang.Object.wait(Object.java)
    129.        at java.lang.Object.wait + 422(Object.java:422)
    130.        at java.lang.ref.ReferenceQueue.remove + 188(ReferenceQueue.java:188)
    131.        at java.lang.ref.ReferenceQueue.remove + 209(ReferenceQueue.java:209)
    132.        at java.lang.Daemons$FinalizerDaemon.runInternal + 232(Daemons.java:232)
    133.        at java.lang.Daemons$Daemon.run + 103(Daemons.java:103)
    134.        at java.lang.Thread.run + 764(Thread.java:764)
    135.  
    136. #7. Queue
    137.        at java.lang.Object.wait(Object.java)
    138.        at java.lang.Thread.parkFor$ + 2137(Thread.java:2137)
    139.        at sun.misc.Unsafe.park + 358(Unsafe.java:358)
    140.        at java.util.concurrent.locks.LockSupport.park + 190(LockSupport.java:190)
    141.        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await + 2059(AbstractQueuedSynchronizer.java:2059)
    142.        at java.util.concurrent.PriorityBlockingQueue.take + 548(PriorityBlockingQueue.java:548)
    143.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation + 197(DependencyPriorityBlockingQueue.java:197)
    144.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get + 236(DependencyPriorityBlockingQueue.java:236)
    145.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take + 65(DependencyPriorityBlockingQueue.java:65)
    146.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take + 46(DependencyPriorityBlockingQueue.java:46)
    147.        at java.util.concurrent.ThreadPoolExecutor.getTask + 1092(ThreadPoolExecutor.java:1092)
    148.        at java.util.concurrent.ThreadPoolExecutor.runWorker + 1152(ThreadPoolExecutor.java:1152)
    149.        at java.util.concurrent.ThreadPoolExecutor$Worker.run + 641(ThreadPoolExecutor.java:641)
    150.        at java.lang.Thread.run + 764(Thread.java:764)
    151.  
    152. #8. Queue
    153.        at java.lang.Object.wait(Object.java)
    154.        at java.lang.Thread.parkFor$ + 2137(Thread.java:2137)
    155.        at sun.misc.Unsafe.park + 358(Unsafe.java:358)
    156.        at java.util.concurrent.locks.LockSupport.park + 190(LockSupport.java:190)
    157.        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await + 2059(AbstractQueuedSynchronizer.java:2059)
    158.        at java.util.concurrent.PriorityBlockingQueue.take + 548(PriorityBlockingQueue.java:548)
    159.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation + 197(DependencyPriorityBlockingQueue.java:197)
    160.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get + 236(DependencyPriorityBlockingQueue.java:236)
    161.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take + 65(DependencyPriorityBlockingQueue.java:65)
    162.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take + 46(DependencyPriorityBlockingQueue.java:46)
    163.        at java.util.concurrent.ThreadPoolExecutor.getTask + 1092(ThreadPoolExecutor.java:1092)
    164.        at java.util.concurrent.ThreadPoolExecutor.runWorker + 1152(ThreadPoolExecutor.java:1152)
    165.        at java.util.concurrent.ThreadPoolExecutor$Worker.run + 641(ThreadPoolExecutor.java:641)
    166.        at java.lang.Thread.run + 764(Thread.java:764)
    167.  
    168. #9. Queue
    169.        at java.lang.Object.wait(Object.java)
    170.        at java.lang.Thread.parkFor$ + 2137(Thread.java:2137)
    171.        at sun.misc.Unsafe.park + 358(Unsafe.java:358)
    172.        at java.util.concurrent.locks.LockSupport.park + 190(LockSupport.java:190)
    173.        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await + 2059(AbstractQueuedSynchronizer.java:2059)
    174.        at java.util.concurrent.PriorityBlockingQueue.take + 548(PriorityBlockingQueue.java:548)
    175.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation + 197(DependencyPriorityBlockingQueue.java:197)
    176.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get + 236(DependencyPriorityBlockingQueue.java:236)
    177.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take + 65(DependencyPriorityBlockingQueue.java:65)
    178.        at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take + 46(DependencyPriorityBlockingQueue.java:46)
    179.        at java.util.concurrent.ThreadPoolExecutor.getTask + 1092(ThreadPoolExecutor.java:1092)
    180.        at java.util.concurrent.ThreadPoolExecutor.runWorker + 1152(ThreadPoolExecutor.java:1152)
    181.        at java.util.concurrent.ThreadPoolExecutor$Worker.run + 641(ThreadPoolExecutor.java:641)
    182.        at java.lang.Thread.run + 764(Thread.java:764)
    183.  
    184. #10. Crashlytics Exception Handler1
    185.        at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
    186.        at java.lang.Thread.getStackTrace + 1538(Thread.java:1538)
    187.        at java.lang.Thread.getAllStackTraces + 1588(Thread.java:1588)
    188.        at com.crashlytics.android.core.CrashlyticsController.writeSessionEvent + 1340(CrashlyticsController.java:1340)
    189.        at com.crashlytics.android.core.CrashlyticsController.writeFatal + 1027(CrashlyticsController.java:1027)
    190.        at com.crashlytics.android.core.CrashlyticsController.access$500 + 69(CrashlyticsController.java:69)
    191.        at com.crashlytics.android.core.CrashlyticsController$7.call + 328(CrashlyticsController.java:328)
    192.        at com.crashlytics.android.core.CrashlyticsController$7.call + 321(CrashlyticsController.java:321)
    193.        at java.util.concurrent.FutureTask.run + 266(FutureTask.java:266)
    194.        at java.util.concurrent.ThreadPoolExecutor.runWorker + 1167(ThreadPoolExecutor.java:1167)
    195.        at java.util.concurrent.ThreadPoolExecutor$Worker.run + 641(ThreadPoolExecutor.java:641)
    196.        at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun + 75(ExecutorUtils.java:75)
    197.        at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run + 30(BackgroundPriorityRunnable.java:30)
    198.        at java.lang.Thread.run + 764(Thread.java:764)
    199.  
    200. #11. Answers Events Handler1
    201.        at java.lang.Object.wait(Object.java)
    202.        at java.lang.Thread.parkFor$ + 2137(Thread.java:2137)
    203.        at sun.misc.Unsafe.park + 358(Unsafe.java:358)
    204.        at java.util.concurrent.locks.LockSupport.park + 190(LockSupport.java:190)
    205.        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await + 2059(AbstractQueuedSynchronizer.java:2059)
    206.        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take + 1120(ScheduledThreadPoolExecutor.java:1120)
    207.        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take + 849(ScheduledThreadPoolExecutor.java:849)
    208.        at java.util.concurrent.ThreadPoolExecutor.getTask + 1092(ThreadPoolExecutor.java:1092)
    209.        at java.util.concurrent.ThreadPoolExecutor.runWorker + 1152(ThreadPoolExecutor.java:1152)
    210.        at java.util.concurrent.ThreadPoolExecutor$Worker.run + 641(ThreadPoolExecutor.java:641)
    211.        at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun + 75(ExecutorUtils.java:75)
    212.        at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run + 30(BackgroundPriorityRunnable.java:30)
    213.        at java.lang.Thread.run + 764(Thread.java:764)
    214.  
    215.  
     
  40. Edward-Qu

    Edward-Qu

    Joined:
    Mar 29, 2016
    Posts:
    5
    Hello, the same issue.
    Unity 2018.4.2f1 and without Application.Quit and not app bundles.
    Different GooglePlay only and anywhere install crash count.

    GooglePlay only
    upload_2019-9-17_16-48-30.png

    Anywhere
    upload_2019-9-17_16-54-54.png

    Our devices cannot reproduce this issue.....
    upload_2019-9-17_17-1-0.png
     
  41. zhuangqiang

    zhuangqiang

    Joined:
    Aug 6, 2019
    Posts:
    1
    Any solutions? I have similar crashes,any one help me?
     
  42. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Android: Improve error messages for cases where android application fails to load libmain.so. Previously it was printing "Unable to find main", now it will print "Failed to load 'libmain.so', the application will terminate.", additionally it will print exception from System.loadLibrary with detailed info, where the application was looking for libmain.so

    Message will be available in 2018.4.10f1 as well.

    Also, we may have found another case, where this issue occurs, still exploring:
    - Build an app with Install Location: Prefer External
    - After installing app, change application storage to SD card
    - Run the application, it will crash
     
  43. Dave-Hampson

    Dave-Hampson

    Unity Technologies

    Joined:
    Jan 2, 2014
    Posts:
    149
    I just managed to reproduce it too on S8, in Unity 2018.4.9:

    https://issuetracker.unity3d.com/is...ation-is-changed-to-sd-card-on-android-device


    09-19 17:57:14.349 6403 6403 E AndroidRuntime: java.lang.UnsatisfiedLinkError: No implementation found for void com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator() (tried Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator and Java_com_unity3d_player_UnityPlayer_nativeRestartActivityIndicator__)
    09-19 17:57:14.349 6403 6403 E AndroidRuntime: at com.unity3d.player.UnityPlayer.nativeRestartActivityIndicator(Native Method)
    09-19 17:57:14.349 6403 6403 E AndroidRuntime: at com.unity3d.player.UnityPlayer.resume(Unknown Source:23)
    09-19 17:57:14.349 6403 6403 E AndroidRuntime: at com.unity3d.player.UnityPlayerActivity.onResume(Unknown Source:5)
    09-19 17:57:14.349 6403 6403 E AndroidRuntime: at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1412)


    Thank you to the submitter of this! You figured it out.
    It's assigned to the devs now. Hopefully we can come up with a fix soon. We'll keep you informed.
     
    leni8ec, andreyul and Matthewek like this.
  44. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    We've reproduced that issue, this seems to be known - https://issuetracker.google.com/issues/127691101

    We're applying the fix as we speak. If you don't want to wait for the new release, you can actually try fixing this yourself, simply drop this script in Assets/Editor folder, it will patch gradle.properties file and add a line:

    Code (csharp):
    1.  
    2. android.bundle.enableUncompressedNativeLibs=false
    3.  
    This should fix application startup, if application is installed on SD card and was uploaded as app bundle.
     

    Attached Files:

    Last edited: Sep 20, 2019
  45. Matthewek

    Matthewek

    Joined:
    Apr 6, 2015
    Posts:
    43
    @Tomas1856 - that's great, do you know when we can expect a new release that contains this fix? Thank you.
     
  46. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Really hard to say, the fix must first reach our master branch, only then it can be backported to 2018.4, so probably something like 2-5 weeks
     
  47. ZhenglangTech

    ZhenglangTech

    Joined:
    Dec 21, 2018
    Posts:
    6
    @Tomas1856 It's great to hear a fix for this issue.

    However, the build config of our app is limited to internal. Was this fix also work for us?
    upload_2019-9-23_13-25-30.png

    On the other hand, there is no Asset/Editor folder in the project but a "Editor Default Resources" folder under the Asset folder
    upload_2019-9-23_13-29-21.png

    If I want to try your temp fix, shall I put the ProjectGeneratorCallback.cs file into the "Editor Default Resources" folder? Or I must create a Editor folder first and put ProjectGeneratorCallback.cs into it.

    Thanks a lot.
     
  48. levelappstudios

    levelappstudios

    Joined:
    Nov 7, 2017
    Posts:
    30
    Glad to see that Unity staff is working on this to fix ASAP. Kudos for you guys!
     
  49. Tomas1856

    Tomas1856

    Unity Technologies

    Joined:
    Sep 21, 2012
    Posts:
    2,098
    Seeing that you Force Internal, I would assume you don't need the fix. Just to be on the safe side, check if you're able to move your application to SD card.

    As for ProjectGeneratorCallback.cs, because it's an editor script, it must be in Assets/Editor folder of your Unity project
     
    ZhenglangTech likes this.
  50. MalyaWka

    MalyaWka

    Joined:
    Jan 2, 2015
    Posts:
    12
    Thanks a lot for the workaround! ;)

    For two days, there has not been a single error for the applications installed with Google Play.
    upload_2019-9-23_11-10-20.png

    But for applications installed from other sources, the error persists (their number has clearly decreased).
    upload_2019-9-23_11-12-0.png
    upload_2019-9-23_11-14-50.png
     
    leni8ec, ZhenglangTech and Tomas1856 like this.
unityunity