Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added --classpath_entry for Desugar #2158

Merged
merged 7 commits into from
Sep 21, 2018
Merged

Added --classpath_entry for Desugar #2158

merged 7 commits into from
Sep 21, 2018

Conversation

erikpowa
Copy link
Contributor

@erikpowa erikpowa commented Sep 7, 2018

Fixes: #2143
Context: #1639

Xamarin.Android's current implementation of desugar runs a command
such as:

java -jar desugar_deploy.jar 
    --bootclasspath_entry ~\android-toolchain\sdk\platforms\android-28\android.jar 
    --min_sdk_version 11 
    --classpath_entry xamarin-android\bin\Debug\lib\xamarin.android\xbuild-frameworks\MonoAndroid\v9.0\mono.android.jar 
    --input Lambda.jar 
    --output obj\Debug\android\bin\desugared\14-57-25-90-94-EE-16-09-B8-68-88-BC-9D-FC-6C-89Lambda.jar

However, certain jars are failing with messages such as:

Exception in thread "main" java.lang.TypeNotPresentException: Type okhttp3.Interceptor not present

Or another example:

Error: java.lang.TypeNotPresentException : Type io.reactivex.functions.Action not present

The first fix here is to add the --classpath_entry flag for every
--input, for some reason Desugar is not treating --input jars as
classpath entries?

Next, we expanded on the BuildTest.Desugar test using a complicated
set of Java libraries from Maven central:

proj.OtherBuildItems.Add (new BuildItem ("AndroidJavaLibrary", "okio-1.13.0.jar") {
    WebContent = "http://central.maven.org/maven2/com/squareup/okio/okio/1.13.0/okio-1.13.0.jar"
});
proj.OtherBuildItems.Add (new BuildItem ("AndroidJavaLibrary", "okhttp-3.8.0.jar") {
    WebContent = "http://central.maven.org/maven2/com/squareup/okhttp3/okhttp/3.8.0/okhttp-3.8.0.jar"
});
proj.OtherBuildItems.Add (new BuildItem ("AndroidJavaLibrary", "retrofit-2.3.0.jar") {
    WebContent = "http://central.maven.org/maven2/com/squareup/retrofit2/retrofit/2.3.0/retrofit-2.3.0.jar"
});
proj.OtherBuildItems.Add (new BuildItem ("AndroidJavaLibrary", "converter-gson-2.3.0.jar") {
    WebContent = "http://central.maven.org/maven2/com/squareup/retrofit2/converter-gson/2.3.0/converter-gson-2.3.0.jar"
});
proj.OtherBuildItems.Add (new BuildItem ("AndroidJavaLibrary", "gson-2.7.jar") {
    WebContent = "http://central.maven.org/maven2/com/google/code/gson/gson/2.7/gson-2.7.jar"
});
proj.OtherBuildItems.Add (new BuildItem ("AndroidAarLibrary", "twitter-core-3.3.0.aar") {
    WebContent = "http://repo.spring.io/libs-release/com/twitter/sdk/android/twitter-core/3.3.0/twitter-core-3.3.0.aar",
});

This was working, as long as you had android:minSdkVersion="24" in
your AndroidManifest.xml. This wasn't ideal if you wanted to run
your app on older API levels...

Luckily, another command line switched solved this problem:

//Added to the Desugar MSBuild task
if (minApiVersion < 24) {
    cmd.AppendSwitch("--desugar_try_with_resources_omit_runtime_classes ");
}

What a crazy name for a flag! Documented by desugar as:

--[no]desugar_try_with_resources_omit_runtime_classes (a boolean; default: "false")
    Omits the runtime classes necessary to support try-with-resources from the
    output. This property has effect only if --
    desugar_try_with_resources_if_needed is used.
--min_sdk_version (an integer; default: "1")
    Minimum targeted sdk version.  If >= 24, enables default methods in
    interfaces.

This makes sense that something would happen at API level 24...

Once doing this, the Desugar test passes without modifying
minSdkVersion.

The expanded Desugar test will also greatly help with our D8/R8
implementation
(#2040).

This complex set of Java dependencies from Maven will be useful.

@jonathanpeppers
Copy link
Member

build

Copy link
Member

@jonathanpeppers jonathanpeppers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @erikpowa,

Could you share what you have setup in your projects?

Since this test is passing for me: master...jonathanpeppers:desugar-classpath-entry

And then I looked at your example:

#desugar_bad_way.bat
set JAVAEXE="C:\Program Files\Java\jdk1.8.0_181\\bin\java.exe"
set ANDROIDJAR="C:\Java\Android\android-sdk\platforms\android-28\android.jar"
%JAVAEXE% ^
-jar "desugar_deploy.jar" ^
--bootclasspath_entry %ANDROIDJAR% ^
--min_sdk_version 27 ^
--input "com.twitter.sdk.android_twitter-core.jar" ^
--output "desugar.jar"
pause

Versus:

#desugar_good_way.bat
set JAVAEXE="C:\Program Files\Java\jdk1.8.0_181\\bin\java.exe"
set ANDROIDJAR="C:\Java\Android\android-sdk\platforms\android-28\android.jar"
%JAVAEXE% ^
-jar "desugar_deploy.jar" ^
--classpath_entry com.squareup.retrofit2_converter-gson.jar ^
--classpath_entry com.squareup.retrofit2_retrofit.jar ^
--classpath_entry com.squareup.okhttp3_okhttp.jar ^
--bootclasspath_entry %ANDROIDJAR% ^
--min_sdk_version 27 ^
--input "com.twitter.sdk.android_twitter-core.jar" ^
--output "desugar.jar"
pause

How is your project setup, where it doesn't have all of these jar files passed in as --input?

I'd like to understand that before merging this.

@erikpowa
Copy link
Contributor Author

erikpowa commented Sep 10, 2018

@jonathanpeppers There was no problem with --input. The problem was that the desugar failed in many cases without --classpath_entry (because of the dependencies). (I have every reference correctly with binding library, because I have my homemade "xa-gradle"). Or you think that I want XA automatically resolve references :D? I have each individual xamarin binding library for a project where I use (like in the repro):

  • com.squareup.retrofit2_converter-gson
  • com.squareup.retrofit2_retrofit
  • com.squareup.okhttp3_okhttp
  • com.twitter.sdk.android_twitter-core
  • ...

look at package.config, everything is resolved when it comes to references and I have these as --input correctly (I remember I checked the output log if something was missing from the arguments when the Desugar task was called)
packages.config.zip

Now I'm confused. Is --input should act like --classpath_entry? Is #desugar_bad_way.bat failing for you too, right?

Btw If someone doesn't have correct references for a binding library, then the desugar will fail anyway with or without --classpath_entry, but if it's available, it would be great to have as --classpath_entry I guess

@jonathanpeppers
Copy link
Member

@erikpowa my question is:

What build action do you have in your project for these jar files? How are your projects setup?

Why aren't your jar files added to the list of java libraries in our build? https://github.com/xamarin/xamarin-android/blob/743e69a52742a8b61b6bdaacc14e83a070c391e0/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets#L2464-L2483

I think this might actually be the core problem we need to fix here.

Do you have a binding project for each of these jars? Each one with a build action of EmbeddedJar?

  • com.squareup.retrofit2_converter-gson
  • com.squareup.retrofit2_retrofit
  • com.squareup.okhttp3_okhttp
  • com.twitter.sdk.android_twitter-core

Then a main Xamarin.Android app project that references them all?

@erikpowa
Copy link
Contributor Author

erikpowa commented Sep 11, 2018

@jonathanpeppers ohh sorry, misunderstood.

How are your projects setup?

EmbeddedJar for jars, LibraryProjectZip for aars. (and the dependencies are added as binding project, transitively) for eg in my twitter-core.csproj looks like this:

:octocat: twitter-core.csproj

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Repository>JCenter</Repository>
    <Configuration>Release</Configuration>
    <Platform>AnyCPU</Platform>
    <DropdeadProject>true</DropdeadProject>
    <ProjectGuid>{A170D40E-D13E-4DC4-BA69-6A49FCD3BB86}</ProjectGuid>
    <RootNamespace>com.twitter.sdk.android</RootNamespace>
    <AssemblyName>com.twitter.sdk.android_twitter-core</AssemblyName>
    <GroupId>com.twitter.sdk.android</GroupId>
    <ArtifactId>twitter-core</ArtifactId>
    <Version>3.3.0</Version>
    <Extension>aar</Extension>
    <Root>..\..\..\..</Root>
  </PropertyGroup>
  <ItemGroup Label="ProjectReferences">
    <ProjectReference Include="$(Root)\libs\com.google.code.gson\gson\2.8.2\com.google.code.gson_gson.csproj">
      <Project>{002309E1-0FC5-4202-9B98-D75807D96DAB}</Project>
      <Name>com.google.code.gson_gson</Name>
      <ArtifactId>gson</ArtifactId>
      <GroupId>com.google.code.gson</GroupId>
      <Version>2.8.2</Version>
      <Private>False</Private>
    </ProjectReference>
    <ProjectReference Include="$(Root)\libs\com.squareup.okhttp3\okhttp\3.10.0\com.squareup.okhttp3_okhttp.csproj">
      <Project>{FFA3D998-AC6C-442E-8F1D-8E0FACC0CBE5}</Project>
      <Name>com.squareup.okhttp3_okhttp</Name>
      <ArtifactId>okhttp</ArtifactId>
      <GroupId>com.squareup.okhttp3</GroupId>
      <Version>3.10.0</Version>
      <Private>False</Private>
    </ProjectReference>
    <ProjectReference Include="$(Root)\libs\com.squareup.okio\okio\2.0.0\com.squareup.okio_okio.csproj">
      <Project>{4B45E624-6E8B-4269-9B65-9699D4EC08B2}</Project>
      <Name>com.squareup.okio_okio</Name>
      <ArtifactId>okio</ArtifactId>
      <GroupId>com.squareup.okio</GroupId>
      <Version>2.0.0</Version>
      <Private>False</Private>
    </ProjectReference>
    <ProjectReference Include="$(Root)\libs\com.squareup.retrofit2\converter-gson\2.4.0\com.squareup.retrofit2_converter-gson.csproj">
      <Project>{1C9751F4-4E3C-46B8-ACDC-9B17D8BA6578}</Project>
      <Name>com.squareup.retrofit2_converter-gson</Name>
      <ArtifactId>converter-gson</ArtifactId>
      <GroupId>com.squareup.retrofit2</GroupId>
      <Version>2.4.0</Version>
      <Private>False</Private>
    </ProjectReference>
    <ProjectReference Include="$(Root)\libs\com.squareup.retrofit2\retrofit\2.4.0\com.squareup.retrofit2_retrofit.csproj">
      <Project>{6C476F43-1921-45EF-AD5A-E5E2BE72822E}</Project>
      <Name>com.squareup.retrofit2_retrofit</Name>
      <ArtifactId>retrofit</ArtifactId>
      <GroupId>com.squareup.retrofit2</GroupId>
      <Version>2.4.0</Version>
      <Private>False</Private>
    </ProjectReference>
    <ProjectReference Include="$(Root)\libs\org.jetbrains.kotlin\kotlin-stdlib-common\1.2.60\org.jetbrains.kotlin_kotlin-stdlib-common.csproj">
      <Project>{062D6A36-FBFE-4A2C-BA05-77584FECB098}</Project>
      <Name>org.jetbrains.kotlin_kotlin-stdlib-common</Name>
      <ArtifactId>kotlin-stdlib-common</ArtifactId>
      <GroupId>org.jetbrains.kotlin</GroupId>
      <Version>1.2.60</Version>
      <Private>False</Private>
    </ProjectReference>
    <ProjectReference Include="$(Root)\libs\org.jetbrains.kotlin\kotlin-stdlib\1.2.60\org.jetbrains.kotlin_kotlin-stdlib.csproj">
      <Project>{71BC9F7E-3E8C-447A-9E3E-946F723E3487}</Project>
      <Name>org.jetbrains.kotlin_kotlin-stdlib</Name>
      <ArtifactId>kotlin-stdlib</ArtifactId>
      <GroupId>org.jetbrains.kotlin</GroupId>
      <Version>1.2.60</Version>
      <Private>False</Private>
    </ProjectReference>
    <ProjectReference Include="$(Root)\libs\org.jetbrains\annotations\16.0.2\org.jetbrains_annotations.csproj">
      <Project>{9074DFDF-F5F9-4554-822C-54861FC003ED}</Project>
      <Name>org.jetbrains_annotations</Name>
      <ArtifactId>annotations</ArtifactId>
      <GroupId>org.jetbrains</GroupId>
      <Version>16.0.2</Version>
      <Private>False</Private>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(Root)\Dropdead.Bindings.props" />
</Project>

I do it this way, because It's safe way, no build error and everything is resolved in app project.

Why aren't your jar files added to the list of java libraries in our build?

You mean in a xa app project? It does. What did I say, maybe I poorly phrased something.

I think this might actually be the core problem we need to fix here.

In my side, build works, runtime works (atleast no problem since the missing --classpath_entry passed along the --input).

Then a main Xamarin.Android app project that references them all?

Yes, I'm generating nuget so either way, packagereference and package.config, both working for me. The reason I showed package.config it's that you can see that the XA app get's all the references for 100%, the other reason is unrelated (nested MSBuildSdkExtras projects + packagereferences in a XA app is buggy, but it's 100% unrelated)

@jonathanpeppers
Copy link
Member

@erikpowa could you attach a build log of your solution?

You could use this extension, which can save a *.binlog file of the build.

Or if you want to do it command line:

msbuild YourSolution.sln /bl

Will put a msbuild.binlog in the current directory.

@erikpowa
Copy link
Contributor Author

@jonathanpeppers Here I'm using patched/modified 9.1.0.19 (so I have --classpath_entry)
log_9.1.0.19_head.e59a284.zip
Do you want one with specific sdk version or without the patch / --classpath_entry?

@jonathanpeppers
Copy link
Member

Ok things look right to me:

Desugar
    Assembly = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.Build.Tasks.dll
    CommandLineArguments = C:\Program Files\Java\jdk1.8.0_181\\bin\java.exe -Xmx2G -jar "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\desugar_deploy.jar" --bootclasspath_entry C:\Java\Android\android-sdk\platforms\android-28\android.jar --min_sdk_version 25 --classpath_entry "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\mono.android.jar" --input "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\mono.android.jar" --output obj\Debug\90\android\bin\desugared\77-27-73-15-84-A7-5E-4C-F2-FB-05-7B-53-DF-F4-02mono.android.jar --classpath_entry "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\android-support-multidex.jar" --input "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\android-support-multidex.jar" --output obj\Debug\90\android\bin\desugared\2F-53-0B-D0-E6-E5-2A-6B-5A-6B-75-57-54-21-CF-8Fandroid-support-multidex.jar --classpath_entry obj\Debug\90\lp\0\jl\android.arch.core_common.jar --input obj\Debug\90\lp\0\jl\android.arch.core_common.jar --output obj\Debug\90\android\bin\desugared\85-69-DF-64-14-58-EF-06-CD-AD-A3-B1-25-F0-2A-ECandroid.arch.core_common.jar --classpath_entry obj\Debug\90\lp\1\jl\bin\classes.jar --input obj\Debug\90\lp\1\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\72-9C-40-20-1F-CD-B3-4A-00-B7-D5-13-DA-61-0F-A5classes.jar --classpath_entry obj\Debug\90\lp\10\jl\bin\classes.jar --input obj\Debug\90\lp\10\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\A8-1A-B3-0A-C3-68-FB-84-EB-E7-96-3F-EB-37-69-A5classes.jar --classpath_entry obj\Debug\90\lp\100\jl\bin\classes.jar --input obj\Debug\90\lp\100\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\BA-13-FA-EC-6E-A4-AC-D6-A6-B7-BB-08-14-B3-86-0Fclasses.jar --classpath_entry obj\Debug\90\lp\102\jl\org.checkerframework_checker-compat-qual.jar --input obj\Debug\90\lp\102\jl\org.checkerframework_checker-compat-qual.jar --output obj\Debug\90\android\bin\desugared\48-70-47-73-DD-EC-39-0F-D3-D9-9F-FF-C3-D3-68-93org.checkerframework_checker-compat-qual.jar --classpath_entry obj\Debug\90\lp\103\jl\org.jetbrains.kotlin_kotlin-stdlib-common.jar --input obj\Debug\90\lp\103\jl\org.jetbrains.kotlin_kotlin-stdlib-common.jar --output obj\Debug\90\android\bin\desugared\58-22-66-F7-82-5D-4A-60-15-C4-35-D5-EC-93-35-41org.jetbrains.kotlin_kotlin-stdlib-common.jar --classpath_entry obj\Debug\90\lp\104\jl\org.jetbrains.kotlin_kotlin-stdlib.jar --input obj\Debug\90\lp\104\jl\org.jetbrains.kotlin_kotlin-stdlib.jar --output obj\Debug\90\android\bin\desugared\34-E9-3B-B8-44-42-80-2D-85-6A-7B-A2-E4-CD-E8-B7org.jetbrains.kotlin_kotlin-stdlib.jar --classpath_entry obj\Debug\90\lp\105\jl\org.jetbrains.trove4j_trove4j.jar --input obj\Debug\90\lp\105\jl\org.jetbrains.trove4j_trove4j.jar --output obj\Debug\90\android\bin\desugared\64-78-83-58-18-21-04-A2-2A-4F-B5-B1-78-C4-03-B4org.jetbrains.trove4j_trove4j.jar --classpath_entry obj\Debug\90\lp\106\jl\org.jetbrains_annotations.jar --input obj\Debug\90\lp\106\jl\org.jetbrains_annotations.jar --output obj\Debug\90\android\bin\desugared\ED-43-1B-B9-18-33-24-D8-14-E9-02-E0-9F-6A-32-7Forg.jetbrains_annotations.jar --classpath_entry obj\Debug\90\lp\11\jl\bin\classes.jar --input obj\Debug\90\lp\11\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\A8-29-C0-74-AD-3C-F8-36-AF-AE-6C-77-D1-D7-9B-8Eclasses.jar --classpath_entry obj\Debug\90\lp\117\jl\bin\classes.jar --input obj\Debug\90\lp\117\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\99-1F-00-66-48-FC-7F-98-19-3C-9A-2B-2A-E0-D0-D0classes.jar --classpath_entry obj\Debug\90\lp\118\jl\bin\classes.jar --input obj\Debug\90\lp\118\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\C7-29-DA-5F-72-13-78-84-B0-4D-9A-BF-3A-30-9F-6Eclasses.jar --classpath_entry obj\Debug\90\lp\12\jl\bin\classes.jar --input obj\Debug\90\lp\12\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\C5-DC-52-D7-75-31-19-80-8C-29-95-D0-67-79-BA-90classes.jar --classpath_entry obj\Debug\90\lp\13\jl\bin\classes.jar --input obj\Debug\90\lp\13\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\7F-A1-3F-6C-DC-16-8F-7F-03-31-21-AE-AC-5E-92-45classes.jar --classpath_entry obj\Debug\90\lp\14\jl\bin\classes.jar --input obj\Debug\90\lp\14\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\A6-1B-B6-D1-41-7C-D8-32-5F-E5-02-3C-02-3E-9B-FDclasses.jar --classpath_entry obj\Debug\90\lp\15\jl\bin\classes.jar --input obj\Debug\90\lp\15\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\3D-53-97-0E-CE-A5-F6-A0-D7-26-54-00-91-8A-D0-2Bclasses.jar --classpath_entry obj\Debug\90\lp\16\jl\com.android.support_support-annotations.jar --input obj\Debug\90\lp\16\jl\com.android.support_support-annotations.jar --output obj\Debug\90\android\bin\desugared\45-7C-74-9B-EB-A6-AD-C6-47-C9-CE-33-FE-5E-8F-88com.android.support_support-annotations.jar --classpath_entry obj\Debug\90\lp\17\jl\bin\classes.jar --input obj\Debug\90\lp\17\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\08-DE-3B-BA-9E-C3-69-94-C0-E5-CC-0D-E9-AE-30-D6classes.jar --classpath_entry obj\Debug\90\lp\18\jl\bin\classes.jar --input obj\Debug\90\lp\18\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\36-D4-80-A8-A1-58-FC-60-09-49-54-02-AC-E5-AD-C7classes.jar --classpath_entry obj\Debug\90\lp\19\jl\bin\classes.jar --input obj\Debug\90\lp\19\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\D8-11-DA-F6-CC-A6-83-10-06-F6-87-BC-51-98-73-BEclasses.jar --classpath_entry obj\Debug\90\lp\2\jl\android.arch.lifecycle_common.jar --input obj\Debug\90\lp\2\jl\android.arch.lifecycle_common.jar --output obj\Debug\90\android\bin\desugared\14-57-6A-20-50-59-0A-BF-7C-7D-57-A4-11-88-07-9Bandroid.arch.lifecycle_common.jar --classpath_entry obj\Debug\90\lp\20\jl\bin\classes.jar --input obj\Debug\90\lp\20\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\1E-F8-62-69-2D-C6-29-46-17-CE-C0-04-41-63-86-B0classes.jar --classpath_entry obj\Debug\90\lp\21\jl\bin\classes.jar --input obj\Debug\90\lp\21\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\2E-B2-27-47-AA-55-90-24-00-0E-A2-1A-9F-8B-84-52classes.jar --classpath_entry obj\Debug\90\lp\22\jl\bin\classes.jar --input obj\Debug\90\lp\22\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\DA-56-9F-B5-65-14-C0-78-72-0A-07-89-11-80-B2-4Eclasses.jar --classpath_entry obj\Debug\90\lp\23\jl\bin\classes.jar --input obj\Debug\90\lp\23\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\6A-C6-9F-54-D4-80-53-00-F5-0A-06-4A-AD-47-E0-79classes.jar --classpath_entry obj\Debug\90\lp\24\jl\bin\classes.jar --input obj\Debug\90\lp\24\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\18-D2-3B-9A-EB-56-1F-91-25-63-5F-15-D7-54-BF-FDclasses.jar --classpath_entry obj\Debug\90\lp\25\jl\bin\classes.jar --input obj\Debug\90\lp\25\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\75-D0-21-D7-3E-3A-07-67-2C-9F-56-FE-34-49-D8-86classes.jar --classpath_entry obj\Debug\90\lp\26\jl\bin\classes.jar --input obj\Debug\90\lp\26\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\B2-4F-6B-02-1E-E6-39-D0-22-0C-66-9D-C8-59-90-31classes.jar --classpath_entry obj\Debug\90\lp\27\jl\bin\classes.jar --input obj\Debug\90\lp\27\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\E2-E9-50-E5-64-93-D2-80-BC-B0-4D-B8-CA-92-1A-A7classes.jar --classpath_entry obj\Debug\90\lp\28\jl\bin\classes.jar --input obj\Debug\90\lp\28\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\56-98-CC-8E-58-4D-64-07-A3-3E-35-FD-CE-D5-D8-E3classes.jar --classpath_entry obj\Debug\90\lp\29\jl\bin\classes.jar --input obj\Debug\90\lp\29\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\36-C9-F5-F9-F2-D7-0E-A2-1B-5C-F4-D6-91-70-7A-6Cclasses.jar --classpath_entry obj\Debug\90\lp\3\jl\bin\classes.jar --input obj\Debug\90\lp\3\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\78-6C-72-75-39-61-6C-03-89-94-A8-1F-E2-88-BC-BFclasses.jar --classpath_entry obj\Debug\90\lp\30\jl\bin\classes.jar --input obj\Debug\90\lp\30\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\10-5F-EE-33-20-9D-B2-A3-4B-21-CC-83-6F-74-43-0Aclasses.jar --classpath_entry obj\Debug\90\lp\31\jl\com.github.bumptech.glide_annotations.jar --input obj\Debug\90\lp\31\jl\com.github.bumptech.glide_annotations.jar --output obj\Debug\90\android\bin\desugared\A4-C1-04-75-3F-B8-D6-E1-46-52-CF-02-B6-8C-51-2Fcom.github.bumptech.glide_annotations.jar --classpath_entry obj\Debug\90\lp\32\jl\com.github.bumptech.glide_disklrucache.jar --input obj\Debug\90\lp\32\jl\com.github.bumptech.glide_disklrucache.jar --output obj\Debug\90\android\bin\desugared\AB-38-32-38-9B-37-65-BC-05-8C-44-FF-B2-C7-AA-41com.github.bumptech.glide_disklrucache.jar --classpath_entry obj\Debug\90\lp\33\jl\bin\classes.jar --input obj\Debug\90\lp\33\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\78-2D-5F-E3-64-32-33-D9-46-70-AE-CD-4F-83-BF-2Fclasses.jar --classpath_entry obj\Debug\90\lp\34\jl\bin\classes.jar --input obj\Debug\90\lp\34\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\8A-0B-37-99-19-EF-10-77-41-B7-E0-DE-AD-14-0B-3Bclasses.jar --classpath_entry obj\Debug\90\lp\35\jl\bin\classes.jar --input obj\Debug\90\lp\35\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\56-AC-96-E3-D3-37-DE-1B-0B-14-74-19-C1-CD-DD-70classes.jar --classpath_entry obj\Debug\90\lp\36\jl\bin\classes.jar --input obj\Debug\90\lp\36\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\AE-CB-30-E9-93-89-B5-6D-D5-A7-7D-9E-F3-EA-1D-C4classes.jar --classpath_entry obj\Debug\90\lp\37\jl\bin\classes.jar --input obj\Debug\90\lp\37\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\B0-9B-40-39-07-25-85-D6-CA-92-50-2A-D7-D9-60-BCclasses.jar --classpath_entry obj\Debug\90\lp\38\jl\bin\classes.jar --input obj\Debug\90\lp\38\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\6F-2C-F9-1E-48-2B-77-5F-DA-3F-97-83-25-30-BC-54classes.jar --classpath_entry obj\Debug\90\lp\39\jl\bin\classes.jar --input obj\Debug\90\lp\39\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\7B-D4-E5-18-6F-0F-03-F4-E4-7F-D5-4E-BA-B1-E2-34classes.jar --classpath_entry obj\Debug\90\lp\4\jl\bin\classes.jar --input obj\Debug\90\lp\4\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\82-C3-15-F1-45-7D-67-84-7A-EC-C3-1C-E1-40-AD-15classes.jar --classpath_entry obj\Debug\90\lp\40\jl\bin\classes.jar --input obj\Debug\90\lp\40\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\18-7F-D2-37-31-6A-88-F5-B3-B5-63-55-07-49-3C-5Cclasses.jar --classpath_entry obj\Debug\90\lp\41\jl\bin\classes.jar --input obj\Debug\90\lp\41\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\42-46-03-1F-E5-F3-E7-7B-91-81-22-59-3E-E8-93-6Dclasses.jar --classpath_entry obj\Debug\90\lp\42\jl\com.google.code.findbugs_jsr305.jar --input obj\Debug\90\lp\42\jl\com.google.code.findbugs_jsr305.jar --output obj\Debug\90\android\bin\desugared\F5-9C-91-A4-32-E2-B1-70-E2-DF-24-EF-4F-E1-4C-82com.google.code.findbugs_jsr305.jar --classpath_entry obj\Debug\90\lp\43\jl\com.google.code.gson_gson.jar --input obj\Debug\90\lp\43\jl\com.google.code.gson_gson.jar --output obj\Debug\90\android\bin\desugared\44-3F-B8-10-CE-FE-D3-90-BE-54-AD-46-9C-BF-F6-D7com.google.code.gson_gson.jar --classpath_entry obj\Debug\90\lp\44\jl\com.google.errorprone_error_prone_annotations.jar --input obj\Debug\90\lp\44\jl\com.google.errorprone_error_prone_annotations.jar --output obj\Debug\90\android\bin\desugared\6B-D7-2C-FB-26-F4-96-6F-6B-5F-B5-FC-8E-1D-2C-DEcom.google.errorprone_error_prone_annotations.jar --classpath_entry obj\Debug\90\lp\45\jl\bin\classes.jar --input obj\Debug\90\lp\45\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\7B-96-D8-EC-68-80-C0-0B-E3-EF-D3-DC-CB-C8-C5-3Dclasses.jar --classpath_entry obj\Debug\90\lp\46\jl\bin\classes.jar --input obj\Debug\90\lp\46\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\69-37-5D-DF-73-CE-89-AD-8D-E2-94-A4-23-73-E3-1Dclasses.jar --classpath_entry obj\Debug\90\lp\47\jl\bin\classes.jar --input obj\Debug\90\lp\47\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\70-AF-E2-B2-69-C3-33-32-78-30-92-3C-91-99-52-3Cclasses.jar --classpath_entry obj\Debug\90\lp\48\jl\bin\classes.jar --input obj\Debug\90\lp\48\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\D5-32-2A-9A-8D-69-96-A1-17-1C-92-78-45-97-77-76classes.jar --classpath_entry obj\Debug\90\lp\49\jl\bin\classes.jar --input obj\Debug\90\lp\49\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\39-08-36-06-7B-27-83-FF-F6-D6-61-4E-B2-0F-7A-39classes.jar --classpath_entry obj\Debug\90\lp\5\jl\bin\classes.jar --input obj\Debug\90\lp\5\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\B8-B2-C8-C2-31-2B-D2-26-03-27-67-0B-33-FD-76-C5classes.jar --classpath_entry obj\Debug\90\lp\50\jl\bin\classes.jar --input obj\Debug\90\lp\50\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\FC-D1-83-9A-85-04-97-43-87-4F-29-2F-6F-1B-35-3Bclasses.jar --classpath_entry obj\Debug\90\lp\51\jl\bin\classes.jar --input obj\Debug\90\lp\51\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\8A-91-6E-FB-1E-C3-69-2D-C9-A9-0D-07-7B-13-0D-90classes.jar --classpath_entry obj\Debug\90\lp\52\jl\bin\classes.jar --input obj\Debug\90\lp\52\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\F9-94-74-82-65-59-22-7B-DB-71-59-FF-90-1B-18-82classes.jar --classpath_entry obj\Debug\90\lp\53\jl\bin\classes.jar --input obj\Debug\90\lp\53\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\B9-E8-63-86-9D-32-50-D0-DB-B9-BF-C3-A6-F3-4E-17classes.jar --classpath_entry obj\Debug\90\lp\54\jl\bin\classes.jar --input obj\Debug\90\lp\54\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\0D-C8-3E-CE-3A-7F-C0-AD-53-62-E8-1A-13-8D-2A-19classes.jar --classpath_entry obj\Debug\90\lp\55\jl\com.google.guava_guava.jar --input obj\Debug\90\lp\55\jl\com.google.guava_guava.jar --output obj\Debug\90\android\bin\desugared\FE-16-DF-78-77-5A-62-97-5F-01-9A-EC-B5-9D-3C-14com.google.guava_guava.jar --classpath_entry obj\Debug\90\lp\56\jl\com.google.instrumentation_instrumentation-api.jar --input obj\Debug\90\lp\56\jl\com.google.instrumentation_instrumentation-api.jar --output obj\Debug\90\android\bin\desugared\6B-1E-55-D0-5D-3D-A8-98-12-78-7B-0F-70-41-1E-6Ecom.google.instrumentation_instrumentation-api.jar --classpath_entry obj\Debug\90\lp\57\jl\com.google.j2objc_j2objc-annotations.jar --input obj\Debug\90\lp\57\jl\com.google.j2objc_j2objc-annotations.jar --output obj\Debug\90\android\bin\desugared\8E-0D-8B-5C-E8-E5-9C-A2-FE-80-3B-DD-64-1D-E3-CDcom.google.j2objc_j2objc-annotations.jar --classpath_entry obj\Debug\90\lp\58\jl\com.google.protobuf_protobuf-lite.jar --input obj\Debug\90\lp\58\jl\com.google.protobuf_protobuf-lite.jar --output obj\Debug\90\android\bin\desugared\A5-80-3E-36-6C-7E-F9-A8-D6-5E-B5-5E-E8-98-32-C4com.google.protobuf_protobuf-lite.jar --classpath_entry obj\Debug\90\lp\59\jl\com.squareup.haha_haha.jar --input obj\Debug\90\lp\59\jl\com.squareup.haha_haha.jar --output obj\Debug\90\android\bin\desugared\6B-56-57-E5-F3-4B-47-74-6A-18-7E-66-BD-6D-58-F0com.squareup.haha_haha.jar --classpath_entry obj\Debug\90\lp\6\jl\bin\classes.jar --input obj\Debug\90\lp\6\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\97-0B-1C-32-F7-84-11-94-F7-FD-F0-DD-34-86-0C-ABclasses.jar --classpath_entry obj\Debug\90\lp\60\jl\bin\classes.jar --input obj\Debug\90\lp\60\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\0B-C3-E1-01-14-14-B4-82-61-60-C7-5C-1B-99-DE-12classes.jar --classpath_entry obj\Debug\90\lp\61\jl\bin\classes.jar --input obj\Debug\90\lp\61\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\4B-6B-E5-BD-62-EA-8F-42-BF-A1-40-82-37-78-76-5Eclasses.jar --classpath_entry obj\Debug\90\lp\62\jl\com.squareup.leakcanary_leakcanary-watcher.jar --input obj\Debug\90\lp\62\jl\com.squareup.leakcanary_leakcanary-watcher.jar --output obj\Debug\90\android\bin\desugared\E8-2D-31-CF-79-80-09-88-B9-25-38-BC-1A-2A-8B-B6com.squareup.leakcanary_leakcanary-watcher.jar --classpath_entry obj\Debug\90\lp\63\jl\com.squareup.okhttp3_okhttp.jar --input obj\Debug\90\lp\63\jl\com.squareup.okhttp3_okhttp.jar --output obj\Debug\90\android\bin\desugared\46-E2-C4-A1-A1-C8-D3-3C-85-B6-B0-28-5B-5E-F1-1Dcom.squareup.okhttp3_okhttp.jar --classpath_entry obj\Debug\90\lp\64\jl\com.squareup.okhttp_okhttp.jar --input obj\Debug\90\lp\64\jl\com.squareup.okhttp_okhttp.jar --output obj\Debug\90\android\bin\desugared\4E-98-9F-0D-41-D8-B6-B0-4A-9A-7D-69-D6-B8-C1-41com.squareup.okhttp_okhttp.jar --classpath_entry obj\Debug\90\lp\65\jl\com.squareup.okio_okio.jar --input obj\Debug\90\lp\65\jl\com.squareup.okio_okio.jar --output obj\Debug\90\android\bin\desugared\65-50-29-62-69-31-2E-B0-E3-C3-2F-A1-AE-9B-48-62com.squareup.okio_okio.jar --classpath_entry obj\Debug\90\lp\66\jl\com.squareup.retrofit2_converter-gson.jar --input obj\Debug\90\lp\66\jl\com.squareup.retrofit2_converter-gson.jar --output obj\Debug\90\android\bin\desugared\96-32-3C-83-9E-C7-D6-4B-92-22-29-0E-CE-D1-93-8Ccom.squareup.retrofit2_converter-gson.jar --classpath_entry obj\Debug\90\lp\67\jl\com.squareup.retrofit2_retrofit.jar --input obj\Debug\90\lp\67\jl\com.squareup.retrofit2_retrofit.jar --output obj\Debug\90\android\bin\desugared\EF-22-99-3F-3B-FA-7D-EF-8C-85-B3-A5-F9-A3-13-6Bcom.squareup.retrofit2_retrofit.jar --classpath_entry obj\Debug\90\lp\68\jl\bin\classes.jar --input obj\Debug\90\lp\68\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\95-EF-57-80-9A-29-56-82-60-2E-9A-EA-43-CB-32-FAclasses.jar --classpath_entry obj\Debug\90\lp\7\jl\bin\classes.jar --input obj\Debug\90\lp\7\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\FF-B0-53-34-62-B3-69-17-6D-8A-36-E7-66-3C-CE-0Cclasses.jar --classpath_entry obj\Debug\90\lp\8\jl\com.android.support.constraint_constraint-layout-solver.jar --input obj\Debug\90\lp\8\jl\com.android.support.constraint_constraint-layout-solver.jar --output obj\Debug\90\android\bin\desugared\A6-AB-7A-42-97-81-4A-0E-45-4A-31-7C-67-7D-0B-FDcom.android.support.constraint_constraint-layout-solver.jar --classpath_entry obj\Debug\90\lp\9\jl\bin\classes.jar --input obj\Debug\90\lp\9\jl\bin\classes.jar --output obj\Debug\90\android\bin\desugared\A1-A8-C3-41-6F-6B-36-FC-4E-06-78-59-25-8D-68-BBclasses.jar --classpath_entry obj\Debug\90\lp\93\jl\io.grpc_grpc-context.jar --input obj\Debug\90\lp\93\jl\io.grpc_grpc-context.jar --output obj\Debug\90\android\bin\desugared\EE-F3-03-3A-83-04-BF-15-EE-8B-35-C7-37-CA-C4-88io.grpc_grpc-context.jar --classpath_entry obj\Debug\90\lp\94\jl\io.grpc_grpc-core.jar --input obj\Debug\90\lp\94\jl\io.grpc_grpc-core.jar --output obj\Debug\90\android\bin\desugared\4D-53-53-F8-B7-32-E7-23-9C-55-33-AB-81-03-D1-9Fio.grpc_grpc-core.jar --classpath_entry obj\Debug\90\lp\95\jl\io.grpc_grpc-okhttp.jar --input obj\Debug\90\lp\95\jl\io.grpc_grpc-okhttp.jar --output obj\Debug\90\android\bin\desugared\9D-71-2F-60-CC-43-B2-1C-96-5B-93-48-CB-7D-E5-FBio.grpc_grpc-okhttp.jar --classpath_entry obj\Debug\90\lp\96\jl\io.grpc_grpc-protobuf-lite.jar --input obj\Debug\90\lp\96\jl\io.grpc_grpc-protobuf-lite.jar --output obj\Debug\90\android\bin\desugared\19-37-D1-E1-74-53-6F-90-DA-C1-CE-2C-28-12-F0-25io.grpc_grpc-protobuf-lite.jar --classpath_entry obj\Debug\90\lp\97\jl\io.grpc_grpc-stub.jar --input obj\Debug\90\lp\97\jl\io.grpc_grpc-stub.jar --output obj\Debug\90\android\bin\desugared\34-EB-F4-FD-8D-FA-8C-57-EA-3B-90-BD-06-35-DB-5Eio.grpc_grpc-stub.jar --classpath_entry obj\Debug\90\lp\98\jl\io.opencensus_opencensus-api.jar --input obj\Debug\90\lp\98\jl\io.opencensus_opencensus-api.jar --output obj\Debug\90\android\bin\desugared\AC-F0-C3-BD-D1-44-46-FC-EA-83-81-51-6C-B5-79-A2io.opencensus_opencensus-api.jar --classpath_entry obj\Debug\90\lp\99\jl\io.opencensus_opencensus-contrib-grpc-metrics.jar --input obj\Debug\90\lp\99\jl\io.opencensus_opencensus-contrib-grpc-metrics.jar --output obj\Debug\90\android\bin\desugared\BB-12-C4-0A-F4-F8-55-E4-B4-BB-EE-1A-5B-EB-C7-E2io.opencensus_opencensus-contrib-grpc-metrics.jar 
    Parameters
        JavaPlatformJarPath = C:\Java\Android\android-sdk\platforms\android-28\android.jar
        DesugarJarPath = C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\desugar_deploy.jar
        ToolPath = C:\Program Files\Java\jdk1.8.0_181\\bin
        JavaMaximumHeapSize = 2G
        InputJars
            C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v9.0\mono.android.jar
            C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\android-support-multidex.jar
            obj\Debug\90\lp\0\jl\android.arch.core_common.jar
            obj\Debug\90\lp\1\jl\bin\classes.jar
            obj\Debug\90\lp\10\jl\bin\classes.jar
            obj\Debug\90\lp\100\jl\bin\classes.jar
            obj\Debug\90\lp\102\jl\org.checkerframework_checker-compat-qual.jar
            obj\Debug\90\lp\103\jl\org.jetbrains.kotlin_kotlin-stdlib-common.jar
            obj\Debug\90\lp\104\jl\org.jetbrains.kotlin_kotlin-stdlib.jar
            obj\Debug\90\lp\105\jl\org.jetbrains.trove4j_trove4j.jar
            obj\Debug\90\lp\106\jl\org.jetbrains_annotations.jar
            obj\Debug\90\lp\11\jl\bin\classes.jar
            obj\Debug\90\lp\117\jl\bin\classes.jar
            obj\Debug\90\lp\118\jl\bin\classes.jar
            obj\Debug\90\lp\12\jl\bin\classes.jar
            obj\Debug\90\lp\13\jl\bin\classes.jar
            obj\Debug\90\lp\14\jl\bin\classes.jar
            obj\Debug\90\lp\15\jl\bin\classes.jar
            obj\Debug\90\lp\16\jl\com.android.support_support-annotations.jar
            obj\Debug\90\lp\17\jl\bin\classes.jar
            obj\Debug\90\lp\18\jl\bin\classes.jar
            obj\Debug\90\lp\19\jl\bin\classes.jar
            obj\Debug\90\lp\2\jl\android.arch.lifecycle_common.jar
            obj\Debug\90\lp\20\jl\bin\classes.jar
            obj\Debug\90\lp\21\jl\bin\classes.jar
            obj\Debug\90\lp\22\jl\bin\classes.jar
            obj\Debug\90\lp\23\jl\bin\classes.jar
            obj\Debug\90\lp\24\jl\bin\classes.jar
            obj\Debug\90\lp\25\jl\bin\classes.jar
            obj\Debug\90\lp\26\jl\bin\classes.jar
            obj\Debug\90\lp\27\jl\bin\classes.jar
            obj\Debug\90\lp\28\jl\bin\classes.jar
            obj\Debug\90\lp\29\jl\bin\classes.jar
            obj\Debug\90\lp\3\jl\bin\classes.jar
            obj\Debug\90\lp\30\jl\bin\classes.jar
            obj\Debug\90\lp\31\jl\com.github.bumptech.glide_annotations.jar
            obj\Debug\90\lp\32\jl\com.github.bumptech.glide_disklrucache.jar
            obj\Debug\90\lp\33\jl\bin\classes.jar
            obj\Debug\90\lp\34\jl\bin\classes.jar
            obj\Debug\90\lp\35\jl\bin\classes.jar
            obj\Debug\90\lp\36\jl\bin\classes.jar
            obj\Debug\90\lp\37\jl\bin\classes.jar
            obj\Debug\90\lp\38\jl\bin\classes.jar
            obj\Debug\90\lp\39\jl\bin\classes.jar
            obj\Debug\90\lp\4\jl\bin\classes.jar
            obj\Debug\90\lp\40\jl\bin\classes.jar
            obj\Debug\90\lp\41\jl\bin\classes.jar
            obj\Debug\90\lp\42\jl\com.google.code.findbugs_jsr305.jar
            obj\Debug\90\lp\43\jl\com.google.code.gson_gson.jar
            obj\Debug\90\lp\44\jl\com.google.errorprone_error_prone_annotations.jar
            obj\Debug\90\lp\45\jl\bin\classes.jar
            obj\Debug\90\lp\46\jl\bin\classes.jar
            obj\Debug\90\lp\47\jl\bin\classes.jar
            obj\Debug\90\lp\48\jl\bin\classes.jar
            obj\Debug\90\lp\49\jl\bin\classes.jar
            obj\Debug\90\lp\5\jl\bin\classes.jar
            obj\Debug\90\lp\50\jl\bin\classes.jar
            obj\Debug\90\lp\51\jl\bin\classes.jar
            obj\Debug\90\lp\52\jl\bin\classes.jar
            obj\Debug\90\lp\53\jl\bin\classes.jar
            obj\Debug\90\lp\54\jl\bin\classes.jar
            obj\Debug\90\lp\55\jl\com.google.guava_guava.jar
            obj\Debug\90\lp\56\jl\com.google.instrumentation_instrumentation-api.jar
            obj\Debug\90\lp\57\jl\com.google.j2objc_j2objc-annotations.jar
            obj\Debug\90\lp\58\jl\com.google.protobuf_protobuf-lite.jar
            obj\Debug\90\lp\59\jl\com.squareup.haha_haha.jar
            obj\Debug\90\lp\6\jl\bin\classes.jar
            obj\Debug\90\lp\60\jl\bin\classes.jar
            obj\Debug\90\lp\61\jl\bin\classes.jar
            obj\Debug\90\lp\62\jl\com.squareup.leakcanary_leakcanary-watcher.jar
            obj\Debug\90\lp\63\jl\com.squareup.okhttp3_okhttp.jar
            obj\Debug\90\lp\64\jl\com.squareup.okhttp_okhttp.jar
            obj\Debug\90\lp\65\jl\com.squareup.okio_okio.jar
            obj\Debug\90\lp\66\jl\com.squareup.retrofit2_converter-gson.jar
            obj\Debug\90\lp\67\jl\com.squareup.retrofit2_retrofit.jar
            obj\Debug\90\lp\68\jl\bin\classes.jar
            obj\Debug\90\lp\7\jl\bin\classes.jar
            obj\Debug\90\lp\8\jl\com.android.support.constraint_constraint-layout-solver.jar
            obj\Debug\90\lp\9\jl\bin\classes.jar
            obj\Debug\90\lp\93\jl\io.grpc_grpc-context.jar
            obj\Debug\90\lp\94\jl\io.grpc_grpc-core.jar
            obj\Debug\90\lp\95\jl\io.grpc_grpc-okhttp.jar
            obj\Debug\90\lp\96\jl\io.grpc_grpc-protobuf-lite.jar
            obj\Debug\90\lp\97\jl\io.grpc_grpc-stub.jar
            obj\Debug\90\lp\98\jl\io.opencensus_opencensus-api.jar
            obj\Debug\90\lp\99\jl\io.opencensus_opencensus-contrib-grpc-metrics.jar
        ManifestFile = obj\Debug\90\android\AndroidManifest.xml
        OutputDirectory = obj\Debug\90\android\bin\desugared
    OutputItems
        _DesugaredJars
            obj\Debug\90\android\bin\desugared\77-27-73-15-84-A7-5E-4C-F2-FB-05-7B-53-DF-F4-02mono.android.jar
            obj\Debug\90\android\bin\desugared\2F-53-0B-D0-E6-E5-2A-6B-5A-6B-75-57-54-21-CF-8Fandroid-support-multidex.jar
            obj\Debug\90\android\bin\desugared\85-69-DF-64-14-58-EF-06-CD-AD-A3-B1-25-F0-2A-ECandroid.arch.core_common.jar
            obj\Debug\90\android\bin\desugared\72-9C-40-20-1F-CD-B3-4A-00-B7-D5-13-DA-61-0F-A5classes.jar
            obj\Debug\90\android\bin\desugared\A8-1A-B3-0A-C3-68-FB-84-EB-E7-96-3F-EB-37-69-A5classes.jar
            obj\Debug\90\android\bin\desugared\BA-13-FA-EC-6E-A4-AC-D6-A6-B7-BB-08-14-B3-86-0Fclasses.jar
            obj\Debug\90\android\bin\desugared\48-70-47-73-DD-EC-39-0F-D3-D9-9F-FF-C3-D3-68-93org.checkerframework_checker-compat-qual.jar
            obj\Debug\90\android\bin\desugared\58-22-66-F7-82-5D-4A-60-15-C4-35-D5-EC-93-35-41org.jetbrains.kotlin_kotlin-stdlib-common.jar
            obj\Debug\90\android\bin\desugared\34-E9-3B-B8-44-42-80-2D-85-6A-7B-A2-E4-CD-E8-B7org.jetbrains.kotlin_kotlin-stdlib.jar
            obj\Debug\90\android\bin\desugared\64-78-83-58-18-21-04-A2-2A-4F-B5-B1-78-C4-03-B4org.jetbrains.trove4j_trove4j.jar
            obj\Debug\90\android\bin\desugared\ED-43-1B-B9-18-33-24-D8-14-E9-02-E0-9F-6A-32-7Forg.jetbrains_annotations.jar
            obj\Debug\90\android\bin\desugared\A8-29-C0-74-AD-3C-F8-36-AF-AE-6C-77-D1-D7-9B-8Eclasses.jar
            obj\Debug\90\android\bin\desugared\99-1F-00-66-48-FC-7F-98-19-3C-9A-2B-2A-E0-D0-D0classes.jar
            obj\Debug\90\android\bin\desugared\C7-29-DA-5F-72-13-78-84-B0-4D-9A-BF-3A-30-9F-6Eclasses.jar
            obj\Debug\90\android\bin\desugared\C5-DC-52-D7-75-31-19-80-8C-29-95-D0-67-79-BA-90classes.jar
            obj\Debug\90\android\bin\desugared\7F-A1-3F-6C-DC-16-8F-7F-03-31-21-AE-AC-5E-92-45classes.jar
            obj\Debug\90\android\bin\desugared\A6-1B-B6-D1-41-7C-D8-32-5F-E5-02-3C-02-3E-9B-FDclasses.jar
            obj\Debug\90\android\bin\desugared\3D-53-97-0E-CE-A5-F6-A0-D7-26-54-00-91-8A-D0-2Bclasses.jar
            obj\Debug\90\android\bin\desugared\45-7C-74-9B-EB-A6-AD-C6-47-C9-CE-33-FE-5E-8F-88com.android.support_support-annotations.jar
            obj\Debug\90\android\bin\desugared\08-DE-3B-BA-9E-C3-69-94-C0-E5-CC-0D-E9-AE-30-D6classes.jar
            obj\Debug\90\android\bin\desugared\36-D4-80-A8-A1-58-FC-60-09-49-54-02-AC-E5-AD-C7classes.jar
            obj\Debug\90\android\bin\desugared\D8-11-DA-F6-CC-A6-83-10-06-F6-87-BC-51-98-73-BEclasses.jar
            obj\Debug\90\android\bin\desugared\14-57-6A-20-50-59-0A-BF-7C-7D-57-A4-11-88-07-9Bandroid.arch.lifecycle_common.jar
            obj\Debug\90\android\bin\desugared\1E-F8-62-69-2D-C6-29-46-17-CE-C0-04-41-63-86-B0classes.jar
            obj\Debug\90\android\bin\desugared\2E-B2-27-47-AA-55-90-24-00-0E-A2-1A-9F-8B-84-52classes.jar
            obj\Debug\90\android\bin\desugared\DA-56-9F-B5-65-14-C0-78-72-0A-07-89-11-80-B2-4Eclasses.jar
            obj\Debug\90\android\bin\desugared\6A-C6-9F-54-D4-80-53-00-F5-0A-06-4A-AD-47-E0-79classes.jar
            obj\Debug\90\android\bin\desugared\18-D2-3B-9A-EB-56-1F-91-25-63-5F-15-D7-54-BF-FDclasses.jar
            obj\Debug\90\android\bin\desugared\75-D0-21-D7-3E-3A-07-67-2C-9F-56-FE-34-49-D8-86classes.jar
            obj\Debug\90\android\bin\desugared\B2-4F-6B-02-1E-E6-39-D0-22-0C-66-9D-C8-59-90-31classes.jar
            obj\Debug\90\android\bin\desugared\E2-E9-50-E5-64-93-D2-80-BC-B0-4D-B8-CA-92-1A-A7classes.jar
            obj\Debug\90\android\bin\desugared\56-98-CC-8E-58-4D-64-07-A3-3E-35-FD-CE-D5-D8-E3classes.jar
            obj\Debug\90\android\bin\desugared\36-C9-F5-F9-F2-D7-0E-A2-1B-5C-F4-D6-91-70-7A-6Cclasses.jar
            obj\Debug\90\android\bin\desugared\78-6C-72-75-39-61-6C-03-89-94-A8-1F-E2-88-BC-BFclasses.jar
            obj\Debug\90\android\bin\desugared\10-5F-EE-33-20-9D-B2-A3-4B-21-CC-83-6F-74-43-0Aclasses.jar
            obj\Debug\90\android\bin\desugared\A4-C1-04-75-3F-B8-D6-E1-46-52-CF-02-B6-8C-51-2Fcom.github.bumptech.glide_annotations.jar
            obj\Debug\90\android\bin\desugared\AB-38-32-38-9B-37-65-BC-05-8C-44-FF-B2-C7-AA-41com.github.bumptech.glide_disklrucache.jar
            obj\Debug\90\android\bin\desugared\78-2D-5F-E3-64-32-33-D9-46-70-AE-CD-4F-83-BF-2Fclasses.jar
            obj\Debug\90\android\bin\desugared\8A-0B-37-99-19-EF-10-77-41-B7-E0-DE-AD-14-0B-3Bclasses.jar
            obj\Debug\90\android\bin\desugared\56-AC-96-E3-D3-37-DE-1B-0B-14-74-19-C1-CD-DD-70classes.jar
            obj\Debug\90\android\bin\desugared\AE-CB-30-E9-93-89-B5-6D-D5-A7-7D-9E-F3-EA-1D-C4classes.jar
            obj\Debug\90\android\bin\desugared\B0-9B-40-39-07-25-85-D6-CA-92-50-2A-D7-D9-60-BCclasses.jar
            obj\Debug\90\android\bin\desugared\6F-2C-F9-1E-48-2B-77-5F-DA-3F-97-83-25-30-BC-54classes.jar
            obj\Debug\90\android\bin\desugared\7B-D4-E5-18-6F-0F-03-F4-E4-7F-D5-4E-BA-B1-E2-34classes.jar
            obj\Debug\90\android\bin\desugared\82-C3-15-F1-45-7D-67-84-7A-EC-C3-1C-E1-40-AD-15classes.jar
            obj\Debug\90\android\bin\desugared\18-7F-D2-37-31-6A-88-F5-B3-B5-63-55-07-49-3C-5Cclasses.jar
            obj\Debug\90\android\bin\desugared\42-46-03-1F-E5-F3-E7-7B-91-81-22-59-3E-E8-93-6Dclasses.jar
            obj\Debug\90\android\bin\desugared\F5-9C-91-A4-32-E2-B1-70-E2-DF-24-EF-4F-E1-4C-82com.google.code.findbugs_jsr305.jar
            obj\Debug\90\android\bin\desugared\44-3F-B8-10-CE-FE-D3-90-BE-54-AD-46-9C-BF-F6-D7com.google.code.gson_gson.jar
            obj\Debug\90\android\bin\desugared\6B-D7-2C-FB-26-F4-96-6F-6B-5F-B5-FC-8E-1D-2C-DEcom.google.errorprone_error_prone_annotations.jar
            obj\Debug\90\android\bin\desugared\7B-96-D8-EC-68-80-C0-0B-E3-EF-D3-DC-CB-C8-C5-3Dclasses.jar
            obj\Debug\90\android\bin\desugared\69-37-5D-DF-73-CE-89-AD-8D-E2-94-A4-23-73-E3-1Dclasses.jar
            obj\Debug\90\android\bin\desugared\70-AF-E2-B2-69-C3-33-32-78-30-92-3C-91-99-52-3Cclasses.jar
            obj\Debug\90\android\bin\desugared\D5-32-2A-9A-8D-69-96-A1-17-1C-92-78-45-97-77-76classes.jar
            obj\Debug\90\android\bin\desugared\39-08-36-06-7B-27-83-FF-F6-D6-61-4E-B2-0F-7A-39classes.jar
            obj\Debug\90\android\bin\desugared\B8-B2-C8-C2-31-2B-D2-26-03-27-67-0B-33-FD-76-C5classes.jar
            obj\Debug\90\android\bin\desugared\FC-D1-83-9A-85-04-97-43-87-4F-29-2F-6F-1B-35-3Bclasses.jar
            obj\Debug\90\android\bin\desugared\8A-91-6E-FB-1E-C3-69-2D-C9-A9-0D-07-7B-13-0D-90classes.jar
            obj\Debug\90\android\bin\desugared\F9-94-74-82-65-59-22-7B-DB-71-59-FF-90-1B-18-82classes.jar
            obj\Debug\90\android\bin\desugared\B9-E8-63-86-9D-32-50-D0-DB-B9-BF-C3-A6-F3-4E-17classes.jar
            obj\Debug\90\android\bin\desugared\0D-C8-3E-CE-3A-7F-C0-AD-53-62-E8-1A-13-8D-2A-19classes.jar
            obj\Debug\90\android\bin\desugared\FE-16-DF-78-77-5A-62-97-5F-01-9A-EC-B5-9D-3C-14com.google.guava_guava.jar
            obj\Debug\90\android\bin\desugared\6B-1E-55-D0-5D-3D-A8-98-12-78-7B-0F-70-41-1E-6Ecom.google.instrumentation_instrumentation-api.jar
            obj\Debug\90\android\bin\desugared\8E-0D-8B-5C-E8-E5-9C-A2-FE-80-3B-DD-64-1D-E3-CDcom.google.j2objc_j2objc-annotations.jar
            obj\Debug\90\android\bin\desugared\A5-80-3E-36-6C-7E-F9-A8-D6-5E-B5-5E-E8-98-32-C4com.google.protobuf_protobuf-lite.jar
            obj\Debug\90\android\bin\desugared\6B-56-57-E5-F3-4B-47-74-6A-18-7E-66-BD-6D-58-F0com.squareup.haha_haha.jar
            obj\Debug\90\android\bin\desugared\97-0B-1C-32-F7-84-11-94-F7-FD-F0-DD-34-86-0C-ABclasses.jar
            obj\Debug\90\android\bin\desugared\0B-C3-E1-01-14-14-B4-82-61-60-C7-5C-1B-99-DE-12classes.jar
            obj\Debug\90\android\bin\desugared\4B-6B-E5-BD-62-EA-8F-42-BF-A1-40-82-37-78-76-5Eclasses.jar
            obj\Debug\90\android\bin\desugared\E8-2D-31-CF-79-80-09-88-B9-25-38-BC-1A-2A-8B-B6com.squareup.leakcanary_leakcanary-watcher.jar
            obj\Debug\90\android\bin\desugared\46-E2-C4-A1-A1-C8-D3-3C-85-B6-B0-28-5B-5E-F1-1Dcom.squareup.okhttp3_okhttp.jar
            obj\Debug\90\android\bin\desugared\4E-98-9F-0D-41-D8-B6-B0-4A-9A-7D-69-D6-B8-C1-41com.squareup.okhttp_okhttp.jar
            obj\Debug\90\android\bin\desugared\65-50-29-62-69-31-2E-B0-E3-C3-2F-A1-AE-9B-48-62com.squareup.okio_okio.jar
            obj\Debug\90\android\bin\desugared\96-32-3C-83-9E-C7-D6-4B-92-22-29-0E-CE-D1-93-8Ccom.squareup.retrofit2_converter-gson.jar
            obj\Debug\90\android\bin\desugared\EF-22-99-3F-3B-FA-7D-EF-8C-85-B3-A5-F9-A3-13-6Bcom.squareup.retrofit2_retrofit.jar
            obj\Debug\90\android\bin\desugared\95-EF-57-80-9A-29-56-82-60-2E-9A-EA-43-CB-32-FAclasses.jar
            obj\Debug\90\android\bin\desugared\FF-B0-53-34-62-B3-69-17-6D-8A-36-E7-66-3C-CE-0Cclasses.jar
            obj\Debug\90\android\bin\desugared\A6-AB-7A-42-97-81-4A-0E-45-4A-31-7C-67-7D-0B-FDcom.android.support.constraint_constraint-layout-solver.jar
            obj\Debug\90\android\bin\desugared\A1-A8-C3-41-6F-6B-36-FC-4E-06-78-59-25-8D-68-BBclasses.jar
            obj\Debug\90\android\bin\desugared\EE-F3-03-3A-83-04-BF-15-EE-8B-35-C7-37-CA-C4-88io.grpc_grpc-context.jar
            obj\Debug\90\android\bin\desugared\4D-53-53-F8-B7-32-E7-23-9C-55-33-AB-81-03-D1-9Fio.grpc_grpc-core.jar
            obj\Debug\90\android\bin\desugared\9D-71-2F-60-CC-43-B2-1C-96-5B-93-48-CB-7D-E5-FBio.grpc_grpc-okhttp.jar
            obj\Debug\90\android\bin\desugared\19-37-D1-E1-74-53-6F-90-DA-C1-CE-2C-28-12-F0-25io.grpc_grpc-protobuf-lite.jar
            obj\Debug\90\android\bin\desugared\34-EB-F4-FD-8D-FA-8C-57-EA-3B-90-BD-06-35-DB-5Eio.grpc_grpc-stub.jar
            obj\Debug\90\android\bin\desugared\AC-F0-C3-BD-D1-44-46-FC-EA-83-81-51-6C-B5-79-A2io.opencensus_opencensus-api.jar
            obj\Debug\90\android\bin\desugared\BB-12-C4-0A-F4-F8-55-E4-B4-BB-EE-1A-5B-EB-C7-E2io.opencensus_opencensus-contrib-grpc-metrics.jar

So all we need to do is put --classpath_entry for each jar.

But I definitely need to put these arguments in a response file... it would be quite long here.

@jonathanpeppers
Copy link
Member

@erikpowa I got a test case to reproduce exactly what you are seeing: master...jonathanpeppers:desugar-classpath-entry

I think I was missing the AAR file for the Twitter SDK, and that reproduces the issue.

Unfortunately the test cases don't all pass...

I believe the fix works for your app, but it's not working in all cases. So I'll have to keep looking at this...

@jonathanpeppers
Copy link
Member

jonathanpeppers commented Sep 11, 2018

Here is the current error, happening at the CompileToDalvik, dx step:

Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension;
        Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension$AbstractDesugaringStrategy;
        Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension$ConcurrentWeakIdentityHashMap;
        Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension$ConcurrentWeakIdentityHashMap$WeakKey;
        Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension$MimicDesugaringStrategy;
        Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension$NullDesugaringStrategy;
        Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension$ReuseDesugaringStrategy;
        7 errors; aborting
        Errors
            Xamarin.Android.Common.targets(2598,3): java.lang.IllegalArgumentException: already added :  Lcom/google/devtools/build/android/desugar/runtime/ThrowableExtension; [xamarin-android\bin\TestDebug\temp\Desugar(True,True,False)\UnnamedProject.csproj]

Same error reported here: #1738

@erikpowa
Copy link
Contributor Author

erikpowa commented Sep 11, 2018

I had a lot of Uncaught translation error: java.lang.IllegalArgumentException: already added: ... that meant for me that I generated wrong binding libraries... for eg when

  1. I accidently generated binding libraries for android.jar's references aswell
  2. I accidently used more than 1 jar/aar for a single binding library
  3. My gradle didn't checked for "xy-android" version of a specific artifact
  4. Didn't used latest highest satisfied versions of references

But your test is interesting I will try manually repro.

My first guess is too old artifacts are being used (?) these are the lowest satisfactions for twitter-core that are being used in the test. Have you tried bump them up?

  • okio-1.13.0
  • okhttp-3.8.0
  • retrofit-2.3.0
  • converter-gson-2.3.0
  • gson-2.7

((Edit: TMI: POM's can be wrong, there are tons of invalid poms in every maven, example: map-utils doesn't specify dependency "com.google.android.gms-play-services-maps" while it's required for compile scope))

@erikpowa
Copy link
Contributor Author

I was wrong, I created a new project and repro-d it locally.

@jonathanpeppers
Copy link
Member

@erikpowa so I think something in our desugar logic is putting duplicate types in these jar files. I need to use a java decompiler and see if that is the case for jar files in obj\Debug\90\android\bin\desugared\*.jar.

I have to work on other things, but I'll come back to this later this week, hopefully.

@erikpowa
Copy link
Contributor Author

Right now I'm comparing my 2 project, one that still working with the same package.config, while the other one isn't.

@jonathanpeppers
Copy link
Member

@erikpowa is it possible that deleting your bin and obj directories is needed?

Offhand I haven't checked, but we might not be deleting files in $(IntermediateOutputPath)android\bin\desugared, which would be a separate problem to fix... 🤦‍♂️

@erikpowa
Copy link
Contributor Author

erikpowa commented Sep 11, 2018

@jonathanpeppers Omg, finally...............

I changed the minimum target ...

Non-failing project had min 7.1 / api 25.
Failing project stopped failing at min 7.0 / api 24, below that failing until 5.0 (I didn't go lower)

Edit: yeah I constantly deleting obj/bin when I test something

Repro project (included artifacts as nuget packages):
TestDesugar.zip
Just change the minimum target < 7.0 fails >= 7.0 succeed

@jonathanpeppers
Copy link
Member

jonathanpeppers commented Sep 11, 2018

@erikpowa ok, my tests are green when I add to AndroidManifest.xml:

android:minSdkVersion="24"

I think this is good for now.

Next I need to look into response file support here, since the command line is going to be really long...

@dnfclas
Copy link

dnfclas commented Sep 11, 2018

CLA assistant check
All CLA requirements met.

@jonathanpeppers
Copy link
Member

build

@jonathanpeppers jonathanpeppers added the use-merge-commit Normally we squash-and-merge PRs. Use this label so we instead use a merge commit. label Sep 11, 2018
@jonathanpeppers
Copy link
Member

@erikpowa did you sign the CLA? I thought I saw it was green before.

I might have confused the bot when I rebased.

@erikpowa
Copy link
Contributor Author

erikpowa commented Sep 11, 2018

Signed just now.

The problem still remains, the desugar under api 24 fails because it puts it's classes and ain't removing it (this is the only problem left).
@jonathanpeppers Do you know is this the same behaviour with D8/R8 or just the standalone version? Is the desugar_deploy.jar came/built from bazel?

Edit: I can imagine it's actually silently failing and maybe that's why the desugar's classes are still inside the jars.

@erikpowa
Copy link
Contributor Author

erikpowa commented Sep 11, 2018

@jonathanpeppers 2 possible solution for #1738 :

--[no]desugar_try_with_resources_if_needed (a boolean; default: "true")
Rewrites try-with-resources statements if --min_sdk_version < 19.

If I add --nodesugar_try_with_resources_if_needed, com\google\devtools\build\android\desugar\runtime\ gets removed

OR

--[no]desugar_try_with_resources_omit_runtime_classes (a boolean; default: "false")
Omits the runtime classes necessary to support try-with-resources from the
output. This property has effect only if --
desugar_try_with_resources_if_needed is used.

If I add --desugar_try_with_resources_omit_runtime_classes same result.

The problem is I don't know what

try-with-resources

means here. (is it AAR or is it like Embeeded Resource in .net or access to the R)

The only thing left is to determine which argument to use and when to use + test

Edit: I wrote wrong argument for the 2nd solution

@jonathanpeppers jonathanpeppers removed the use-merge-commit Normally we squash-and-merge PRs. Use this label so we instead use a merge commit. label Sep 12, 2018
Copy link
Member

@jonathanpeppers jonathanpeppers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me now, the test will help us when we add d8/r8.

@dellis1972 let me know what you think, I can squash/merge tomorrow and write our usual lengthy commit message.

I think we should add response file support for this after #1715 is merged.

@jonathanpeppers
Copy link
Member

build

@erikpowa
Copy link
Contributor Author

@jonathanpeppers I accidentally added invalid code to Desugar.cs, now it should be okay

erikpowa and others added 6 commits September 17, 2018 20:51
To get some better testing here, I wrote a test that:
- Uses the Twitter AAR file from maven central
- Lots of dependencies for Twitter's SDK
- Added proguard rules where needed
- Requires `android:minSdkVersion="24"` for using these libraries
under API 24 pass `--desugar_try_with_resources_omit_runtime_classes`
DesugarChecks should build now under api 24
ops I copied wrong line
@jonathanpeppers
Copy link
Member

build

Copy link
Member

@jonathanpeppers jonathanpeppers left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After rebasing (we have had broken builds lately), there is a test failure here:

Desugar(true, true, true) fails:

Warnings
    PROGUARD retrofit2.OkHttpCall$1: can't find referenced class com.google.devtools.build.android.desugar.runtime.ThrowableExtension [E:\A\_work\14\s\bin\TestDebug\temp\Desugar(True,True,True)\UnnamedProject.csproj]
    PROGUARD retrofit2.OkHttpCall$1: can't find referenced class com.google.devtools.build.android.desugar.runtime.ThrowableExtension [E:\A\_work\14\s\bin\TestDebug\temp\Desugar(True,True,True)\UnnamedProject.csproj]
    PROGUARD there were 2 unresolved references to classes or interfaces. [E:\A\_work\14\s\bin\TestDebug\temp\Desugar(True,True,True)\UnnamedProject.csproj]
...
 java.io.IOException: Please correct the above warnings first.
 	at proguard.Initializer.execute(Unknown Source)
 	at proguard.ProGuard.initialize(Unknown Source)
 	at proguard.ProGuard.execute(Unknown Source)
 	at proguard.ProGuard.main(Unknown Source)

Ignore ProGuard `can't find referenced class com.google.devtools.build.android.desugar...`.
@erikpowa
Copy link
Contributor Author

erikpowa commented Sep 18, 2018

(some research: according to this comment those classes aren't meant to be packed (as my understanding), so the warning are expected from proguard therefore )

@jonathanpeppers this should be fine

btw: I couldn't find any reference in desugared+decompiled com.squareup.retrofit2_retrofit.2.3.0 jar
findstr /S /I "com.google ThrowableExtension desugar" "*" returns nothing, so it's weird that proguard throws warnings.

@jonathanpeppers
Copy link
Member

build

@jonathanpeppers
Copy link
Member

I think the test failure here, is random / network related on-device test.

@jonathanpeppers
Copy link
Member

@jonpryor @dellis1972 are we good to merge this?

I was going to look into response file support, but we probably need this: #1715

@jonpryor
Copy link
Member

@jonathanpeppers asked:

are we good to merge this?

I believe we are.

Does this PR also fix Issue #1738, referenced in this comment? If so, the final commit message should mention that as well.

@jonathanpeppers jonathanpeppers merged commit 892a700 into dotnet:master Sep 21, 2018
@gmoney494
Copy link

Hey guys, has this been released yet? If not, what is the timetable for this fix?

@jonathanpeppers
Copy link
Member

Hi @gmoney494,

Due to some "unlucky" timing, this likely isn't going to be in a release until the next version of Visual Studio, sorry...

Hopefully D8/R8 support will be available around the same time, which is currently in progress if you want to follow along: #2019

@cheles
Copy link

cheles commented Nov 15, 2018

@jonathanpeppers by next version, are you referring to VS 15.9/.x or 16?

@jonathanpeppers
Copy link
Member

@cheles this will be in 16.0 preview 1. I don't think there is a public date yet.

@github-actions github-actions bot locked and limited conversation to collaborators Feb 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Desugar Task should provide deps / --classpath_entry(s)
7 participants