shinyorg / shiny

.NET Framework for Backgrounding & Device Hardware Services (iOS, Android, & Catalyst)
https://shinylib.net
MIT License
1.44k stars 227 forks source link

[Android] Jobs setRequiresBatteryNotLow requires API level 26 #194

Closed dahlbyk closed 4 years ago

dahlbyk commented 4 years ago

Please check all of the platforms you are having the issue on (if platform is not listed, it is not supported)

Feature Library

Version of Library

888293e9c86862a26eff15fed397cd864230b52a

Version of OS(s) listed above with issue

Android 6.0.1

Steps to Reproduce

  1. Register a job

Expected Behavior

No crash.

Actual Behavior

Crash! setRequiresBatteryNotLow requires API level 26.

Version Code: 1578438931
Version Name: 0.1.0+5ab31d9
Android: 6.0.1
Android Build: MTC20F
Manufacturer: LGE
Model: Nexus 5X
CrashReporter Key: 61d4d151-ab27-4a9f-bc19-a61ebc1f7c39
Start Date: 2020-01-09T19:50:50.583Z
Date: 2020-01-09T19:51:03.486Z

Xamarin Exception Stack:
Java.Lang.IncompatibleClassChangeError: no non-static method "Landroid/app/job/JobInfo$Builder;.setRequiresBatteryNotLow(Z)Landroid/app/job/JobInfo$Builder;"
  at Java.Interop.JniEnvironment+InstanceMethods.GetMethodID (Java.Interop.JniObjectReference type, System.String name, System.String signature) [0x0005b] in <70ee29fa8fd941eeaf9f13e6aaf052f3>:0
  at Java.Interop.JniType.GetInstanceMethod (System.String name, System.String signature) [0x0000c] in <70ee29fa8fd941eeaf9f13e6aaf052f3>:0
  at Java.Interop.JniPeerMembers+JniInstanceMethods.GetMethodInfo (System.String encodedMember) [0x00031] in <70ee29fa8fd941eeaf9f13e6aaf052f3>:0
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeAbstractObjectMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00006] in <70ee29fa8fd941eeaf9f13e6aaf052f3>:0
  at Android.App.Job.JobInfo+Builder.SetRequiresBatteryNotLow (System.Boolean batteryNotLow) [0x00022] in <afbb6c3f690b4bfd842a7ad82c12ff7c>:0
  at Shiny.Jobs.JobManager.ScheduleNative (Shiny.Jobs.JobInfo jobInfo) [0x0004b] in <a906b14214384c2a80e095294a0148c6>:0
  at Shiny.Jobs.AbstractJobManager.Schedule (Shiny.Jobs.JobInfo jobInfo) [0x00029] in <a906b14214384c2a80e095294a0148c6>:0
  at Shiny.ServiceExtensions+<>c__DisplayClass3_0.<RegisterJob>b__0 (System.IServiceProvider sp) [0x000e8] in <a906b14214384c2a80e095294a0148c6>:0
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__6_0 (System.Object state) [0x00000] in <a05bd567471f4f40ba64b0e0a2924c06>:0
  at Android.App.SyncContext+<>c__DisplayClass2_0.<Post>b__0 () [0x00000] in <afbb6c3f690b4bfd842a7ad82c12ff7c>:0
  at Java.Lang.Thread+RunnableImplementor.Run () [0x00008] in <afbb6c3f690b4bfd842a7ad82c12ff7c>:0
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] in <afbb6c3f690b4bfd842a7ad82c12ff7c>:0
  at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.17(intptr,intptr)
  at java.lang.NoSuchMethodError: no non-static method "Landroid/app/job/JobInfo$Builder;.setRequiresBatteryNotLow(Z)Landroid/app/job/JobInfo$Builder;"
  at md5fcfe03c74613c9c105f854ab331bd247.MainApplication.n_onCreate(Native Method)
  at md5fcfe03c74613c9c105f854ab331bd247.MainApplication.onCreate(MainApplication.java:25)
  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4711)
  at android.app.ActivityThread.-wrap1(ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:148)
  at android.app.ActivityThread.main(ActivityThread.java:5421)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Thread 1:
0   dalvik.system.VMStack.getThreadStackTrace(VMStack.java:-2)
1   java.lang.Thread.getStackTrace(Thread.java:580)
2   java.lang.Thread.getAllStackTraces(Thread.java:522)
3   com.microsoft.appcenter.crashes.Crashes.saveUncaughtException(Crashes.java:1093)
4   com.microsoft.appcenter.crashes.WrapperSdkExceptionManager.saveWrapperException(WrapperSdkExceptionManager.java:58)
5   mono.java.lang.RunnableImplementor.n_run(RunnableImplementor.java:-2)
6   mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:30)
7   android.os.Handler.handleCallback(Handler.java:739)
8   android.os.Handler.dispatchMessage(Handler.java:95)
9   android.os.Looper.loop(Looper.java:148)
10  android.app.ActivityThread.main(ActivityThread.java:5421)
11  java.lang.reflect.Method.invoke(Method.java:-2)
12  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
13  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Thread 653:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:147)
2   java.lang.Thread.run(Thread.java:818)

