Status Update
Comments
sg...@google.com <sg...@google.com> #2
Branch: main
commit 77b38bac8b835605eb4858334278b12933c007a4
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Fri Jun 17 11:41:49 2022
Consult api database during type strengthening
Bug:
Change-Id: I9e070782a2da544eba90b15c41d5b7281142cc3b
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
M src/main/java/com/android/tools/r8/androidapi/ComputedApiLevel.java
A src/test/java/com/android/tools/r8/apimodel/ApiModelTypeStrengtheningTest.java
A src/test/java/com/android/tools/r8/apimodel/ApiModelTypeStrengtheningAboveMinApiTest.java
M src/main/java/com/android/tools/r8/utils/AndroidApiLevelUtils.java
bs...@googlemail.com <bs...@googlemail.com> #3
Branch: 3.2
commit b6be4ce67ec9f9389dab9e8f4cac1b7bd97f38ca
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Fri Jun 17 12:46:55 2022
Version 3.2.69
Bug:
Change-Id: I6aa6dabc3902e9fa1cd5b8289ed3cbf0ba2a0548
M src/main/java/com/android/tools/r8/Version.java
ze...@google.com <ze...@google.com> #4
Branch: 3.2
commit 3cc0c8b3d67cc20bf6c1a8401871b6847bf792c6
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Fri Jun 17 12:46:41 2022
Consult api database during type strengthening
Bug:
Change-Id: I9e070782a2da544eba90b15c41d5b7281142cc3b
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
M src/main/java/com/android/tools/r8/androidapi/ComputedApiLevel.java
A src/test/java/com/android/tools/r8/apimodel/ApiModelTypeStrengtheningTest.java
A src/test/java/com/android/tools/r8/apimodel/ApiModelTypeStrengtheningAboveMinApiTest.java
M src/main/java/com/android/tools/r8/utils/AndroidApiLevelUtils.java
sg...@google.com <sg...@google.com> #5
Branch: 3.3
commit d1de9e74d3e4a847b89bf0b822bfd227e51be2e9
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Fri Jun 17 12:35:35 2022
Version 3.3.61
Bug:
Change-Id: Ic9c7674b0240eaac8ea94698f8806a5faf349cf3
M src/main/java/com/android/tools/r8/Version.java
sg...@google.com <sg...@google.com> #6
Branch: 3.3
commit 6b77d23ac1cbe5a201b4ec8f9c29ed59d438d1d1
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Fri Jun 17 12:33:24 2022
Consult api database during type strengthening
Bug:
Change-Id: I9e070782a2da544eba90b15c41d5b7281142cc3b
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
M src/main/java/com/android/tools/r8/androidapi/ComputedApiLevel.java
A src/test/java/com/android/tools/r8/apimodel/ApiModelTypeStrengtheningTest.java
A src/test/java/com/android/tools/r8/apimodel/ApiModelTypeStrengtheningAboveMinApiTest.java
M src/main/java/com/android/tools/r8/utils/AndroidApiLevelUtils.java
sg...@google.com <sg...@google.com> #7
Branch: 3.2
commit 3cc0c8b3d67cc20bf6c1a8401871b6847bf792c6
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Fri Jun 17 12:46:41 2022
Consult api database during type strengthening
Bug:
Change-Id: I9e070782a2da544eba90b15c41d5b7281142cc3b
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
M src/main/java/com/android/tools/r8/androidapi/ComputedApiLevel.java
A src/test/java/com/android/tools/r8/apimodel/ApiModelTypeStrengtheningTest.java
A src/test/java/com/android/tools/r8/apimodel/ApiModelTypeStrengtheningAboveMinApiTest.java
M src/main/java/com/android/tools/r8/utils/AndroidApiLevelUtils.java
bs...@googlemail.com <bs...@googlemail.com> #8
Thanks for testing out R8 3.3. This should now be fixed in 3.3.61.
bs...@googlemail.com <bs...@googlemail.com> #9
I'm still seeing this after 3.3.61. I'll share a dump over email
bs...@googlemail.com <bs...@googlemail.com> #11
Branch: main
commit eb0ee8c2fc5a4fb328bc509a174bdc1fa0b3b8fb
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Fri Jun 24 19:30:20 2022
Consult api database for parameter type strengthening
Bug:
Change-Id: I86f622807ae0bc7e77bf63566606ef5b4708b8bf
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
sg...@google.com <sg...@google.com> #12
Branch: 3.3
commit 981a1edf73a6977c77857d85cad9409f22093ce5
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Mon Jun 27 08:33:50 2022
Version 3.3.67
Bug:
Change-Id: I1f46f8b1f5119ffc7257adaa384ad548125e1197
M src/main/java/com/android/tools/r8/Version.java
sg...@google.com <sg...@google.com> #13
Branch: 3.3
commit 00cb17cc2fe36a3ef23dc4736051da67c91d537d
Author: Christoffer Quist Adamsen <christofferqa@google.com>
Date: Mon Jun 27 08:32:51 2022
Consult api database for parameter type strengthening
Bug:
Change-Id: I86f622807ae0bc7e77bf63566606ef5b4708b8bf
M src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorProgramOptimizer.java
ap...@google.com <ap...@google.com> #14
Fix for parameter types landed in 3.3.67.
ap...@google.com <ap...@google.com> #15
Thank you for your patience while our engineering team worked to resolve this issue. A fix for this issue is now available in:
- Android Studio Dolphin Beta 5 (2021.3.1.14)
- Android Gradle Plugin 7.3.0-beta05
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Thank you for taking the time to submit feedback — we really appreciate it!
ap...@google.com <ap...@google.com> #16
Branch: 3.3
commit 8af811f40b0ae35db32fae3ee6a0ffbff8b98b48
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:29:13 2022
Version 3.3.36
Bug:
Change-Id: Ic85b9f2e6fec991e117b1a9c405e06352b4b18af
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #17
Branch: 3.3
commit b82face4da1b9bfbb0c12f6754a565199d196ffd
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:27:53 2022
Don't remove casts to arrays of interface types
All Dalvik and Art runtimes can reject code with VerifyError if when
joining arrays of interface types.
Bug:
Change-Id: If47782d76b706152f6e14b1238114dc89bc23119
M src/test/java/com/android/tools/r8/ir/optimize/checkcast/InterfaceArrayCheckCastTest.java
M src/test/java/com/android/tools/r8/ir/optimize/checkcast/ArrayInterfaceArrayCheckCastTest.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
ap...@google.com <ap...@google.com> #18
Branch: 3.3
commit b3e66f6513d099c8de81d733352b31d2df1fa704
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:26:53 2022
Add a reproduction of the Scala libraries interface array cast issue
Bug:
Change-Id: I56caa6331bd1eb501d356f1f4660899251ae7feb
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/InterfaceArrayCheckCastTest.java
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/ArrayInterfaceArrayCheckCastTest.java
ap...@google.com <ap...@google.com> #19
Branch: 3.1
commit 4d25053d92089deff0616d98e0c982ceb34715df
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:36:24 2022
Version 3.1.75
Bug:
Change-Id: I1b2b87b3a43ce75fb0945dfb2d85651ad8cdd704
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #20
Branch: 3.1
commit ab28ed0f89ef6eb110d2cc519215eaeebf0364a9
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:35:06 2022
Don't remove casts to arrays of interface types
All Dalvik and Art runtimes can reject code with VerifyError if when
joining arrays of interface types.
Bug:
Change-Id: If47782d76b706152f6e14b1238114dc89bc23119
M src/test/java/com/android/tools/r8/ir/optimize/checkcast/InterfaceArrayCheckCastTest.java
M src/test/java/com/android/tools/r8/ir/optimize/checkcast/ArrayInterfaceArrayCheckCastTest.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
ap...@google.com <ap...@google.com> #21
Branch: 3.1
commit 1dff43386d76218e0136528c31e1f9dc4e704f39
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:34:27 2022
Add a reproduction of the Scala libraries interface array cast issue
Bug:
Change-Id: I56caa6331bd1eb501d356f1f4660899251ae7feb
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/InterfaceArrayCheckCastTest.java
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/ArrayInterfaceArrayCheckCastTest.java
ap...@google.com <ap...@google.com> #22
Branch: 3.2
commit 993b6d6d1c19811db5b6c654fc82ed928672371c
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:33:00 2022
Version 3.2.61
Bug:
Change-Id: I618e02d188f619dcf3d06a0203047bfaa0071403
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #23
Branch: 3.2
commit 85ea0af317ea02c343b6f35165a21f6d5503739e
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:31:55 2022
Don't remove casts to arrays of interface types
All Dalvik and Art runtimes can reject code with VerifyError if when
joining arrays of interface types.
Bug:
Change-Id: If47782d76b706152f6e14b1238114dc89bc23119
M src/test/java/com/android/tools/r8/ir/optimize/checkcast/InterfaceArrayCheckCastTest.java
M src/test/java/com/android/tools/r8/ir/optimize/checkcast/ArrayInterfaceArrayCheckCastTest.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
ap...@google.com <ap...@google.com> #24
Branch: 3.2
commit bc24725b87b446e4242f3f7a03f9ac4a48f3c39d
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:31:11 2022
Add a reproduction of the Scala libraries interface array cast issue
Bug:
Change-Id: I56caa6331bd1eb501d356f1f4660899251ae7feb
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/InterfaceArrayCheckCastTest.java
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/ArrayInterfaceArrayCheckCastTest.java
ap...@google.com <ap...@google.com> #25
Branch: 3.1
commit ab28ed0f89ef6eb110d2cc519215eaeebf0364a9
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:35:06 2022
Don't remove casts to arrays of interface types
All Dalvik and Art runtimes can reject code with VerifyError if when
joining arrays of interface types.
Bug:
Change-Id: If47782d76b706152f6e14b1238114dc89bc23119
M src/test/java/com/android/tools/r8/ir/optimize/checkcast/InterfaceArrayCheckCastTest.java
M src/test/java/com/android/tools/r8/ir/optimize/checkcast/ArrayInterfaceArrayCheckCastTest.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
ap...@google.com <ap...@google.com> #26
Branch: 3.1
commit 1dff43386d76218e0136528c31e1f9dc4e704f39
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue May 03 14:34:27 2022
Add a reproduction of the Scala libraries interface array cast issue
Bug:
Change-Id: I56caa6331bd1eb501d356f1f4660899251ae7feb
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/InterfaceArrayCheckCastTest.java
A src/test/java/com/android/tools/r8/ir/optimize/checkcast/ArrayInterfaceArrayCheckCastTest.java
sg...@google.com <sg...@google.com> #27
This is now fixed, and the fix had been cherry-picked to the 3.1, 3.2 and 3.3 branches. For AGP 7.1, 7.2 and 7.3 the R8 versions with the fix are 3.1.75, 3.2.61 and 3.3.36 respectively.
Building on your r8-enabled
branch with this patch:
@@ -11,10 +11,13 @@ buildscript {
repositories {
google()
gradlePluginPortal()
+ maven {
+ url = uri("https://storage.googleapis.com/r8-releases/raw")
+ }
}
dependencies {
// Android Gradle Plugin 4.2.0: problems minifying; 7.x: enableR8=false removed
- classpath 'com.android.tools:r8:3.1.51' //Must be before the Gradle Plugin for Android. - Or any other version
+ classpath 'com.android.tools:r8:3.1.75' //Must be before the Gradle Plugin for Android. - Or any other version
classpath "com.android.tools.build:gradle:7.1.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
no longer removes the check-cast
causing the verification error on Android, as the code for scala.collection.immutable.TrieIterator.getElems
looks like this:
.method private getElems(Lscala/collection/immutable/Iterable;)[Lscala/collection/immutable/Iterable;
.locals 1
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lscala/collection/immutable/Iterable<",
"TT;>;)[",
"Lscala/collection/immutable/Iterable<",
"TT;>;"
}
.end annotation
.line 40
instance-of v0, p1, Lscala/collection/immutable/HashMap$HashTrieMap;
if-eqz v0, :cond_0
check-cast p1, Lscala/collection/immutable/HashMap$HashTrieMap;
invoke-virtual {p1}, Lscala/collection/immutable/HashMap$HashTrieMap;->elems()[Lscala/collection/immutable/HashMap;
move-result-object p1
goto :goto_0
.line 42
:cond_0
instance-of v0, p1, Lscala/collection/immutable/HashSet$HashTrieSet;
if-eqz v0, :cond_1
check-cast p1, Lscala/collection/immutable/HashSet$HashTrieSet;
invoke-virtual {p1}, Lscala/collection/immutable/HashSet$HashTrieSet;->elems()[Lscala/collection/immutable/HashSet;
move-result-object p1
.line 40
:goto_0
check-cast p1, [Lscala/collection/immutable/Iterable;
return-object p1
:cond_1
new-instance v0, Lscala/MatchError;
invoke-direct {v0, p1}, Lscala/MatchError;-><init>(Ljava/lang/Object;)V
throw v0
.end method
bs...@googlemail.com <bs...@googlemail.com> #28
I am not familiar how you do releases - is this release good to use in production or should I wait for the integration until it is available on the main google maven repo?
sg...@google.com <sg...@google.com> #29
Thank you for confirming that the issues has been fixed.
These versions are for production. Most likely there will not be any more patch releases of AGP 7.1, so explicitly using R8 3.1.75 is the only way to get this fix into AGP 7.1. For AGP 7.2 this fix will also most likely not be in the first release and until AGP 7.2.1 explicitly using R8 3.2.61 will also be required. For AGP 7.3 the fix will most likely be in Beta 2.
de...@google.com <de...@google.com> #30
Thank you for your patience while our engineering team worked to resolve this issue. A fix for this issue is now available in:
- Android Studio Dolphin Beta 2 (2021.3.1.11)
- Android Gradle Plugin 7.3.0-beta02
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Thank you for taking the time to submit feedback — we really appreciate it!
Description
I am using Scala 2.11 libraries in my Android project. With Proguard, shrinking worked well. When switching to R8, I got a VerifyError on calling some methods using Scala collection classes:
java.lang.VerifyError: Rejecting class scala.collection.immutable.HashMap$HashTrieMap$$anon$1 that attempts to sub-type erroneous class scala.collection.immutable.TrieIterator (declaration of 'scala.collection.immutable.HashMap$HashTrieMap$$anon$1'
I have
-keep class scala.collection.** { *; }
in my proguard-rules.pro
Any help is appreciated since using Proguard is not possible with APG 7.x