google / play-unity-plugins

The Google Play Plugins for Unity provide C# APIs for accessing various Play services
Other
435 stars 110 forks source link

Crash at Android 12 #187

Open ByvAntonRybak opened 2 years ago

ByvAntonRybak commented 2 years ago

Hello I'm now experiencing crash on android devices with Android 12 only.

thread.cc:2372] Throwing new exception 'No interface method getPackStates(Ljava/util/List;)Lcom/google/android/play/core/tasks/Task; in class Lcom/google/android/play/core/assetpacks/AssetPackManager; or its super classes (declaration of 'com.google.android.play.core.assetpacks.AssetPackManager' appears in base.apk!classes2.dex)' with unexpected pending exception: java.lang.NoSuchMethodError: No interface method getPackStates(Ljava/util/List;)Lcom/google/android/play/core/tasks/Task; in class Lcom/google/android/play/core/assetpacks/AssetPackManager; or its super classes (declaration of 'com.google.android.play.core.assetpacks.AssetPackManager' appears in base.apk!classes2.dex) thread.cc:2372] at void com.unity3d.player.AssetPackManagerWrapper.getAssetPackStates(java.lang.String[], com.unity3d.player.IAssetPackManagerStatusQueryCallback) ((null):-1) thread.cc:2372] at void com.unity3d.player.AssetPackManagerWrapper.getAssetPackState(java.lang.String, com.unity3d.player.IAssetPackManagerStatusQueryCallback) ((null):-1) thread.cc:2372] at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2) thread.cc:2372] at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1) thread.cc:2372] at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1) thread.cc:2372] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102) thread.cc:2372] at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:226) thread.cc:2372] at void android.os.Looper.loop() (Looper.java:313) thread.cc:2372] at void com.unity3d.player.UnityPlayer$e.run() ((null):-1) thread.cc:2372]

Crash is occurring at second launch of game. After Build&Run all is working perfectly, but after each next reload - crash. Clearing app cache helps one time, at second time after clear game crashing again.

I'm using Asset Delivery system only from pack and without it all works just fine

maxpushkarev commented 2 years ago

the same issue, please help. (Android 11)

maxpushkarev commented 2 years ago

@ByvAntonRybak try to downgrade plugins to 1.7.0 version. this helped me to overcome the same crash

ByvAntonRybak commented 2 years ago

@maxpushkarev And yes, it helped. No more crashes with old monolithic library.

vavro1 commented 2 years ago

Same crashes for local builds from Unity 2020.3.23f1 and 1.8.0 version of plugins. What was strange is that unity cloud builds were working correctly for us.

Arivval commented 2 years ago

Hi,

Thanks for reporting this issue. The latest version of Play Core Java libraries includes breaking changes, which require a migration process on the wrapper side. This issue should be because play-unity-plugins 1.8.0 bumped the Play Core Java libraries to 2.0.0, while Unity's own AssetPackManagerWrapper implementation is still based on pre-2.0.0 Play Core APIs.

We'll be working on a fix to address this issue. In the meanwhile, please depend on 1.7.0 to avoid this issue, and sorry for any inconveniences.

Thanks John

acristo76 commented 2 years ago

thanks for the workaround. Will do that and hopefully there will be a fix soon...

shawnzhang commented 1 year ago

The issue still happened in play-unity-plugins 1.8.1. And if possible please make tutorial how to downgrade to play.core 1.7.0. I try to download from 'History' but I don't know how to download whole folder.

currently I got same issue from catlog ("adb catlog -s Unity"): 09-18 12:37:41.571 5855 5888 E Unity : JNI:MountObbs:java.lang.NoSuchMethodError: No interface method getPackStates(Ljava/util/List;)Lcom/google/android/play/core/tasks/Task; in class Lcom/google/android/play/core/assetpacks/AssetPackManager; or its super classes (declaration of 'com.google.android.play.cor 09-18 12:37:41.782 5855 5855 I Unity : onPause

Regards.

RoshanMethod commented 1 year ago

@shawnzhang did you find out on how to downgrade to 1.7.0? Deleting the play asset delivery plugin and importing older one doesn't work for me

SalihKyc commented 1 year ago

A problem I've been dealing with for days, I'm in a situation where I've tried upgrading or downgrading many versions and can't get results. Here PAD 1.7.0 is said to be running. The problem with aab I uploaded to play store with version 1.7.0 is "We detected that this app is using an unsupported version of Play billing. Please upgrade to Billing Library 4 or newer to publish this app." I'm getting a warning. I am getting gradle errors with Unity In App Purchase version 4.1. If anyone knows a method, please share. I'm so bored now.

Arivval commented 1 year ago

Hi @SalihKyc. I'm sorry to hear about this issue. Could you please try to retrieve Play Asset Delivery 1.7.0 package through the archives in this page? The deprecated Play Billing plugin is not included in that package, so it should make the Play Console warning go away.

hashBini commented 1 year ago

Hi @Arivval, I am also facing the same issue as mentioned in the topic. Crash occurs for me on the start of the game, the game doesn't even launch at all. I am using PAD 1.8.0, and also, I am also using Firebase for unity 8.10.0. Are these creating conflict with each other? Also, regarding downgrading to 1.7.0, what would be the proper method? Should I just import the package and replace the 1.8.0 files or completely delete 1.8.0 files and replace them with 1.7.0?

My crash starts with this:

2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] Runtime aborting... 2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] All threads: 2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] DALVIK THREADS (27): 2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] "UnityMain" prio=5 tid=5 Runnable 2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] | group="" sCount=0 ucsCount=0 flags=2 obj=0x13917f00 self=0xb400007b186f7c00 2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] | sysTid=1510 nice=0 cgrp=default sched=0/0 handle=0x7b2ab0ecb0 2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] | state=R schedstat=( 20613956 11992710 40 ) utm=0 stm=2 core=7 HZ=100 2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] | stack=0x7b2aa0b000-0x7b2aa0d000 stackSize=1039KB 2022/09/24 15:57:57.414 31953 1510 Fatal xyz.abc runtime.cc:675] | held mutexes= "abort lock" "mutator lock"(shared held)

And I get this same error as the title some logs down:

2022/09/24 15:57:57.502 1370 1370 Error ORMS_HAL open /sys/devices/platform/soc/soc:oplus-omrg/oplus-omrg0/ruler_enable failed(No such file or directory) 2022/09/24 15:57:57.502 1370 1370 Error ORMS_HAL open /sys/devices/platform/soc/soc:oplus-omrg/oplus-omrg0/ruler_enable failed(No such file or directory) 2022/09/24 15:57:57.507 5589 1577 Info KeyboardDefManager KeyboardDefManager.lambda$loadKeyboardDef$2():393 parsing keyboard def from xml failed or task was canceled. 2022/09/24 15:57:57.511 1415 1415 Debug OplusMovieIdle updateLayerStacks,mOmiSupport is not supoort 2022/09/24 15:57:57.511 1370 1370 Error ORMS_HAL open /sys/devices/platform/soc/soc:oplus-omrg/oplus-omrg0/ruler_enable failed(No such file or directory) 2022/09/24 15:57:57.524 1415 1415 Debug OplusMovieIdle updateLayerStacks,mOmiSupport is not supoort 2022/09/24 15:57:57.524 31953 1510 Error CRASH Tombstone written to: /storage/emulated/0/Android/data/in.xyz.abc/files/tombstone_01 2022/09/24 15:57:57.525 31953 1510 Fatal xyz.abc thread.cc:2468] No pending exception expected: java.lang.NoSuchMethodError: No interface method getPackStates(Ljava/util/List;)Lcom/google/android/play/core/tasks/Task; in class Lcom/google/android/play/core/assetpacks/AssetPackManager; or its super classes (declaration of 'com.google.android.play.core.assetpacks.AssetPackManager' appears in /data/app/~~wE8S_MN93DsJ-0MkwnXvgg==/in.xyz.abc-MUXbrqRNi7zfF_j3kqx3cQ==/base.apk)

isurfraz commented 1 year ago

how is it that the entire PAD system is unusable in unity for 6 months? 1.8+ does not work - is somebody going to address this?

Trunksome commented 1 year ago

any updates on this? @Arivval is there an ETA for a new version that fixes the issue?

NightQnEarth commented 1 year ago

We faced with this issue too after updating to 1.8.1 version of plugins.

TrueRaider commented 1 year ago

Maybe fixed in 2023.1.0 https://issuetracker.unity3d.com/issues/crash-when-using-unity-built-in-play-asset-delivery-integration-together-with-play-core-libraries-2-dot-0-0-plus

