Status Update
Comments
am...@google.com <am...@google.com>
ri...@google.com <ri...@google.com> #2
Caused by: java.lang.NullPointerException: (No message provided)
at com.android.tools.r8.graph.FieldResolutionResult$Builder.addResolutionResult(FieldResolutionResult.java:516)
at com.android.tools.r8.graph.FieldResolution.lambda$resolveFieldOnDirectInterfaces$2(FieldResolution.java:94)
at com.android.tools.r8.graph.ClassResolutionResult$MultipleClassResolutionResult.forEachClassResolutionResult(ClassResolutionResult.java:113)
at com.android.tools.r8.graph.FieldResolution.resolveFieldOnDirectInterfaces(FieldResolution.java:87)
at com.android.tools.r8.graph.FieldResolution.resolveFieldOn(FieldResolution.java:53)
at com.android.tools.r8.graph.FieldResolution.resolveFieldOn(FieldResolution.java:37)
at com.android.tools.r8.graph.FieldResolution.lambda$resolveFieldOn$0(FieldResolution.java:31)
at com.android.tools.r8.graph.DexClass.forEachClassResolutionResult(DexClass.java:145)
at com.android.tools.r8.graph.FieldResolution.resolveFieldOn(FieldResolution.java:30)
at com.android.tools.r8.graph.AppInfoWithClassHierarchy.resolveFieldOn(AppInfoWithClassHierarchy.java:770)
at com.android.tools.r8.graph.AppInfoWithClassHierarchy.resolveFieldOn(AppInfoWithClassHierarchy.java:764)
at com.android.tools.r8.graph.AppInfo.resolveField(AppInfo.java:241)
at com.android.tools.r8.ir.desugar.desugaredlibrary.retargeter.DesugaredLibraryRetargeter.fieldRetarget(DesugaredLibraryRetargeter.java:115)
at com.android.tools.r8.ir.desugar.desugaredlibrary.retargeter.DesugaredLibraryRetargeter.needsDesugaring(DesugaredLibraryRetargeter.java:104)
at com.android.tools.r8.ir.desugar.NonEmptyCfInstructionDesugaringCollection.lambda$needsDesugaring$7(NonEmptyCfInstructionDesugaringCollection.java:346)
at com.android.tools.r8.com.google.common.collect.Iterators.indexOf(Iterators.java:762)
at com.android.tools.r8.com.google.common.collect.Iterators.any(Iterators.java:661)
at com.android.tools.r8.com.google.common.collect.Iterables.any(Iterables.java:608)
at com.android.tools.r8.ir.desugar.NonEmptyCfInstructionDesugaringCollection.needsDesugaring(NonEmptyCfInstructionDesugaringCollection.java:345)
at com.android.tools.r8.ir.desugar.NonEmptyCfInstructionDesugaringCollection.lambda$needsDesugaring$6(NonEmptyCfInstructionDesugaringCollection.java:341)
at com.android.tools.r8.com.google.common.collect.Iterators.indexOf(Iterators.java:762)
at com.android.tools.r8.com.google.common.collect.Iterators.any(Iterators.java:661)
at com.android.tools.r8.com.google.common.collect.Iterables.any(Iterables.java:608)
at com.android.tools.r8.ir.desugar.NonEmptyCfInstructionDesugaringCollection.needsDesugaring(NonEmptyCfInstructionDesugaringCollection.java:340)
at com.android.tools.r8.ir.conversion.IRConverter.desugar(IRConverter.java:1071)
at com.android.tools.r8.ir.conversion.IRConverter.rewriteNonDesugaredCodeInternal(IRConverter.java:1018)
at com.android.tools.r8.ir.conversion.IRConverter.lambda$rewriteNonDesugaredCode$14(IRConverter.java:991)
at com.android.tools.r8.utils.ExceptionUtils.withOriginAndPositionAttachmentHandler(ExceptionUtils.java:246)
at com.android.tools.r8.ir.conversion.IRConverter.rewriteNonDesugaredCode(IRConverter.java:987)
at com.android.tools.r8.ir.conversion.IRConverter.convertMethod(IRConverter.java:522)
at com.android.tools.r8.ir.conversion.D8MethodProcessor.processMethod(D8MethodProcessor.java:149)
at com.android.tools.r8.ir.conversion.IRConverter.convertMethods(IRConverter.java:487)
at com.android.tools.r8.ir.conversion.ClassConverter.convertMethods(ClassConverter.java:196)
at com.android.tools.r8.ir.conversion.ClassConverter$DefaultClassConverter.convertClass(ClassConverter.java:214)
at com.android.tools.r8.ir.conversion.ClassConverter.lambda$internalConvertClasses$2(ClassConverter.java:154)
at com.android.tools.r8.utils.ThreadUtils.lambda$processItems$5(ThreadUtils.java:77)
at com.android.tools.r8.utils.ThreadUtils.lambda$processItems$7(ThreadUtils.java:102)
at com.android.tools.r8.utils.ThreadUtils.lambda$processItemsWithResults$3(ThreadUtils.java:69)
cl...@google.com <cl...@google.com> #3
This was fixed in
I think it needs to get backported to 3.3.
@Mkroghj you made the fix do you want to backport?
mk...@google.com <mk...@google.com> #4
There is something not right here. The only users of multiple field resolutions on the 3.3. branch should be TraceReferences. Looking at
The fix I did on
The cut of point for the 3.3. branch was:
commit 4b7378238560df3809f9868cd49ce2f3bd119d83 (tag: 3.3.28)
Author: Søren Gjesse <sgjesse@google.com>
Date: Thu Apr 7 11:44:44 2022 +0200
Version 3.3.28
Promote version 3.3.28-dev to 3.3.28.
Release branch for Android Studio 2021.3.1 (Dolphin) / AGP 7.3.
Change-Id: I0b3be8ce49553aef198bb4f79aaeb03049376b96
I therefore looked through the code on 3.3.75 and only TraceReferences sets InternalOptions.loadAllClassDefinitions = true
.
I try to force R8 with version 3.3.75, add classpath "com.android.tools:r8:3.3.75" in my dependencies in buildscript, but still not working.
What do you mean by trying to force R8 with version 3.3.75 because it seems like you are destroying the library desugaring in the process?
th...@gmail.com <th...@gmail.com> #5
I upgrade agp(7.0.4 -> 7.3.0) / gradle (7.3.3 -> 7.5.1), then compile failed.
I found a similar issue
buildscript {
ext.kotlin_version = '1.7.10'
ext.android_tools_build = '7.3.0'
repositories {
maven { url "https://jitpack.io" }
maven { url 'https://dl.google.com/dl/android/maven2/' }
maven { url 'https://repo1.maven.org/maven2/' }
}
dependencies {
classpath "com.android.tools.build:gradle:$android_tools_build"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.android.tools:r8:3.3.75" //new line
}
}
But still compile failed.
I have my own plugin in buildSrc and also upgrade dependencies in buildSrc.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation gradleApi()
implementation localGroovy()
implementation "com.android.tools.build:gradle:7.3.0"
implementation "com.android.tools.build:gradle-api:7.3.0"
implementation "com.android.tools:common:30.3.0"
...
Properties localProps = new Properties()
localProps.load(project.rootProject.file('../local.properties').newDataInputStream())
implementation files("${localProps.getProperty('sdk.dir')}/platforms/android-32/android.jar")
}
I wasn't sure if my buildSrc had any effect on this, so I removed all the code inside the apply
function, leaving only an empty apply
function. But still compile failed.
cl...@google.com <cl...@google.com> #6
Ok So the bottom line is that this should not happen, yet it does, so I'll backport the fix.
ap...@google.com <ap...@google.com> #7
Branch: 3.3
commit c1004b3e7c3d05a56988954dc12051fe6fb6cd3a
Author: Clément Béra <clementbera@google.com>
Date: Mon Sep 26 12:46:10 2022
Version 3.3.82
Bug:
Change-Id: I8674bb358a70401f30c9773209f255c6acd8669e
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #8
Branch: 3.3
commit 34cfc123f0370248f20fdda8fa925cd7c27d3233
Author: Clément Béra <clementbera@google.com>
Date: Mon Sep 26 12:45:37 2022
Ensure that field resolution will always have a result
Change-Id: Ib74c159a57b64d762d1995111e5660ba855d6f39
Bug:
M src/main/java/com/android/tools/r8/graph/FieldResolution.java
M src/main/java/com/android/tools/r8/graph/FieldResolutionResult.java
Description
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: Lbrut/androlib/res/decoder/AXmlResourceParser;require(ILjava/lang/String;Ljava/lang/String;)V, origin: D:\android-project\myproject\build.transforms\3161c3ea4f0fe747b28bcc4d04a830a9\transformed\classes.jar:brut/androlib/res/decoder/AXmlResourceParser.class
I try to force R8 with version 3.3.75, add
classpath "com.android.tools:r8:3.3.75"
in my dependencies in buildscript, but still not working.It works with agp 7.0.4 and 4.x.x, but not working with agp 7.3.0
Studio Build:Build #AI-213.7172.25.2113.9014738, built on September 1, 2022 Version of Gradle Plugin:7.3.0 Version of Gradle:7.5.1 Version of Java:11 OS:windows10