Fixed
Status Update
Comments
ra...@google.com <ra...@google.com>
ia...@gmail.com <ia...@gmail.com> #2
I forgot to mention that my Woker returns Result.SUCCESS always.
su...@google.com <su...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 05f2d67cc04c5f76bee122b9e1e23ca1bf61a326
Author: Sumir Kataria <sumir@google.com>
Date: Tue Aug 21 16:36:05 2018
Fix periodic work so it executes repeatedly.
Processor.onExecuted is the wrong place for cancelling things in
other schedulers. It doesn't have the proper information about
what needs to be cancelled. For example, PeriodicWork should NOT
be cancelled. This should be done right before Schedulers.schedule
at the end of WorkerWrapper.
Bug: 112859683
Test: Added new tests for API 22-, manually tested using
integration app for 23+ since JobScheduler enforces a 15 minute
limit between executions
Change-Id: Ia0e6e17367fbc2493339b9b1275453267c571580
M work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java
M work/workmanager/src/main/java/androidx/work/impl/Processor.java
M work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
https://android-review.googlesource.com/735827
https://goto.google.com/android-sha1/05f2d67cc04c5f76bee122b9e1e23ca1bf61a326
Branch: androidx-master-dev
commit 05f2d67cc04c5f76bee122b9e1e23ca1bf61a326
Author: Sumir Kataria <sumir@google.com>
Date: Tue Aug 21 16:36:05 2018
Fix periodic work so it executes repeatedly.
Processor.onExecuted is the wrong place for cancelling things in
other schedulers. It doesn't have the proper information about
what needs to be cancelled. For example, PeriodicWork should NOT
be cancelled. This should be done right before Schedulers.schedule
at the end of WorkerWrapper.
Bug: 112859683
Test: Added new tests for API 22-, manually tested using
integration app for 23+ since JobScheduler enforces a 15 minute
limit between executions
Change-Id: Ia0e6e17367fbc2493339b9b1275453267c571580
M work/workmanager/src/androidTest/java/androidx/work/impl/WorkManagerImplTest.java
M work/workmanager/src/main/java/androidx/work/impl/Processor.java
M work/workmanager/src/main/java/androidx/work/impl/WorkerWrapper.java
su...@google.com <su...@google.com> #4
I am experiencing the same problem using the following code:
val myWorker = PeriodicWorkRequestBuilder<MyWorker>(15, TimeUnit.MINUTES)
myWorker.addTag(NEWSFEED_SYNC_WORKER_ID)
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
myWorker.setConstraints(constraints)
WorkManager.getInstance().enqueue(myWorker.build())
val myWorker = PeriodicWorkRequestBuilder<MyWorker>(15, TimeUnit.MINUTES)
myWorker.addTag(NEWSFEED_SYNC_WORKER_ID)
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
myWorker.setConstraints(constraints)
WorkManager.getInstance().enqueue(myWorker.build())
to...@googlemail.com <to...@googlemail.com> #5
The fix will be available in alpha08.
su...@google.com <su...@google.com> #6
I'm facing this in alpha09 on Android Pie
to...@googlemail.com <to...@googlemail.com> #7
Update: alpha09 works fine in pre-Oreo with a minimum interval of 15 minutes. Post Oreo, never gets triggered. Haven't yet checked the interference of battery optimization. Will update on the same soon.
su...@google.com <su...@google.com> #8
Still facing this in alpha10 on Oreo and Pie
su...@google.com <su...@google.com> #9
solved in alpha 11 i have not this problem but some times WorkManger run 2 times instead one Worker class in Periodic work
to...@googlemail.com <to...@googlemail.com> #10
Is there any other way to use periodic job scheduler except WorkManager,Job Creator?
su...@google.com <su...@google.com> #11
There shouldn't be any issues with targetSdkVersion 26 and compileSdkVersion 28.
to...@googlemail.com <to...@googlemail.com> #12
Okay. I will try that. Thanks.
Feel free to contact me if you are not able to build my project.
Feel free to contact me if you are not able to build my project.
to...@googlemail.com <to...@googlemail.com> #13
Does it suffice to raise the compileSdkVersion to 28 or do I also have to raise the version of the support library artifacts at the same time? I tried your suggestion in comment #11 but the build still fails.
ap...@google.com <ap...@google.com> #14
Project: platform/frameworks/support
Branch: androidx-master-dev
commit cee9ab55352f3ad506552afb4753baf8648b4c30
Author: Sumir Kataria <sumir@google.com>
Date: Mon Oct 08 14:20:57 2018
Fix class name in Proguard configuration.
Bug: 116296569
Test: N/A
Change-Id: I3525f9d2f3b06523cbe842b35f97014677879a64
M work/workmanager/proguard-rules.pro
https://android-review.googlesource.com/782087
https://goto.google.com/android-sha1/cee9ab55352f3ad506552afb4753baf8648b4c30
Branch: androidx-master-dev
commit cee9ab55352f3ad506552afb4753baf8648b4c30
Author: Sumir Kataria <sumir@google.com>
Date: Mon Oct 08 14:20:57 2018
Fix class name in Proguard configuration.
Bug: 116296569
Test: N/A
Change-Id: I3525f9d2f3b06523cbe842b35f97014677879a64
M work/workmanager/proguard-rules.pro
su...@google.com <su...@google.com> #15
Support library as well.
to...@googlemail.com <to...@googlemail.com> #16
Do the latest changes (WorkParameters -> WorkerParameters, NonBlockingWorker -> ListenableWorker) in the ProGuard configuration apply to WorkManager 1.0.0-alpha09 or 1.0.0-alpha10 or both?
su...@google.com <su...@google.com> #17
alpha10.
to...@googlemail.com <to...@googlemail.com> #18
su...@google.com <su...@google.com> #19
There isn't one for alpha09... it's already released. You can modify that commit and adapt it to alpha09.
Just change WorkParameters -> WorkerParameters.
Just change WorkParameters -> WorkerParameters.
to...@googlemail.com <to...@googlemail.com> #20
Which commit do you refer to? The link I posted show the history of the proguard-rules.pro commits. Since the file exists for a year I would have expected that there was a version of the file which shipped with WorkManager 1.0.0-alpha which was released by September 19, 2018.
Or do you mean that the proguard-rules.pro being shipped with WorkManager 1.0.0-alpha is buggy?
Or do you mean that the proguard-rules.pro being shipped with WorkManager 1.0.0-alpha is buggy?
su...@google.com <su...@google.com> #21
Yes, alpha09 had a bug. #19 suggests a modification to your app's proguard config to get around the issue. alpha10 should be out soon with the fix.
to...@googlemail.com <to...@googlemail.com> #22
Thank you for the clarification.
I prepared my test branch according to your recommendations (ProGuard, compileSdkVersion, targetSdkVersion, support libraries) as you can see here:
https://github.com/EventFahrplan/EventFahrplan/compare/master...workmanager
The release build however still fails:
00:20:09.182 [QUIET] [system.out] Note: androidx.work.impl.Schedulers: can't find dynamically referenced class androidx.work.impl.background.firebase.FirebaseJobService
00:20:09.182 [QUIET] [system.out] Note: androidx.work.impl.Schedulers: can't find dynamically referenced class androidx.work.impl.background.firebase.FirebaseJobScheduler
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.jdk8.JDK8PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.JRE8PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.jdk7.JDK7PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.JRE7PlatformImplementations
00:20:09.212 [QUIET] [system.out] Note: kotlin.jvm.internal.Reflection: can't find dynamically referenced class kotlin.reflect.jvm.internal.ReflectionFactoryImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class com.android.org.conscrypt.SSLParametersImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class org.apache.harmony.xnet.provider.jsse.SSLParametersImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform$CloseGuard: can't find dynamically referenced class dalvik.system.CloseGuard
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.ConscryptPlatform: can't find dynamically referenced class org.conscrypt.ConscryptEngineSocket
00:20:09.229 [QUIET] [system.out] Note: okhttp3.internal.platform.Platform: can't find dynamically referenced class sun.security.ssl.SSLContextImpl
00:20:09.955 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.core.graphics.drawable.IconCompatParcelizer { android.support.v4.graphics.drawable.IconCompat read(androidx.versionedparcelable.VersionedParcel); }', but not the descriptor class 'androidx.versionedparcelable.VersionedParcel'
00:20:09.955 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.core.graphics.drawable.IconCompatParcelizer { void write(android.support.v4.graphics.drawable.IconCompat,androidx.versionedparcelable.VersionedParcel); }', but not the descriptor class 'androidx.versionedparcelable.VersionedParcel'
I prepared my test branch according to your recommendations (ProGuard, compileSdkVersion, targetSdkVersion, support libraries) as you can see here:
The release build however still fails:
00:20:09.182 [QUIET] [system.out] Note: androidx.work.impl.Schedulers: can't find dynamically referenced class androidx.work.impl.background.firebase.FirebaseJobService
00:20:09.182 [QUIET] [system.out] Note: androidx.work.impl.Schedulers: can't find dynamically referenced class androidx.work.impl.background.firebase.FirebaseJobScheduler
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.jdk8.JDK8PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.JRE8PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.jdk7.JDK7PlatformImplementations
00:20:09.210 [QUIET] [system.out] Note: kotlin.internal.PlatformImplementationsKt: can't find dynamically referenced class kotlin.internal.JRE7PlatformImplementations
00:20:09.212 [QUIET] [system.out] Note: kotlin.jvm.internal.Reflection: can't find dynamically referenced class kotlin.reflect.jvm.internal.ReflectionFactoryImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class com.android.org.conscrypt.SSLParametersImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform: can't find dynamically referenced class org.apache.harmony.xnet.provider.jsse.SSLParametersImpl
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.AndroidPlatform$CloseGuard: can't find dynamically referenced class dalvik.system.CloseGuard
00:20:09.228 [QUIET] [system.out] Note: okhttp3.internal.platform.ConscryptPlatform: can't find dynamically referenced class org.conscrypt.ConscryptEngineSocket
00:20:09.229 [QUIET] [system.out] Note: okhttp3.internal.platform.Platform: can't find dynamically referenced class sun.security.ssl.SSLContextImpl
00:20:09.955 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.core.graphics.drawable.IconCompatParcelizer { android.support.v4.graphics.drawable.IconCompat read(androidx.versionedparcelable.VersionedParcel); }', but not the descriptor class 'androidx.versionedparcelable.VersionedParcel'
00:20:09.955 [QUIET] [system.out] Note: the configuration keeps the entry point 'androidx.core.graphics.drawable.IconCompatParcelizer { void write(android.support.v4.graphics.drawable.IconCompat,androidx.versionedparcelable.VersionedParcel); }', but not the descriptor class 'androidx.versionedparcelable.VersionedParcel'
su...@google.com <su...@google.com> #23
These aren't failures (unless your configuration has a problem). As you can see, you have things listed from other libraries like okhttp as well.
to...@googlemail.com <to...@googlemail.com> #24
Maybe, I missing the specific part in the output. I pasted a large part of the lower end here: http://pastebin.de/8421/
ra...@google.com <ra...@google.com> #25
You need to add:
-dontwarn sun.misc.Unsafe
-dontwarn sun.misc.Unsafe
to...@googlemail.com <to...@googlemail.com> #26
Thank you. This made the release build succeed.
Can you please explain which library (version) introduces the Unsafe class?
Can you please explain which library (version) introduces the Unsafe class?
ri...@googlemail.com <ri...@googlemail.com> #27
I am still facing this issue with WorkManager-1.0.0-beta01
2018-12-31 01:40:32.701 2947-2977/de.aurora.mggvertretungsplan.debug E/WM-WorkerFactory: Could not instantiate de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker
java.lang.IllegalAccessException: Class java.lang.Class<androidx.work.WorkerFactory> cannot access method void de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker.<init>(android.content.Context, androidx.work.WorkerParameters) of class java.lang.Class<de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker>
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:92)
at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:191)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:125)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
2018-12-31 01:40:32.701 2947-2977/de.aurora.mggvertretungsplan.debug E/WM-WorkerWrapper: Could not create Worker de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker
My code can be found athttps://github.com/d-Rickyy-b/MGGVertretungsplan .
I'd be very grateful for any kind of support.
2018-12-31 01:40:32.701 2947-2977/de.aurora.mggvertretungsplan.debug E/WM-WorkerFactory: Could not instantiate de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker
java.lang.IllegalAccessException: Class java.lang.Class<androidx.work.WorkerFactory> cannot access method void de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker.<init>(android.content.Context, androidx.work.WorkerParameters) of class java.lang.Class<de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker>
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:92)
at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:191)
at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:125)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
2018-12-31 01:40:32.701 2947-2977/de.aurora.mggvertretungsplan.debug E/WM-WorkerWrapper: Could not create Worker de.aurora.mggvertretungsplan.services.DownloadTimeTableWorker
My code can be found at
I'd be very grateful for any kind of support.
ri...@googlemail.com <ri...@googlemail.com> #28
Okay... I feel pretty stupid now - it seems that my constructor was package-private and for workmanager to work, it needed to be public. Maybe the exception could point to that issue?
ra...@google.com <ra...@google.com> #29
That is correct. Worker must have a public constructor unless you instantiate it via your own WorkerFactory.
Description
Version used: 1.0.0-alpha09
When using ProGuard, the Worker(Context context, WorkerParameters) constructor isn't kept, leading to Workers being unable to be created:
DefaultWorkerFactory: Could not instantiate com.google.android.apps.muzei.sync.ProviderChangedWorker
DefaultWorkerFactory: java.lang.NoSuchMethodException: <init> []
DefaultWorkerFactory: at java.lang.Class.getConstructor0(Class.java:2327)
DefaultWorkerFactory: at java.lang.Class.getDeclaredConstructor(Class.java:2166)
DefaultWorkerFactory: at androidx.work.DefaultWorkerFactory.createWorker(DefaultWorkerFactory.java:58)
DefaultWorkerFactory: at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:180)
DefaultWorkerFactory: at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:117)
DefaultWorkerFactory: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
DefaultWorkerFactory: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
DefaultWorkerFactory: at java.lang.Thread.run(Thread.java:764)
WorkerWrapper: Could for create Worker com.google.android.apps.muzei.sync.ProviderChangedWorker
I had to manually add the ProGuard rule:
-keepclassmembers class * extends androidx.work.Worker {
public <init>(android.content.Context,androidx.work.WorkerParameters);
}