Thread 654:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Object.wait(Object.java:423)
2   java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:101)
3   java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:72)
4   java.lang.Daemons$FinalizerDaemon.run(Daemons.java:185)
5   java.lang.Thread.run(Thread.java:818)

Thread 655:
0   java.lang.Thread.sleep(Thread.java:-2)
1   java.lang.Thread.sleep(Thread.java:1031)
2   java.lang.Thread.sleep(Thread.java:985)
3   java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:273)
4   java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:284)
5   java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:232)
6   java.lang.Thread.run(Thread.java:818)

Thread 656:
0   dalvik.system.VMRuntime.runHeapTasks(VMRuntime.java:-2)
1   java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:355)
2   java.lang.Thread.run(Thread.java:818)

Thread 663:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor$(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1011)
5   java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1302)
6   java.util.concurrent.CountDownLatch.await(CountDownLatch.java:249)
7   com.google.android.gms.tasks.Tasks$zza.await
8   com.google.android.gms.tasks.Tasks.await
9   com.google.firebase.iid.FirebaseInstanceId.zza
10  com.google.firebase.iid.FirebaseInstanceId.getToken
11  com.google.firebase.iid.FirebaseInstanceId.zzl
12  com.google.firebase.iid.zzay.zzam
13  com.google.firebase.iid.zzay.run
14  java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
15  java.util.concurrent.FutureTask.run(FutureTask.java:237)
16  java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
17  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
18  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
19  com.google.android.gms.common.util.concurrent.zza.run
20  java.lang.Thread.run(Thread.java:818)

Thread 664:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor$(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2053)
5   java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:435)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1037)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1098)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
9   java.lang.Thread.run(Thread.java:818)

Thread 665:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor$(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:810)
5   java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:971)
6   java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1278)
7   java.util.concurrent.CountDownLatch.await(CountDownLatch.java:203)
8   com.google.android.gms.tasks.Tasks$zza.await
9   com.google.android.gms.tasks.Tasks.await
10  com.google.firebase.iid.zzat.zzc
11  com.google.firebase.iid.zzr.zza
12  com.google.firebase.iid.zzs.run
13  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
14  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
15  java.lang.Thread.run(Thread.java:818)

Thread 666:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor$(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2053)
5   java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1090)
6   java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1071)
7   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1038)
8   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1098)
9   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
10  com.google.android.gms.common.util.concurrent.zza.run
11  java.lang.Thread.run(Thread.java:818)

Thread 667:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:323)
2   android.os.Looper.loop(Looper.java:135)
3   android.os.HandlerThread.run(HandlerThread.java:61)

Thread 669:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor$(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2013)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1038)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1098)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
9   java.lang.Thread.run(Thread.java:818)

Thread 670:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:323)
2   android.os.Looper.loop(Looper.java:135)
3   android.os.HandlerThread.run(HandlerThread.java:61)

Thread 671:
0   android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
1   android.os.MessageQueue.next(MessageQueue.java:323)
2   android.os.Looper.loop(Looper.java:135)
3   android.os.HandlerThread.run(HandlerThread.java:61)

Thread 679:
0   java.lang.Object.wait(Object.java:-2)
1   java.lang.Thread.parkFor$(Thread.java:1220)
2   sun.misc.Unsafe.park(Unsafe.java:299)
3   java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
4   java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2013)
5   java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
6   java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1038)
7   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1098)
8   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
9   java.lang.Thread.run(Thread.java:818)

Thread 680:
0   java.lang.Object.wait(Object.java:-2)
1   com.android.okhttp.okio.AsyncTimeout.awaitTimeout(AsyncTimeout.java:323)
2   com.android.okhttp.okio.AsyncTimeout.-wrap0(AsyncTimeout.java:-1)
3   com.android.okhttp.okio.AsyncTimeout$Watchdog.run(AsyncTimeout.java:286)

Thread 681:
0   java.lang.Object.wait(Object.java:-2)
1   com.android.okhttp.ConnectionPool.performCleanup(ConnectionPool.java:305)
2   com.android.okhttp.ConnectionPool.runCleanupUntilPoolIsEmpty(ConnectionPool.java:242)
3   com.android.okhttp.ConnectionPool.-wrap0(ConnectionPool.java:-1)
4   com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:97)
5   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
6   java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
7   java.lang.Thread.run(Thread.java:818)
aritchie commented 4 years ago

Fixed in dev

lock[bot] commented 4 years ago

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.