Fixed
Status Update
Comments
ze...@google.com <ze...@google.com> #2
Disassemble of r8lib.jar (with mapping) for 1.5.69 matches the stacktrace:
.method MemberRebindingAnalysis.firstLibraryClassForInterfaceTarget(Ljava/lang/Object;LDexType;Ljava/util/function/BiFunction;)LDexType;
.limit stack 4
.limit locals 9
<snip>
10: L1: ; locals:
11: .line 15
12: invokeinterface java.util.function.BiFunction.apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
13: ifnull L2
14: aload 2
15: areturn
<snip>
Called from:
.method MemberRebindingAnalysis.validTargetFor(LDexMethod;LDexMethod;)LDexMethod;
<snip>
30: L6: ; locals:
31: .line 7
32: invokevirtual DexClass.isInterface()Z
33: ifeq L9
34: aload 0
35: aload 1
36: aload 2
37: L7: ; locals:
38: .line 8
39: getfield com.android.tools.r8.graph.DexType holder LDexType;
40: invokedynamic apply()Ljava/util/function/BiFunction;
41: L8: ; locals:
42: .line 9
43: invokespecial MemberRebindingAnalysis.firstLibraryClassForInterfaceTarget(Ljava/lang/Object;LDexType;Ljava/util/function/BiFunction;)LDexType;
44: astore 1
45: goto L11
It appears as if the invokedynamic @40 is creating a null value...
.method MemberRebindingAnalysis.firstLibraryClassForInterfaceTarget(Ljava/lang/Object;LDexType;Ljava/util/function/BiFunction;)LDexType;
.limit stack 4
.limit locals 9
<snip>
10: L1: ; locals:
11: .line 15
12: invokeinterface java.util.function.BiFunction.apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
13: ifnull L2
14: aload 2
15: areturn
<snip>
Called from:
.method MemberRebindingAnalysis.validTargetFor(LDexMethod;LDexMethod;)LDexMethod;
<snip>
30: L6: ; locals:
31: .line 7
32: invokevirtual DexClass.isInterface()Z
33: ifeq L9
34: aload 0
35: aload 1
36: aload 2
37: L7: ; locals:
38: .line 8
39: getfield com.android.tools.r8.graph.DexType holder LDexType;
40: invokedynamic apply()Ljava/util/function/BiFunction;
41: L8: ; locals:
42: .line 9
43: invokespecial MemberRebindingAnalysis.firstLibraryClassForInterfaceTarget(Ljava/lang/Object;LDexType;Ljava/util/function/BiFunction;)LDexType;
44: astore 1
45: goto L11
It appears as if the invokedynamic @40 is creating a null value...
ze...@google.com <ze...@google.com> #3
Daniel: could you confirm the 1.5.69 version? (./gradlew :app:minifyReleaseWithR8 --info) should print the R8 version on 3.5 I think (you may need to clean for the task to run).
We have added support for obtaining a dump of the inputs on 1.6.+. If you can share a dump file (attached here or privately with zerny@google.com), then that can be done by:
1. Amend the top-level build.gradle file with:
buildscript {
repositories {
maven {
url 'https://storage.googleapis.com/r8-releases/raw '
}
}
dependencies {
classpath 'com.android.tools:r8:1.6.71' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
2. and run:
./gradlew :app:minifyReleaseWithR8 -Dcom.android.tools.r8.dumpinputtofile=/path/to/write/dump.zip
should fail compilation with message:
> Task :app:minifyReleaseWithR8 FAILED
R8: Dumped compilation inputs to: /path/to/write/dump.zip
You can then share the dump.zip which contains the full input as classfiles and the full set of proguard rules.
Remember to remove the 1.6.71 line from your build.gradle after creating the dump.
We have added support for obtaining a dump of the inputs on 1.6.+. If you can share a dump file (attached here or privately with zerny@google.com), then that can be done by:
1. Amend the top-level build.gradle file with:
buildscript {
repositories {
maven {
url '
}
}
dependencies {
classpath 'com.android.tools:r8:1.6.71' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
2. and run:
./gradlew :app:minifyReleaseWithR8 -Dcom.android.tools.r8.dumpinputtofile=/path/to/write/dump.zip
should fail compilation with message:
> Task :app:minifyReleaseWithR8 FAILED
R8: Dumped compilation inputs to: /path/to/write/dump.zip
You can then share the dump.zip which contains the full input as classfiles and the full set of proguard rules.
Remember to remove the 1.6.71 line from your build.gradle after creating the dump.
[Deleted User] <[Deleted User]> #4
I sent you the dump privately. The stacktrace is now also more readable, but it ends with the same error.
ze...@google.com <ze...@google.com> #5
Hi Daniel, I can't locate the dump. Might it have been blocked due to attachment size?
ze...@google.com <ze...@google.com> #6
(Ignore #5. Found the dump)
ze...@google.com <ze...@google.com> #7
Attempting to reproduce with the I'm getting:
Error: Library class android.content.res.XmlResourceParser implements program class org.xmlpull.v1.XmlPullParser
Could you verify the AGP version listed in your top-level build.gradle file?
(The line "classpath 'com.android.tools.build:gradle:X.Y.Z'").
Also, do you know if you have any buildSrc in your project that may shadow the gradle version used?
Error: Library class android.content.res.XmlResourceParser implements program class org.xmlpull.v1.XmlPullParser
Could you verify the AGP version listed in your top-level build.gradle file?
(The line "classpath 'com.android.tools.build:gradle:X.Y.Z'").
Also, do you know if you have any buildSrc in your project that may shadow the gradle version used?
ap...@google.com <ap...@google.com> #8
Project: r8
Branch: master
commit ece8fc85a3bea4d22a3f2673256c5f0ce589b286
Author: Ian Zerny <zerny@google.com>
Date: Wed Feb 26 11:06:30 2020
Abort member rebinding on missing library class definition.
Bug: 149890887
Change-Id: I0c373c51364f07544dd67a5e23646f4d41da9b3f
M src/main/java/com/android/tools/r8/graph/DexMember.java
M src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
M src/test/java/com/android/tools/r8/TestBase.java
A src/test/java/com/android/tools/r8/regress/b149890887/MissingLibraryTargetTest.java
https://r8-review.googlesource.com/49087
Branch: master
commit ece8fc85a3bea4d22a3f2673256c5f0ce589b286
Author: Ian Zerny <zerny@google.com>
Date: Wed Feb 26 11:06:30 2020
Abort member rebinding on missing library class definition.
Bug: 149890887
Change-Id: I0c373c51364f07544dd67a5e23646f4d41da9b3f
M src/main/java/com/android/tools/r8/graph/DexMember.java
M src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
M src/test/java/com/android/tools/r8/TestBase.java
A src/test/java/com/android/tools/r8/regress/b149890887/MissingLibraryTargetTest.java
ap...@google.com <ap...@google.com> #9
Project: r8
Branch: 2.0
commit 348a807c68c9a20d1fb6e7ca08385bcf97d3dd0c
Author: Ian Zerny <zerny@google.com>
Date: Wed Feb 26 11:28:59 2020
Version 2.0.38
Cherry-pick: Abort member rebinding on missing library class definition.
CL:https://r8-review.googlesource.com/c/r8/+/49087
Bug: 149890887
Change-Id: Iab6dc393295ed71d0be2f879a602678060a4c1f6
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
M src/test/java/com/android/tools/r8/TestBase.java
A src/test/java/com/android/tools/r8/regress/b149890887/MissingLibraryTargetTest.java
https://r8-review.googlesource.com/49099
Branch: 2.0
commit 348a807c68c9a20d1fb6e7ca08385bcf97d3dd0c
Author: Ian Zerny <zerny@google.com>
Date: Wed Feb 26 11:28:59 2020
Version 2.0.38
Cherry-pick: Abort member rebinding on missing library class definition.
CL:
Bug: 149890887
Change-Id: Iab6dc393295ed71d0be2f879a602678060a4c1f6
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
M src/test/java/com/android/tools/r8/TestBase.java
A src/test/java/com/android/tools/r8/regress/b149890887/MissingLibraryTargetTest.java
ap...@google.com <ap...@google.com> #10
Project: r8
Branch: 1.6
commit 9b50aeeff096418b5d5f2a1fe52faae1570c3d1b
Author: Ian Zerny <zerny@google.com>
Date: Wed Feb 26 11:44:19 2020
Version 1.6.74
Cherry-pick: Abort member rebinding on missing library class definition.
CL:https://r8-review.googlesource.com/c/r8/+/49087
Bug: 149890887
Change-Id: Ife97fc579a45594f6aeb4cbe9959c0b77e763d46
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
M src/test/java/com/android/tools/r8/TestBase.java
A src/test/java/com/android/tools/r8/regress/b149890887/MissingLibraryTargetTest.java
https://r8-review.googlesource.com/49120
Branch: 1.6
commit 9b50aeeff096418b5d5f2a1fe52faae1570c3d1b
Author: Ian Zerny <zerny@google.com>
Date: Wed Feb 26 11:44:19 2020
Version 1.6.74
Cherry-pick: Abort member rebinding on missing library class definition.
CL:
Bug: 149890887
Change-Id: Ife97fc579a45594f6aeb4cbe9959c0b77e763d46
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
M src/test/java/com/android/tools/r8/TestBase.java
A src/test/java/com/android/tools/r8/regress/b149890887/MissingLibraryTargetTest.java
Description
[docker] Caused by: java.lang.NullPointerException
[docker] at com.android.tools.r8.s.d.a(:15)
[docker] at com.android.tools.r8.s.d.a(:21)
[docker] at com.android.tools.r8.s.d.a(:9)
[docker] at com.android.tools.r8.s.d.a(:77)
[docker] at com.android.tools.r8.s.d.a(:178)
[docker] at com.android.tools.r8.R8.a(:223)
[docker] at com.android.tools.r8.R8.c(:1)
[docker] at com.android.tools.r8.R8.b(:1)
[docker] at com.android.tools.r8.utils.t.a(:23)
[docker] at com.android.tools.r8.R8.runForTesting(:3)
[docker] at com.android.tools.r8.R8.run(:3)
[docker] at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:199)
Reported as Gradle 6.1.1, build tools 29.0.2 and AGP plugin 3.5.3.
AGP-3.5.3 ships with R8 1.5.69
Retraced stacktrace for 1.5.69:
Caused by: java.lang.NullPointerException
at com.android.tools.r8.optimize.MemberRebindingAnalysis.firstLibraryClassForInterfaceTarget(MemberRebindingAnalysis.java:80)
at com.android.tools.r8.optimize.MemberRebindingAnalysis.validTargetFor(MemberRebindingAnalysis.java:54)
at com.android.tools.r8.optimize.MemberRebindingAnalysis.computeMethodRebinding(MemberRebindingAnalysis.java:164)
at com.android.tools.r8.optimize.MemberRebindingAnalysis.run(MemberRebindingAnalysis.java:341)
at com.android.tools.r8.R8.run(R8.java:425)
at com.android.tools.r8.R8.run(R8.java:260)
at com.android.tools.r8.R8.lambda$runForTesting$1(R8.java:251)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:61)
at com.android.tools.r8.utils.ExceptionUtils.withR8CompilationHandler(ExceptionUtils.java:49)
at com.android.tools.r8.R8.runForTesting(R8.java:247)
at com.android.tools.r8.R8.run(R8.java:152)
NPE location: