Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

ProGuard fails when using WorkManager #166

Open
tbalcom opened this issue Apr 18, 2019 · 13 comments
Open

ProGuard fails when using WorkManager #166

tbalcom opened this issue Apr 18, 2019 · 13 comments

Comments

@tbalcom
Copy link

tbalcom commented Apr 18, 2019

Xamarin.Android Version (eg: 6.0):

9.2.0.5 (HEAD/292d27fa)

Operating System & Version (eg: Mac OSX 10.11):

Windows 10 1809 (OS build 17763.437)

Support Libraries Version (eg: 23.3.0):

28.0.0.1

Describe your Issue:

Adding Xamarin.Android.Arch.Work.Runtime NuGet package causes ProGuard to fail.

Steps to Reproduce (with link to sample solution if possible):

  1. Enable ProGuard
  2. Add Xamarin.Android.Arch.Work.Runtime NuGet package
  3. Compile

Sample solution

Include any relevant Exception Stack traces, build logs, adb logs:

Output from Visual Studio 2019:

1>C:\Users\Trevor.nuget\packages\xamarin.android.arch.work.runtime\1.0.0\build....\proguard\proguard.txt : warning XA4304: Proguard configuration file 'C:\Users\Trevor.nuget\packages\xamarin.android.arch.work.runtime\1.0.0\build....\proguard\proguard.txt' was not found.
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find superclass or interface android.arch.paging.PositionalDataSource
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced method 'int computeInitialLoadPosition(android.arch.paging.PositionalDataSource$LoadInitialParams,int)' in program class android.arch.persistence.room.paging.LimitOffsetDataSource
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced method 'int computeInitialLoadSize(android.arch.paging.PositionalDataSource$LoadInitialParams,int,int)' in program class android.arch.persistence.room.paging.LimitOffsetDataSource
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced method 'void invalidate()' in program class android.arch.persistence.room.paging.LimitOffsetDataSource
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadInitialCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeParams
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource$LoadRangeCallback
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource: can't find referenced class android.arch.paging.PositionalDataSource
1>PROGUARD : warning : android.arch.persistence.room.paging.LimitOffsetDataSource$1: can't find referenced method 'void invalidate()' in program class android.arch.persistence.room.paging.LimitOffsetDataSource
1>PROGUARD : warning : there were 27 unresolved references to classes or interfaces.
1>PROGUARD : warning : there were 4 unresolved references to program class members.
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2662,3): error MSB6006: "java.exe" exited with code 1.

@tbalcom tbalcom changed the title Xamarin.Android.Arch.Work.Runtime NuGet package breaks ProGuard ProGuard fails when using WorkManager Apr 30, 2019
@tranb3r
Copy link

tranb3r commented Sep 10, 2019

@Redth Any progress on this issue ?

@ndastur
Copy link

ndastur commented Sep 17, 2019

Adding these to your own proguard config seems to solve the problem

-dontwarn android.arch.util.paging.CountedDataSource
-dontwarn android.arch.persistence.room.paging.LimitOffsetDataSource

@Redth
Copy link
Member

Redth commented Sep 25, 2019

Yep, generally those errors just require adding proguard warnings. Thanks for posting that @ndastur !

@ndastur
Copy link

ndastur commented Sep 25, 2019

@Redth the only thing I'd say is that the NuGET package should have the relevant proguard config included with it or at least something in the readme.

@Redth
Copy link
Member

Redth commented Sep 25, 2019

We ship whatever proguard rules exist in the .aar so I’m not sure why these rules would be missed, but apparently it was.

@ndastur
Copy link

ndastur commented Sep 25, 2019

Thanks @Redth .. Yes, they do seem to be. I'm sure I've seen a build warning saying an expected proguard file is missing. Any idea about timeline on a fix?

@tranb3r
Copy link

tranb3r commented Sep 26, 2019

@Redth
I don't understand why this issue has been closed:

  • there is a warning, it should be fixed (warning XA4304: Proguard configuration file 'xxx.nuget\packages\xamarin.android.arch.work.runtime\1.0.0\build....\proguard\proguard.txt' was not found.
  • whatever missing rule should be added and shipped with the nuget

@Redth
Copy link
Member

Redth commented Sep 30, 2019

Thanks, I wasn't aware the file wasn't being properly included. Looking at this. I see why it's happening (it's only inside proguard/proguard.txt in the nupkg instead of in proguard/monoandroid90/proguard.txt which the .targets file expects). We'll get this fixed and release an update.

@Redth Redth reopened this Sep 30, 2019
@ndastur
Copy link

ndastur commented Sep 30, 2019

Brilliant. Thank you.

@tranb3r
Copy link

tranb3r commented Oct 1, 2019

Thanks, I wasn't aware the file wasn't being properly included. Looking at this. I see why it's happening (it's only inside proguard/proguard.txt in the nupkg instead of in proguard/monoandroid90/proguard.txt which the .targets file expects). We'll get this fixed and release an update.

Are you kidding me ? This ticket was opened several months ago and the warning is the first line of the stack trace, how could you not be aware of that ??

Let me remind you that there are other issues concerning this package and waiting to be fixed: #204 #168

@Redth
Copy link
Member

Redth commented Oct 3, 2019

This should be fixed in this package update: https://www.nuget.org/packages/Xamarin.Android.Arch.Work.Runtime/1.0.0.3

Please let us know if this resolves the problem.

@Redth Redth added the needs-info More information is requested by engineering label Oct 3, 2019
@thudugala
Copy link

issue is fixed

@tranb3r
Copy link

tranb3r commented Oct 7, 2019

No more warnings but I still need to add some rules to my proguard.cfg in order for it to work.

@Redth Redth removed the needs-info More information is requested by engineering label Feb 10, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants