Fixed
Status Update
Comments
js...@google.com <js...@google.com> #2
This is related to issue 114711928 (desugaring Java 8 methods), and I'm not sure such desugarding is guarded by min api or not.
ap...@google.com <ap...@google.com> #3
Project: r8
Branch: master
commit a0713a933b3aa417d6f8628cd2546375f7c7867d
Author: Rico Wind <ricow@google.com>
Date: Wed Jan 23 10:25:33 2019
Ensure that we can merge desugared java8 classes
We do create a single class for each method, but when merging we did
not take into account that we allow multiple instances of these.
Bug: 123242448
Change-Id: If4ec57e9d3172c6fe6fe8facaf6efb7916e1aa49
M src/main/java/com/android/tools/r8/ir/desugar/Java8MethodRewriter.java
M src/main/java/com/android/tools/r8/utils/ProgramClassCollection.java
M src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
https://r8-review.googlesource.com/33281
Branch: master
commit a0713a933b3aa417d6f8628cd2546375f7c7867d
Author: Rico Wind <ricow@google.com>
Date: Wed Jan 23 10:25:33 2019
Ensure that we can merge desugared java8 classes
We do create a single class for each method, but when merging we did
not take into account that we allow multiple instances of these.
Bug: 123242448
Change-Id: If4ec57e9d3172c6fe6fe8facaf6efb7916e1aa49
M src/main/java/com/android/tools/r8/ir/desugar/Java8MethodRewriter.java
M src/main/java/com/android/tools/r8/utils/ProgramClassCollection.java
M src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
ri...@google.com <ri...@google.com> #4
Fix in, leaving this open until we have this merged to 1.4
You can try this out with the latest version of R8 by doing this in your gradle file:
repositories {
maven {
url "http://storage.googleapis.com/r8-releases/raw/master "
}
maven {
url 'https://kotlin.bintray.com/kotlinx/ '
}
}
dependencies {
classpath 'com.android.tools:r8:1685c25eef5174ff77128d31f4803e992202b12b' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
You can try this out with the latest version of R8 by doing this in your gradle file:
repositories {
maven {
url "
}
maven {
url '
}
}
dependencies {
classpath 'com.android.tools:r8:1685c25eef5174ff77128d31f4803e992202b12b' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
to...@gmail.com <to...@gmail.com> #5
Seems to work, any reason it's not directly in /raw as all other builds?
But still got many warnings:
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.mediacenters.kodi.utils.KodiCustomCommandTypeArrayAdapter$CustomCommandType.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\119\\com\\genimee\\android\\yatse\\mediacenters\\kodi\\utils\\KodiCustomCommandTypeArrayAdapter$CustomCommandType.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.mediacenters.plex.api.model.ServerDiscoveryInfo.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\120\\com\\genimee\\android\\yatse\\mediacenters\\plex\\api\\model\\ServerDiscoveryInfo.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.api.model.AudioStream.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\124\\com\\genimee\\android\\yatse\\api\\model\\AudioStream.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.api.model.Subtitle.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\124\\com\\genimee\\android\\yatse\\api\\model\\Subtitle.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.api.model.VideoStream.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\124\\com\\genimee\\android\\yatse\\api\\model\\VideoStream.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.api.model.Cast.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\124\\com\\genimee\\android\\yatse\\api\\model\\Cast.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Double$hashCode$ID` was not found, it is required for default or static interface methods desugaring of `int org.leetzone.android.yatsewidget.voice.ai.model.Result.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\org\\leetzone\\android\\yatsewidget\\voice\\ai\\model\\Result.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int org.leetzone.android.yatsewidget.voice.VoiceParser$Command.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\org\\leetzone\\android\\yatsewidget\\voice\\VoiceParser$Command.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int org.leetzone.android.yatsewidget.renderers.roku.DeviceDiscoveryInfo.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\org\\leetzone\\android\\yatsewidget\\renderers\\roku\\DeviceDiscoveryInfo.class"}],"tool":"D8"}
Anyway to not have those? A rule or something? (Note that this is a debug build so no minify)
But still got many warnings:
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.mediacenters.kodi.utils.KodiCustomCommandTypeArrayAdapter$CustomCommandType.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\119\\com\\genimee\\android\\yatse\\mediacenters\\kodi\\utils\\KodiCustomCommandTypeArrayAdapter$CustomCommandType.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.mediacenters.plex.api.model.ServerDiscoveryInfo.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\120\\com\\genimee\\android\\yatse\\mediacenters\\plex\\api\\model\\ServerDiscoveryInfo.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.api.model.AudioStream.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\124\\com\\genimee\\android\\yatse\\api\\model\\AudioStream.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.api.model.Subtitle.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\124\\com\\genimee\\android\\yatse\\api\\model\\Subtitle.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.api.model.VideoStream.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\124\\com\\genimee\\android\\yatse\\api\\model\\VideoStream.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int com.genimee.android.yatse.api.model.Cast.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\124\\com\\genimee\\android\\yatse\\api\\model\\Cast.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Double$hashCode$ID` was not found, it is required for default or static interface methods desugaring of `int org.leetzone.android.yatsewidget.voice.ai.model.Result.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\org\\leetzone\\android\\yatsewidget\\voice\\ai\\model\\Result.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int org.leetzone.android.yatsewidget.voice.VoiceParser$Command.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\org\\leetzone\\android\\yatsewidget\\voice\\VoiceParser$Command.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int org.leetzone.android.yatsewidget.renderers.roku.DeviceDiscoveryInfo.hashCode()`","sources":[{"file":"D:\\_Gradle\\Yatse\\Yatse\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\org\\leetzone\\android\\yatsewidget\\renderers\\roku\\DeviceDiscoveryInfo.class"}],"tool":"D8"}
Anyway to not have those? A rule or something? (Note that this is a debug build so no minify)
ri...@google.com <ri...@google.com> #6
>> Seems to work, any reason it's not directly in /raw as all other builds?
this is not on the 1.4 branch (yet, will be shortly, in which case you can use it from there)
Looking into the warnings
this is not on the 1.4 branch (yet, will be shortly, in which case you can use it from there)
Looking into the warnings
ap...@google.com <ap...@google.com> #7
Project: r8
Branch: d8-1.4
commit 8fc0b4748a36f62c6c29baeee00d5a9fd08451e0
Author: Søren Gjesse <sgjesse@google.com>
Date: Wed Jan 23 13:38:49 2019
Version 1.4.29
Cherry-pick: Fix not setting offset on DexItemBasedConstString replacement
CL:https://r8-review.googlesource.com/c/r8/+/33145
Cherry-pick: Add test for gms core with forced jumbo string rewriting
CL:https://r8-review.googlesource.com/c/r8/+/33228
Cherry-pick: Don't generate compat rules when tracing reflective use
CL:https://r8-review.googlesource.com/c/r8/+/32845
Cherry-pick: Mark fields accessed by reflection as both read and written
CL:https://r8-review.googlesource.com/c/r8/+/33271
Cherry-pick: Print proper reason for kept-by-reflection edges.
CL:https://r8-review.googlesource.com/c/r8/+/33263
Cherry-pick: Ensure that we can merge desugared java8 classes
CL:https://r8-review.googlesource.com/c/r8/+/33281
Cherry-pick: Add support for -libraryjars in ProguardTestBuilder.
CL:https://r8-review.googlesource.com/c/r8/+/33274
Cherry-pick: Throw for unimplemented APIs in ProguardTestBuilder
CL:https://r8-review.googlesource.com/c/r8/+/33262
Cherry-pick: Guard check-cast elimination when in-value is null constant
CL:https://r8-review.googlesource.com/c/r8/+/33300
Cherry-pick: Revert "Revert "Assert that definitionFor is only called on non-null class types.""
CL:https://r8-review.googlesource.com/c/r8/+/33280
Bug: 123152027
Bug: 123242448
Bug: 123215165
Bug: 69590587
Bug: 123164442
Bug: 123269162
Change-Id: I06db0b137ceb3d3410f04680c5bbecc697b8f905
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/experimental/graphinfo/GraphEdgeInfo.java
M src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
M src/main/java/com/android/tools/r8/graph/DirectMappedDexApplication.java
M src/main/java/com/android/tools/r8/graph/LazyLoadedDexApplication.java
M src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
M src/main/java/com/android/tools/r8/ir/code/ConstClass.java
M src/main/java/com/android/tools/r8/ir/desugar/Java8MethodRewriter.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
M src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/shaking/KeepReason.java
M src/main/java/com/android/tools/r8/shaking/MainDexDirectReferenceTracer.java
M src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java
M src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
M src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
M src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/main/java/com/android/tools/r8/utils/ProgramClassCollection.java
A src/test/examples/classmerging/PinnedArrayParameterTypesTest.java
M src/test/examples/classmerging/keep-rules.txt
M src/test/java/com/android/tools/r8/D8TestBuilder.java
M src/test/java/com/android/tools/r8/ProguardTestBuilder.java
M src/test/java/com/android/tools/r8/R8TestBuilder.java
M src/test/java/com/android/tools/r8/R8TestRunResult.java
A src/test/java/com/android/tools/r8/RegressionForPrimitiveDefinitionForLookup.java
M src/test/java/com/android/tools/r8/classmerging/VerticalClassMergerTest.java
M src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
A src/test/java/com/android/tools/r8/internal/R8GMSCoreV10JumboStringTest.java
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/TrivialArrayCheckCastTest.java
M src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java
A src/test/java/com/android/tools/r8/shaking/keptgraph/KeptByFieldReflectionTest.java
A src/test/java/com/android/tools/r8/shaking/keptgraph/KeptByFieldReflectionTestRunner.java
A src/test/java/com/android/tools/r8/shaking/keptgraph/KeptByMethodReflectionTest.java
A src/test/java/com/android/tools/r8/shaking/keptgraph/KeptByMethodReflectionTestRunner.java
A src/test/java/com/android/tools/r8/shaking/reflection/FieldAccessTest.java
M src/test/java/com/android/tools/r8/utils/graphinspector/GraphInspector.java
https://r8-review.googlesource.com/33320
Branch: d8-1.4
commit 8fc0b4748a36f62c6c29baeee00d5a9fd08451e0
Author: Søren Gjesse <sgjesse@google.com>
Date: Wed Jan 23 13:38:49 2019
Version 1.4.29
Cherry-pick: Fix not setting offset on DexItemBasedConstString replacement
CL:
Cherry-pick: Add test for gms core with forced jumbo string rewriting
CL:
Cherry-pick: Don't generate compat rules when tracing reflective use
CL:
Cherry-pick: Mark fields accessed by reflection as both read and written
CL:
Cherry-pick: Print proper reason for kept-by-reflection edges.
CL:
Cherry-pick: Ensure that we can merge desugared java8 classes
CL:
Cherry-pick: Add support for -libraryjars in ProguardTestBuilder.
CL:
Cherry-pick: Throw for unimplemented APIs in ProguardTestBuilder
CL:
Cherry-pick: Guard check-cast elimination when in-value is null constant
CL:
Cherry-pick: Revert "Revert "Assert that definitionFor is only called on non-null class types.""
CL:
Bug: 123152027
Bug: 123242448
Bug: 123215165
Bug: 69590587
Bug: 123164442
Bug: 123269162
Change-Id: I06db0b137ceb3d3410f04680c5bbecc697b8f905
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/experimental/graphinfo/GraphEdgeInfo.java
M src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
M src/main/java/com/android/tools/r8/graph/DirectMappedDexApplication.java
M src/main/java/com/android/tools/r8/graph/LazyLoadedDexApplication.java
M src/main/java/com/android/tools/r8/ir/analysis/TypeChecker.java
M src/main/java/com/android/tools/r8/ir/code/ConstClass.java
M src/main/java/com/android/tools/r8/ir/desugar/Java8MethodRewriter.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
M src/main/java/com/android/tools/r8/naming/IdentifierMinifier.java
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/shaking/KeepReason.java
M src/main/java/com/android/tools/r8/shaking/MainDexDirectReferenceTracer.java
M src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java
M src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
M src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
M src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/main/java/com/android/tools/r8/utils/ProgramClassCollection.java
A src/test/examples/classmerging/PinnedArrayParameterTypesTest.java
M src/test/examples/classmerging/keep-rules.txt
M src/test/java/com/android/tools/r8/D8TestBuilder.java
M src/test/java/com/android/tools/r8/ProguardTestBuilder.java
M src/test/java/com/android/tools/r8/R8TestBuilder.java
M src/test/java/com/android/tools/r8/R8TestRunResult.java
A src/test/java/com/android/tools/r8/RegressionForPrimitiveDefinitionForLookup.java
M src/test/java/com/android/tools/r8/classmerging/VerticalClassMergerTest.java
M src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
A src/test/java/com/android/tools/r8/internal/R8GMSCoreV10JumboStringTest.java
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/TrivialArrayCheckCastTest.java
M src/test/java/com/android/tools/r8/shaking/forceproguardcompatibility/ForceProguardCompatibilityTest.java
A src/test/java/com/android/tools/r8/shaking/keptgraph/KeptByFieldReflectionTest.java
A src/test/java/com/android/tools/r8/shaking/keptgraph/KeptByFieldReflectionTestRunner.java
A src/test/java/com/android/tools/r8/shaking/keptgraph/KeptByMethodReflectionTest.java
A src/test/java/com/android/tools/r8/shaking/keptgraph/KeptByMethodReflectionTestRunner.java
A src/test/java/com/android/tools/r8/shaking/reflection/FieldAccessTest.java
M src/test/java/com/android/tools/r8/utils/graphinspector/GraphInspector.java
to...@gmail.com <to...@gmail.com> #8
Since B3 is supposed to be branched today, will it be 1.4.29 or a previous one?
ri...@google.com <ri...@google.com> #9
As you can see from #7, the fix is in 1.4.29, but that does not fix the warnings
to...@gmail.com <to...@gmail.com> #10
Yes I know, the question is what R8 version will AGP 3.4 beta 3 include? I was told the branching is done today, but maybe it's already done depending on TZ. And I know Beta 2 won't have it either :)
To help finding more issues as I did before for Jinseong I'd like to switch to AGP 3.4 for my next public beta release, but usually do not push public builds with forced R8 version to simplify versioning and stable builds reproduction.
Having some visibility helps planning things :)
To help finding more issues as I did before for Jinseong I'd like to switch to AGP 3.4 for my next public beta release, but usually do not push public builds with forced R8 version to simplify versioning and stable builds reproduction.
Having some visibility helps planning things :)
ap...@google.com <ap...@google.com> #11
Project: r8
Branch: master
commit 57aa014e30606d35d8671f5a8f8ece345c6d0dc2
Author: Rico Wind <ricow@google.com>
Date: Wed Jan 23 14:38:43 2019
Don't warn on missing desugared java8 methods
Ensure that our compilation does not output warnings
Bug: 123242448
Change-Id: I1eaeb5bcdd31671adace07ac1b575555d7571b74
M src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
M src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
https://r8-review.googlesource.com/33324
Branch: master
commit 57aa014e30606d35d8671f5a8f8ece345c6d0dc2
Author: Rico Wind <ricow@google.com>
Date: Wed Jan 23 14:38:43 2019
Don't warn on missing desugared java8 methods
Ensure that our compilation does not output warnings
Bug: 123242448
Change-Id: I1eaeb5bcdd31671adace07ac1b575555d7571b74
M src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
M src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
ri...@google.com <ri...@google.com>
ap...@google.com <ap...@google.com> #12
Project: r8
Branch: d8-1.4
commit b4e3b67035ef152e5ab673f9e3eacd9dc66b0832
Author: Rico Wind <ricow@google.com>
Date: Wed Jan 30 07:53:41 2019
Version 1.4.32
Cherry pick: Don't warn on missing desugared java8 methods
CL:https://r8-review.googlesource.com/c/r8/+/33324
Cherry pick: Fix restarting of internal tester
CL:https://r8-review.googlesource.com/c/r8/+/33323
Bug: 123242448
Change-Id: Ic7376e67abb64793d45540565100eb14f27267ec
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
M src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
M tools/internal_test.py
https://r8-review.googlesource.com/33325
Branch: d8-1.4
commit b4e3b67035ef152e5ab673f9e3eacd9dc66b0832
Author: Rico Wind <ricow@google.com>
Date: Wed Jan 30 07:53:41 2019
Version 1.4.32
Cherry pick: Don't warn on missing desugared java8 methods
CL:
Cherry pick: Fix restarting of internal tester
CL:
Bug: 123242448
Change-Id: Ic7376e67abb64793d45540565100eb14f27267ec
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
M src/test/java/com/android/tools/r8/desugar/Java8MethodsTest.java
M tools/internal_test.py
Description
```
AGP 3.4 B1 + R8 1.4.26. For once after a clean I directly booted and API 28 emulator and tried to start the app on it (so full build targeting an API 28 device).
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Double$hashCode$ID` was not found, it is required for default or static interface methods desugaring of `int ...Result.hashCode()`","sources":[{"file":"D:\\_Gradle\\...\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\...\\Result.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int ...$Command.hashCode()`","sources":[{"file":"D:\\_Gradle\\...\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\...\\...$Command.class"}],"tool":"D8"}
AGPBI: {"kind":"warning","text":"Type `$r8$java8methods$utility$Integer$hashCode$II` was not found, it is required for default or static interface methods desugaring of `int ...Info.hashCode()`","sources":[{"file":"D:\\_Gradle\\...\\build\\intermediates\\transforms\\FirebasePerformancePlugin\\debug\\136\\...Info.class"}],"tool":"D8"}
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at
Program type already present: $r8$java8methods$utility$Integer$hashCode$II
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593)
at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677)
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:720)
at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:407)
at com.android.build.gradle.internal.transforms.DexMergerTransform.transform(DexMergerTransform.java:244)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at sun.reflect.GeneratedMethodAccessor646.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:47)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145)
at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49)
at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33)
at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43)
at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29)
at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134)
at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83)
at java.util.Optional.orElseGet(Optional.java:267)
at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36)
at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at java.util.Optional.map(Optional.java:215)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:79)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at
Program type already present: $r8$java8methods$utility$Integer$hashCode$II
at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at
Program type already present: $r8$java8methods$utility$Integer$hashCode$II
at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:131)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:118)
at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:102)
at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:37)
at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
... 4 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:81)
at com.android.tools.r8.utils.ExceptionUtils.withD8CompilationHandler(ExceptionUtils.java:45)
at com.android.tools.r8.D8.run(D8.java:94)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:116)
... 7 more
Caused by: com.android.tools.r8.utils.AbortException: Error: Program type already present: $r8$java8methods$utility$Integer$hashCode$II
at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:101)
at com.android.tools.r8.utils.Reporter.fatalError(Reporter.java:72)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:66)
... 10 more
```