Fixed
Status Update
Comments
mk...@google.com <mk...@google.com> #2
Thank you for the report. There is a high probability that this error has already been fixed. Can I ask you to try the version 1.4.95 by adding the following to your build.gradle
buildscript {
repositories {
maven {
url 'http://storage.googleapis.com/r8-releases/raw '
}
}
dependencies {
classpath 'com.android.tools:r8:1.4.95' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
buildscript {
repositories {
maven {
url '
}
}
dependencies {
classpath 'com.android.tools:r8:1.4.95' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
fr...@gmail.com <fr...@gmail.com> #3
Sadly no success problem is still reproducible.
Tested with 1.4.95 and 1.5.54(Newest version suggested in AS) in both cases i got
Current version is: 1.4.95 (build db845e3ffe68c2d256c91c290c0ad2f0f445c24f from go/r8bot (luci-r8-ci-archive-0-t4qj)).
and
Current version is: 1.5.54 (build 347b4a25c8991312517a2129625fe076bcf0a710 from go/r8bot (luci-r8-ci-archive-0-7c6g)).
in build output so proper version suggested by you and later on by AS was used.
Tested with 1.4.95 and 1.5.54(Newest version suggested in AS) in both cases i got
Current version is: 1.4.95 (build db845e3ffe68c2d256c91c290c0ad2f0f445c24f from go/r8bot (luci-r8-ci-archive-0-t4qj)).
and
Current version is: 1.5.54 (build 347b4a25c8991312517a2129625fe076bcf0a710 from go/r8bot (luci-r8-ci-archive-0-7c6g)).
in build output so proper version suggested by you and later on by AS was used.
mk...@google.com <mk...@google.com> #4
Thanks for trying those versions out and thank you for supplying the sample. I will take a look.
mk...@google.com <mk...@google.com> #5
I have a small working reproduction of this issue. Basically, we have the following:
package com.mapbox.api.directions.v5;
public abstract class MapboxDirections extends MapboxService<DirectionsResponse, DirectionsService> {
...
protected abstract String baseUrl();
...
}
package com.mapbox.core;
public abstract class MapboxService<T, S> {
...
protected abstract String baseUrl();
...
}
R8 fails to observe that the protected in MapboxDirections.baseUrl() acts like a visiblity bridge. I will start working on a fix.
package com.mapbox.api.directions.v5;
public abstract class MapboxDirections extends MapboxService<DirectionsResponse, DirectionsService> {
...
protected abstract String baseUrl();
...
}
package com.mapbox.core;
public abstract class MapboxService<T, S> {
...
protected abstract String baseUrl();
...
}
R8 fails to observe that the protected in MapboxDirections.baseUrl() acts like a visiblity bridge. I will start working on a fix.
mk...@google.com <mk...@google.com> #6
For a quick fix you could add the following keep rule:
-keep class com.mapbox.api.directions.v5.MapboxDirections { protected <methods>; }
which will keep all visibility bridges.
-keep class com.mapbox.api.directions.v5.MapboxDirections { protected <methods>; }
which will keep all visibility bridges.
mk...@google.com <mk...@google.com> #7
The problem should now be fixed in version d47691811acac217ff214b25d9da6d45b6cda46a. Could you try it out by adding the following to your project build.gradle:
buildscript {
repositories {
maven {
url "http://storage.googleapis.com/r8-releases/raw/master "
}
}
dependencies {
classpath 'com.android.tools:r8:d47691811acac217ff214b25d9da6d45b6cda46a' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
buildscript {
repositories {
maven {
url "
}
}
dependencies {
classpath 'com.android.tools:r8:d47691811acac217ff214b25d9da6d45b6cda46a' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
fr...@gmail.com <fr...@gmail.com> #8
This indeed resolves the problem thanks a lot for quick response and action.👏
mk...@google.com <mk...@google.com> #9
Perfect - thank you for trying it out and reporting the error.
ap...@google.com <ap...@google.com> #10
Project: r8
Branch: d8-1.5
commit 93221b04c9c33dc8d7fd19507ddf0286086e6050
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Wed Jul 03 10:22:17 2019
Version 1.5.55
Cherry-pick: Test for incorrect removal of abstract visibility bridge
CL:https://r8-review.googlesource.com/c/r8/+/40152
Cherry-pick: Consider package name when comparing protected
accessflags
CL:https://r8-review.googlesource.com/c/r8/+/40154
Bug: 136195382
Change-Id: I1f365864387c3da1ba323c07c4991a5289d66594
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/graph/AccessFlags.java
M src/main/java/com/android/tools/r8/shaking/ScopedDexMethodSet.java
M src/main/java/com/android/tools/r8/shaking/StaticClassMerger.java
A src/test/java/com/android/tools/r8/shaking/b136195382/AbstractBridgeInheritTest.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package1/Factory.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package1/Service.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package2/Main.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package2/SubFactory.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package2/SubService.java
https://r8-review.googlesource.com/40301
Branch: d8-1.5
commit 93221b04c9c33dc8d7fd19507ddf0286086e6050
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Wed Jul 03 10:22:17 2019
Version 1.5.55
Cherry-pick: Test for incorrect removal of abstract visibility bridge
CL:
Cherry-pick: Consider package name when comparing protected
accessflags
CL:
Bug: 136195382
Change-Id: I1f365864387c3da1ba323c07c4991a5289d66594
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/graph/AccessFlags.java
M src/main/java/com/android/tools/r8/shaking/ScopedDexMethodSet.java
M src/main/java/com/android/tools/r8/shaking/StaticClassMerger.java
A src/test/java/com/android/tools/r8/shaking/b136195382/AbstractBridgeInheritTest.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package1/Factory.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package1/Service.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package2/Main.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package2/SubFactory.java
A src/test/java/com/android/tools/r8/shaking/b136195382/package2/SubService.java
Description
Android Gradle plugin 3.4
-dontobfuscate enabled for easier debugging
Logcat:
```
java.lang.IllegalAccessError: Method 'java.lang.String com.mapbox.core.MapboxService.baseUrl()' is inaccessible to class 'com.mapbox.api.directions.v5.DirectionsResponseFactory' (declaration of 'com.mapbox.api.directions.v5.DirectionsResponseFactory' appears in /data/app/com.mapbox.services.android.navigation.app-DeTpyD0zikNY9Pe-wE5e5g==/base.apk!classes2.dex)
at com.mapbox.api.directions.v5.DirectionsResponseFactory.generateRouteOptions(DirectionsResponseFactory.java:78)
at com.mapbox.api.directions.v5.DirectionsResponseFactory.generate(DirectionsResponseFactory.java:31)
at com.mapbox.api.directions.v5.MapboxDirections$1.onResponse(MapboxDirections.java:184)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6863)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
```
Bytecode with call resulting in crash:
com.mapbox.api.directions.v5.DirectionsResponseFactory
```
.line 78
invoke-virtual {v6}, Lcom/mapbox/core/MapboxService;->baseUrl()Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v6}, Lcom/mapbox/api/directions/v5/models/RouteOptions$Builder;->baseUrl(Ljava/lang/String;)Lcom/mapbox/api/directions/v5/models/RouteOptions$Builder;
iget-object v6, p0, Lcom/mapbox/api/directions/v5/DirectionsResponseFactory;->mapboxDirections:Lcom/mapbox/api/directions/v5/MapboxDirections;
```
Actual code and referenced class:
com.mapbox.api.directions.v5.MapboxDirections 75:
```
.baseUrl(mapboxDirections.baseUrl())
```
where mapboxDirections is instance of com.mapbox.api.directions.v5.MapboxDirections not MapboxService
Issue was spotted in app i am working on using third party sdk i reproduced it in sample from sdk provider with updated config to run R8 (it requires token to run but analysing APK which can be done without providing it shows the problem) :