hashBini commented 1 year ago

So, I had finally fixed this issue some time ago, and am sharing my solution here. Basically what it boils down is to have compatible versions of PAD plugin, Unity and Firebase (if you are using it). I tried to mix and match various version of Unity 2019, PAD, and firebase, and then it finally worked.

Unity - 2019.4.40f1 Firebase - 8.10.0 (for all the modules I was using) PAD - 1.7.0

What I think is that Firebase and PAD are conflicting with each other in some versions. So you'll need to make sure that you have compatible versions and it will work.

Watcher3056 commented 1 year ago

+1 Need fix. Why we should to use unity 2023.1.0 beta? We cannot just upgrade out projects on such unstable unity release!

GPavlioudakis commented 1 year ago

Hi everyone. I'm facing the same issue in my case. I use Unity 2022.3.2f1. The issue is that I haven't installed PAD. Is it pre installed? And how do I downgrade it to 1.7 ?

RotcivOcnarb commented 1 year ago

Also having the same issue with PAD 1.8.2, i didn't even configure anything in the project, just installed the SDK and builded the game that was working, and the crash occurs.

As stated by @Watcher3056 , i can't simply update my project to 2023 as its unstable.

Also i can't downgrade PAD to version 1.7.0 because i'm using other packages from Play Core (like in-app reviews) that uses Core 2.0.0, and conflicts with the version 1.10.0 used by PAD 1.7.0

blazejhanzel commented 1 year ago

Hey, I had similar problem with game crashing on startup when I want to use Google Play In-App Review. After few days of struggle I found out that crash occurs when I define ReviewManager inside the class this way:

private class ExampleClass
{
  private ReviewManager reviewManager = new();
}

but when I moved initialization to Awake():

private class ExampleClass
{
  private ReviewManager reviewManager;

  private void Awake()
  {
    reviewManager = new();
  }
}

app doesn't crash anymore.

Hope this helps and I have a hope they will fix this or make an appropriate info on documentation because it's probable not the way how it should work.

emathis11 commented 1 year ago

I upgraded to Unity 2022.3.4 and get the opposite problem, any version <= 1.7.0 causes a crash on launch with almost the same error message. So you may want to try updating to 2022.3 to work around your problem.

julien-tamade commented 1 year ago

Hi, we upgraded from 2019 to 2021 and are now getting the crash. The weird thing is we don't even use any google play service or have the plugin installed at all. Would love any thoughts on this

devjta commented 1 year ago

Yeah, we also face this issue and already wasted 3 days on that..

We dont integrate ANYWHERE this PAD. We dont USE it. We dont NEED it, as the filesize doesnt matter.

Why is that thing such a massive issue?

When I look at the decompiled source, no one is refeering to the "gms.tasks.Task".. So its probably coming from some JNI related stuff.

How can I turn that crap off? Why is it including or want todo things on its own? Why did it work BETTER (using the Play-Core-Tasks, not the Play-Service-Task) in the previous version?

We have play-core added in the main app since ages and only after unity upgrade, we face that issue..

So on a newer unity version, you are somehow using an older implementation? WHY??

AhmadMansy commented 1 year ago

Same as last two comments, I upgraded unity from 2022.1.23 to 2022.3.5f and I got the same crash. And I don't use PAD

SierraChica commented 1 year ago

Finally working for me using:

Unity issue tracker to follow: https://issuetracker.unity3d.com/issues/android-regex-in-checkplaylibraryadded-incorrectly-identifies-play-core-common-libraries

Trunksome commented 11 months ago

I upgraded from Unity 2019.x to 2022.3.10. I was using PAD 1.7.0 before and never upgraded further because the app would simply crash on startup with a similar "No interface method" exception.

Now after the upgrade to the 2022 Unity LTS, this exception is back! When I try to upgrade to PAD 1.8.2, I don't manage to build an .abb (Gradle build failed, i don't understand the errors). I suppose this is because I need to be on the unstable Unity beta now? I want to be on LTS! And is this upgrade even going to fix it?

Does this mean there is no way to use Unity LTS 2022 together with PAD?

SierraChica commented 11 months ago

I'm currently using Unity 2022.3.10 with PAD 1.8.2... so, yes, it's possible. It looks like you need to fix something different to build the .aab. What error do you get?

Trunksome commented 11 months ago

Thank you, your post made me keep trying! And indeed I figured it out ... i think something broke during resolving of dependencies, I ended up removing all google plugins and trying it again. This time it worked. So it seems possible! I'm just wondering why it says minimum 2023 beta ... I actually migrated the project to that unity version and tried it, just to see if it would fix the problem (which ofc it didn't)

roointan commented 10 months ago

I'm Using Unity 2022.3.12f1 and app was crashing on start. Updating Google Play Review to version 1.8.1 fixed the issue for me.

deniskutovskiy commented 8 months ago

I'm using Unity 2020.3.36f1 and none of versions 1.7.0 - 1.8.2 of Play Asset Delivery worked for me.

firdiar-mita commented 8 months ago

I'm using Unity 2020.3.36f1 and none of versions 1.7.0 - 1.8.2 of Play Asset Delivery worked for me.

make sure to only use default compression for aab

georgepeng90 commented 8 months ago

I'm using Unity 2020.3.36f1 and none of versions 1.7.0 - 1.8.2 of Play Asset Delivery worked for me.

Same here. I was using Unity 2021.3.16f1 and PAD 1.7.0, everything is fine. After I upgraded Unity to 2022.3.11, this crash happens.

Crash info says cannot find "getPackStates" method, but in the exported android project, I've found the exact method in AssetPackManager.class.

deniskutovskiy commented 8 months ago

Finally, I was able to get it to work! Switching versions to Unity 2020.3.48f1 and PAD 1.6.0 made the solution work for me on all Android versions, regardless of compression.

So if I were anyone facing the problem, I'd look for a solution in finding a working match between Unity and PAD versions.

LastHaoBrother commented 6 months ago

我使用的是 Unity 2020.3.36f1,Play Asset Delivery 的 1.7.0 - 1.8.2 版本均不适用于我。

Just like you

SolidFuria commented 5 months ago

Hi, In my case I 'm using Unity 2021.3.36f1, and I solved the problem updating package com.google.android.play:core-common to version 2.0.0, and com.google.android.play to 2.0.0, both in files "ProjectSettings/AndroidResolverDependencies.xml" and "Assets/Plugins/Android/mainTemplate.gradle"

aleter commented 3 months ago

Hi, In my case I 'm using Unity 2021.3.36f1, and I solved the problem updating package com.google.android.play:core-common to version 2.0.0, and com.google.android.play to 2.0.0, both in files "ProjectSettings/AndroidResolverDependencies.xml" and "Assets/Plugins/Android/mainTemplate.gradle"

can you provide your AndroidResolverDependencies.xml please

because i have only com.google.android.play:core-common dependency, but no com.google.android.play in AndroidResolverDependencies.xm

zhaowhao commented 3 months ago

Today, I fixed this issue with the following solution: Comment out the following line: //implementation "com.google.android.play:core:1.10.0" Add the following line: implementation 'com.google.android.play:asset-delivery:2.2.2'

The reason is likely that the latest version of Unity uses a method that is included in the new Play Asset Delivery library, which is not present in the old Play Core library. For detailed migration information, you can refer to the following documentation: https://developer.android.com/guide/playcore

1501432163 commented 1 month ago

Finally, I was able to get it to work! Switching versions to Unity 2020.3.48f1 and PAD 1.6.0 made the solution work for me on all Android versions, regardless of compression.

So if I were anyone facing the problem, I'd look for a solution in finding a working match between Unity and PAD versions.

========================================================

Is this combination suitable for Android 14?

brenofurlanpixo commented 1 month ago

On our end, we were firstly using Unity 2021.3 and then we've moved to Unity 2022.3 After the upgrade, using com.google.play.common, com.google.play.core and com.google.play.review @1.7.0 made the app crash on launch.

Upgrading those 3 for @1.8.1 solved our builds.

Andrei-Lapusteanu commented 1 month ago

We were using Unity 2021.3.27f1, and were not able to upgrade to PAD versions any higher than 1.7.0. Upgrading to the latest LTS (as of writing), 2021.3.42f1, got PAD 1.8.2 working without hard-crashing on app start, at least for our setup.

For context, we required this because we also needed to update to the latest com.google.play.appupdate@1.8.2 as Android 14 requires the Play In-App Updates Library 2.1.0 (which is a dependency in com.google.play.appupdate@1.8.2), and we could not get PAD 1.7.0 working with com.google.play.appupdate@1.8.2.