Status Update
Comments
ze...@google.com <ze...@google.com> #2
ku...@gmail.com <ku...@gmail.com> #3
Guys, hello! Sample to reproduce in attachments)
ze...@google.com <ze...@google.com> #4
Sorry I was not clear before. The API java.lang.reflect.Executable
does not exist on Android 7 (API 24) so it is expected for a program trying to use it to fail with this error. Is there a specific reason you expect the program to behave differently? Is the call to the unavailable API guarded by an SDK version check?
ku...@gmail.com <ku...@gmail.com> #5
The application does not use java.lang.reflect.Executable
, such code generates R8 itself. It replaces java.lang.reflect.Constructor with java.lang.reflect.Executable during the minification process but it shouldn't do that.
Please, try to run Sample Project and compare result with and without minification enabled.
ze...@google.com <ze...@google.com> #6
Thank for the added info! That is indeed an error and looks like a case where the compilers API modeling is missing something.
mk...@google.com <mk...@google.com> #7
Retraced stacktrace:
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/lang/reflect/Executable;
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at com.squareup.moshi.ClassFactory.get(ClassFactory.java)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at com.squareup.moshi.AccessObject.toString(AccessObject.java)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at com.example.myapplication.MainActivity.onCreate(MainActivity.java:12)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.app.Activity.performCreate(Activity.java:6664)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.app.ActivityThread.-wrap12(ActivityThread.java)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.os.Handler.dispatchMessage(Handler.java:102)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.os.Looper.loop(Looper.java:154)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at android.app.ActivityThread.main(ActivityThread.java:6077)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at java.lang.reflect.Method.invoke(Native Method)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: Caused by: java.lang.ClassNotFoundException: Didn't find class "java.lang.reflect.Executable" on path: DexPathList[[zip file "/data/app/com.example.myapplication-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-1/lib/x86, /system/lib, /vendor/lib]]
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
07-04 03:32:26.888 1766 1792 E ActivityControllerCore: at java.lang.ClassLoader.loadClass(ClassLoader.java:312
ku...@gmail.com <ku...@gmail.com> #8
Hi, guys. Do you have any news?
mk...@google.com <mk...@google.com> #9
I have a CL up that fixes this but I am holding it back until other fixes has landed. This issue will be updated when the fix lands.
ap...@google.com <ap...@google.com> #10
Branch: main
commit 093e2182a130ecdeb3a2a0e3bbfd00eb4f97cbdd
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Fri Jul 07 11:20:25 2023
Ensure that merged parameter is api safe
Bug:
Change-Id: Ifa30fed27c283906b9ce89835ba8c268c9430190
M src/main/java/com/android/tools/r8/graph/DexTypeUtils.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/ClInitMergeSuperTypeApiLevelTest.java
ap...@google.com <ap...@google.com> #11
Branch: main
commit ad3e5defb88d164a5a4254f6e61a908da47e5011
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Fri Jul 07 11:19:06 2023
Add test for rewriting of merged constructor to newer api type
Bug:
Change-Id: I28d1bbfaba5249aa789f8ed47e68bbf915c04926
A src/test/java/com/android/tools/r8/classmerging/horizontal/ClInitMergeSuperTypeApiLevelTest.java
M src/test/java/com/android/tools/r8/utils/codeinspector/TypeSubject.java
ap...@google.com <ap...@google.com> #12
Branch: 8.1
commit 37f711090c766587b47207027c136a4f7ff4cbf4
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Jul 11 10:21:27 2023
Version 8.1.59
Bug:
Change-Id: I6b25e0a05e1ca410e249276a5bc718d9449487d3
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #13
Branch: 8.1
commit c0e7df085b8a905b55f8baf738d8bc791fa4b2c0
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Jul 11 10:21:16 2023
Ensure that merged parameter is api safe
Bug:
Change-Id: Ifa30fed27c283906b9ce89835ba8c268c9430190
M src/main/java/com/android/tools/r8/graph/DexTypeUtils.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/ClInitMergeSuperTypeApiLevelTest.java
ap...@google.com <ap...@google.com> #14
Branch: 8.1
commit d2a198434799da1a13f7819cee31f2addcd87c35
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Jul 11 10:21:04 2023
Add test for rewriting of merged constructor to newer api type
Bug:
Change-Id: I28d1bbfaba5249aa789f8ed47e68bbf915c04926
A src/test/java/com/android/tools/r8/classmerging/horizontal/ClInitMergeSuperTypeApiLevelTest.java
M src/test/java/com/android/tools/r8/utils/codeinspector/TypeSubject.java
ap...@google.com <ap...@google.com> #15
Branch: 8.0
commit 8ddade1a3107b288105d14860b58a15a14c9b484
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Wed Jul 12 09:49:48 2023
Version 8.0.57
Bug:
Change-Id: Ia027d76f698ce4a4d2a2ef22218e9462fcef7e8c
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #16
Branch: 8.0
commit e5088be717104530fa360b67acde8ab0619bca6a
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Wed Jul 12 09:49:38 2023
Ensure that merged parameter is api safe
Bug:
Change-Id: Ifa30fed27c283906b9ce89835ba8c268c9430190
M src/main/java/com/android/tools/r8/graph/DexTypeUtils.java
M src/test/java/com/android/tools/r8/classmerging/horizontal/ClInitMergeSuperTypeApiLevelTest.java
ap...@google.com <ap...@google.com> #17
Branch: 8.0
commit da09d4f505a8c26b8e2f752e75c59c7edabfcf14
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Wed Jul 12 09:49:25 2023
Add test for rewriting of merged constructor to newer api type
Bug:
Change-Id: I28d1bbfaba5249aa789f8ed47e68bbf915c04926
A src/test/java/com/android/tools/r8/classmerging/horizontal/ClInitMergeSuperTypeApiLevelTest.java
M src/test/java/com/android/tools/r8/utils/codeinspector/TypeSubject.java
mk...@google.com <mk...@google.com> #18
I just verified that running with version 8.0.57 in the reproduction solves the issue. I cannot speak to when this will be merged into AGP/Studio, but for anyone else seeing this problem, you can define the dependency by modifying build.gradle :
buildscript {
dependencies {
classpath 'com.android.tools:r8:8.0.57' // Must be before the Gradle Plugin for Android.
}
}
and settings.gradle:
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
maven {
url 'https://storage.googleapis.com/r8-releases/raw'
}
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {
url 'https://storage.googleapis.com/r8-releases/raw'
}
}
}
mk...@google.com <mk...@google.com>
vl...@gmail.com <vl...@gmail.com> #19
ze...@google.com <ze...@google.com> #20
This fix did not make any releases of AGP 8.0 or for the release of AGP 8.1.0. If you are using either of those you will need to manually link to a fixed R8 version as detailed in
This fix is included in AGP 8.1.1 (which shipped with R8 version 8.1.65) and onward.
Description
App crases on Android 7