Status Update
Comments
ze...@google.com <ze...@google.com> #2
We encountered a very similar problem when upgrading to Android Studio 3.5 (Buildtools 3.5.0). But by using the R8 version above (5228491bf88bf17ad14a06abc8286fdd8f39b139) nearly all the mappings got resolved. But there is still 2 left.
R8: Missing class: org.easymock.IArgumentMatcher
R8: Missing class: java.beans.PropertyEditorSupport
R8: Missing class: org.jmock.core.Constraint
R8: 'boolean handleMessage(android.os.Message)' already has a mapping
R8: 'boolean handleMessage(android.os.Message)' already has a mapping
I don't know if those 3 first there are also errors, or just warnings. I also tested Android studio 3.6 with gradle version 3.5 and build tools 3.6.0-alpha10, but it gave the same result. I don't know where handleMessage comes from, but it is at least not from our code. Please tell me if there is any more information I could provide to make it easier to look into this matter.
- ØØ -
mk...@google.com <mk...@google.com> #3
I assume we are able to remove an argument for one of the mapped methods and therefore you would need a keep rule for one of them. Until we have extended the mapping information with argument removal information, we are unable to solve this automagically :(
oy...@encapsecurity.com <oy...@encapsecurity.com> #4
There is many places with handleMessage in the map file. But I guess we are only interested in the parts that return boolean. In which case there is only two places. And I think the first one is the culprit. Snippets from the map file:
---
# compiler: R8
# compiler_version: 1.6.21-dev
# min_api: 18
# compiler_hash: 5228491bf88bf17ad14a06abc8286fdd8f39b139
# pg_map_id: 002a261
...
com.google.android.gms.common.api.internal.GoogleApiManager -> com.google.android.gms.common.api.internal.GoogleApiManager:
com.google.android.gms.common.GoogleApiAvailability zaie -> e
long zaia -> b
com.google.android.gms.common.api.internal.zaae zaij -> j
long zahz -> a
java.lang.Object lock -> p
long zaib -> c
android.content.Context zaid -> d
java.util.concurrent.atomic.AtomicInteger zaih -> h
com.google.android.gms.common.api.Status zahy -> o
com.google.android.gms.common.api.Status zahx -> n
java.util.concurrent.atomic.AtomicInteger zaig -> g
com.google.android.gms.common.internal.GoogleApiAvailabilityCache zaif -> f
java.util.Map zaii -> i
com.google.android.gms.common.api.internal.GoogleApiManager zaic -> q
android.os.Handler handler -> m
java.util.Set zaik -> k
java.util.Set zail -> l
void zaa(com.google.android.gms.common.api.GoogleApi) -> a
1:1:com.google.android.gms.common.GoogleApiAvailability com.google.android.gms.common.GoogleApiAvailability.getInstance():0:0 -> a
1:1:com.google.android.gms.common.api.internal.GoogleApiManager zab(android.content.Context):0 -> a
2:2:com.google.android.gms.common.api.internal.GoogleApiManager zab(android.content.Context):0:0 -> a
int zabd() -> a
3:3:android.app.PendingIntent com.google.android.gms.common.GoogleApiAvailability.getErrorResolutionPendingIntent(android.content.Context,com.google.android.gms.common.ConnectionResult):0:0 -> a
3:3:boolean com.google.android.gms.common.GoogleApiAvailability.zaa(android.content.Context,com.google.android.gms.common.ConnectionResult,int):0 -> a
3:3:boolean zac(com.google.android.gms.common.ConnectionResult,int):0 -> a
4:4:android.app.PendingIntent com.google.android.gms.common.ConnectionResult.getResolution():0:0 -> a
4:4:android.app.PendingIntent com.google.android.gms.common.GoogleApiAvailability.getErrorResolutionPendingIntent(android.content.Context,com.google.android.gms.common.ConnectionResult):0 -> a
4:4:boolean com.google.android.gms.common.GoogleApiAvailability.zaa(android.content.Context,com.google.android.gms.common.ConnectionResult,int):0 -> a
4:4:boolean zac(com.google.android.gms.common.ConnectionResult,int):0 -> a
5:5:int com.google.android.gms.common.ConnectionResult.getErrorCode():0:0 -> a
5:5:android.app.PendingIntent com.google.android.gms.common.GoogleApiAvailability.getErrorResolutionPendingIntent(android.content.Context,com.google.android.gms.common.ConnectionResult):0 -> a
5:5:boolean com.google.android.gms.common.GoogleApiAvailability.zaa(android.content.Context,com.google.android.gms.common.ConnectionResult,int):0 -> a
5:5:boolean zac(com.google.android.gms.common.ConnectionResult,int):0 -> a
6:6:android.app.PendingIntent com.google.android.gms.common.GoogleApiAvailabilityLight.getErrorResolutionPendingIntent(android.content.Context,int,int):0:0 -> a
6:6:android.app.PendingIntent com.google.android.gms.common.GoogleApiAvailability.getErrorResolutionPendingIntent(android.content.Context,int,int):0 -> a
6:6:android.app.PendingIntent com.google.android.gms.common.GoogleApiAvailability.getErrorResolutionPendingIntent(android.content.Context,com.google.android.gms.common.ConnectionResult):0 -> a
6:6:boolean com.google.android.gms.common.GoogleApiAvailability.zaa(android.content.Context,com.google.android.gms.common.ConnectionResult,int):0 -> a
6:6:boolean zac(com.google.android.gms.common.ConnectionResult,int):0 -> a
7:7:int com.google.android.gms.common.ConnectionResult.getErrorCode():0:0 -> a
7:7:boolean com.google.android.gms.common.GoogleApiAvailability.zaa(android.content.Context,com.google.android.gms.common.ConnectionResult,int):0 -> a
7:7:boolean zac(com.google.android.gms.common.ConnectionResult,int):0 -> a
8:8:android.app.PendingIntent com.google.android.gms.common.api.GoogleApiActivity.zaa(android.content.Context,android.app.PendingIntent,int):0:0 -> a
8:8:boolean com.google.android.gms.common.GoogleApiAvailability.zaa(android.content.Context,com.google.android.gms.common.ConnectionResult,int):0 -> a
8:8:boolean zac(com.google.android.gms.common.ConnectionResult,int):0 -> a
9:9:boolean com.google.android.gms.common.GoogleApiAvailability.zaa(android.content.Context,com.google.android.gms.common.ConnectionResult,int):0:0 -> a
9:9:boolean zac(com.google.android.gms.common.ConnectionResult,int):0 -> a
10:10:android.app.PendingIntent com.google.android.gms.common.GoogleApiAvailability.getErrorResolutionPendingIntent(android.content.Context,com.google.android.gms.common.ConnectionResult):0:0 -> a
10:10:boolean com.google.android.gms.common.GoogleApiAvailability.zaa(android.content.Context,com.google.android.gms.common.ConnectionResult,int):0 -> a
10:10:boolean zac(com.google.android.gms.common.ConnectionResult,int):0 -> a
1:1:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.GoogleApi.zak():0:0 -> b
1:1:void zab(com.google.android.gms.common.api.GoogleApi):0 -> b
2:2:void zab(com.google.android.gms.common.api.GoogleApi):0:0 -> b
void zao() -> b
com.google.android.gms.common.api.internal.GoogleApiManager zabc() -> c
1:1:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.internal.GoogleApiManager$zab.zac(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
1:1:boolean handleMessage(android.os.Message):0 -> handleMessage
2:2:boolean handleMessage(android.os.Message):0:0 -> handleMessage
3:3:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.internal.GoogleApiManager$zab.zac(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
3:3:boolean handleMessage(android.os.Message):0 -> handleMessage
4:4:boolean handleMessage(android.os.Message):0:0 -> handleMessage
5:5:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
5:5:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
5:5:boolean handleMessage(android.os.Message):0 -> handleMessage
6:6:android.os.Handler zaa(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
6:6:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
6:6:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
6:6:boolean handleMessage(android.os.Message):0 -> handleMessage
7:7:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
7:7:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
7:7:boolean handleMessage(android.os.Message):0 -> handleMessage
8:8:android.os.Handler zaa(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
8:8:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
8:8:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
8:8:boolean handleMessage(android.os.Message):0 -> handleMessage
9:9:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
9:9:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
9:9:boolean handleMessage(android.os.Message):0 -> handleMessage
10:10:com.google.android.gms.common.Feature com.google.android.gms.common.api.internal.GoogleApiManager$zab.zad(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
10:10:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
10:10:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
10:10:boolean handleMessage(android.os.Message):0 -> handleMessage
11:11:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
11:11:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
11:11:boolean handleMessage(android.os.Message):0 -> handleMessage
12:12:boolean com.google.android.gms.common.util.ArrayUtils.contains(java.lang.Object[],java.lang.Object):0:0 -> handleMessage
12:12:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
12:12:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
12:12:boolean handleMessage(android.os.Message):0 -> handleMessage
13:13:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
13:13:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zab(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
13:13:boolean handleMessage(android.os.Message):0 -> handleMessage
14:14:boolean handleMessage(android.os.Message):0:0 -> handleMessage
15:15:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.internal.GoogleApiManager$zab.zac(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
15:15:boolean handleMessage(android.os.Message):0 -> handleMessage
16:16:boolean handleMessage(android.os.Message):0:0 -> handleMessage
17:17:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.internal.GoogleApiManager$zab.zac(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
17:17:boolean handleMessage(android.os.Message):0 -> handleMessage
18:18:boolean handleMessage(android.os.Message):0:0 -> handleMessage
19:19:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
19:19:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,com.google.android.gms.common.api.internal.GoogleApiManager$zab):0 -> handleMessage
19:19:boolean handleMessage(android.os.Message):0 -> handleMessage
20:20:boolean handleMessage(android.os.Message):0:0 -> handleMessage
21:21:void com.google.android.gms.tasks.TaskCompletionSource.setResult(java.lang.Object):0:0 -> handleMessage
22:22:boolean handleMessage(android.os.Message):0:0 -> handleMessage
23:23:boolean com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms.common.api.internal.GoogleApiManager$zaa,boolean):0:0 -> handleMessage
23:23:boolean handleMessage(android.os.Message):0 -> handleMessage
24:24:void com.google.android.gms.tasks.TaskCompletionSource.setResult(java.lang.Object):0:0 -> handleMessage
25:25:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.internal.zaaf.zak():0:0 -> handleMessage
25:25:boolean handleMessage(android.os.Message):0 -> handleMessage
26:26:boolean handleMessage(android.os.Message):0:0 -> handleMessage
27:27:boolean com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabp():0:0 -> handleMessage
27:27:boolean handleMessage(android.os.Message):0 -> handleMessage
28:28:boolean handleMessage(android.os.Message):0:0 -> handleMessage
29:29:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaav():0:0 -> handleMessage
29:29:boolean handleMessage(android.os.Message):0 -> handleMessage
30:30:android.os.Handler zaa(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
30:30:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaav():0 -> handleMessage
30:30:boolean handleMessage(android.os.Message):0 -> handleMessage
31:31:void com.google.android.gms.common.internal.Preconditions.checkHandlerThread(android.os.Handler):0:0 -> handleMessage
31:31:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaav():0 -> handleMessage
31:31:boolean handleMessage(android.os.Message):0 -> handleMessage
32:32:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaav():0:0 -> handleMessage
32:32:boolean handleMessage(android.os.Message):0 -> handleMessage
33:33:com.google.android.gms.common.GoogleApiAvailability zah(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
33:33:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaav():0 -> handleMessage
33:33:boolean handleMessage(android.os.Message):0 -> handleMessage
34:34:android.content.Context zab(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
34:34:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaav():0 -> handleMessage
34:34:boolean handleMessage(android.os.Message):0 -> handleMessage
35:35:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaav():0:0 -> handleMessage
35:35:boolean handleMessage(android.os.Message):0 -> handleMessage
36:36:boolean handleMessage(android.os.Message):0:0 -> handleMessage
37:37:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.resume():0:0 -> handleMessage
37:37:boolean handleMessage(android.os.Message):0 -> handleMessage
38:38:android.os.Handler zaa(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
38:38:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.resume():0 -> handleMessage
38:38:boolean handleMessage(android.os.Message):0 -> handleMessage
39:39:void com.google.android.gms.common.internal.Preconditions.checkHandlerThread(android.os.Handler):0:0 -> handleMessage
39:39:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.resume():0 -> handleMessage
39:39:boolean handleMessage(android.os.Message):0 -> handleMessage
40:40:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.resume():0:0 -> handleMessage
40:40:boolean handleMessage(android.os.Message):0 -> handleMessage
41:41:boolean handleMessage(android.os.Message):0:0 -> handleMessage
42:42:com.google.android.gms.common.api.internal.BackgroundDetector com.google.android.gms.common.api.internal.BackgroundDetector.getInstance():0:0 -> handleMessage
42:42:boolean handleMessage(android.os.Message):0 -> handleMessage
43:43:boolean handleMessage(android.os.Message):0:0 -> handleMessage
44:44:com.google.android.gms.common.api.internal.BackgroundDetector com.google.android.gms.common.api.internal.BackgroundDetector.getInstance():0:0 -> handleMessage
44:44:boolean handleMessage(android.os.Message):0 -> handleMessage
45:45:boolean com.google.android.gms.common.api.internal.BackgroundDetector.readCurrentStateIfPossible(boolean):0:0 -> handleMessage
45:45:boolean handleMessage(android.os.Message):0 -> handleMessage
46:46:boolean com.google.android.gms.common.api.internal.BackgroundDetector.isInBackground():0:0 -> handleMessage
46:46:boolean com.google.android.gms.common.api.internal.BackgroundDetector.readCurrentStateIfPossible(boolean):0 -> handleMessage
46:46:boolean handleMessage(android.os.Message):0 -> handleMessage
47:47:boolean handleMessage(android.os.Message):0:0 -> handleMessage
48:48:int com.google.android.gms.common.api.internal.GoogleApiManager$zaa.getInstanceId():0:0 -> handleMessage
48:48:boolean handleMessage(android.os.Message):0 -> handleMessage
49:49:boolean handleMessage(android.os.Message):0:0 -> handleMessage
50:50:int com.google.android.gms.common.ConnectionResult.getErrorCode():0:0 -> handleMessage
50:50:boolean handleMessage(android.os.Message):0 -> handleMessage
51:51:java.lang.String com.google.android.gms.common.GoogleApiAvailabilityLight.getErrorString(int):0:0 -> handleMessage
51:51:java.lang.String com.google.android.gms.common.GoogleApiAvailability.getErrorString(int):0 -> handleMessage
51:51:boolean handleMessage(android.os.Message):0 -> handleMessage
52:52:java.lang.String com.google.android.gms.common.ConnectionResult.getErrorMessage():0:0 -> handleMessage
52:52:boolean handleMessage(android.os.Message):0 -> handleMessage
53:53:boolean handleMessage(android.os.Message):0:0 -> handleMessage
54:54:java.lang.String com.google.android.gms.common.GoogleApiAvailabilityLight.getErrorString(int):0:0 -> handleMessage
54:54:java.lang.String com.google.android.gms.common.GoogleApiAvailability.getErrorString(int):0 -> handleMessage
54:54:boolean handleMessage(android.os.Message):0 -> handleMessage
55:55:boolean handleMessage(android.os.Message):0:0 -> handleMessage
56:56:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.GoogleApi.zak():0:0 -> handleMessage
56:56:boolean handleMessage(android.os.Message):0 -> handleMessage
57:57:boolean handleMessage(android.os.Message):0:0 -> handleMessage
58:58:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.GoogleApi.zak():0:0 -> handleMessage
58:58:boolean handleMessage(android.os.Message):0 -> handleMessage
59:59:boolean handleMessage(android.os.Message):0:0 -> handleMessage
60:60:java.util.Set com.google.android.gms.common.api.internal.zak.zap():0:0 -> handleMessage
60:60:boolean handleMessage(android.os.Message):0 -> handleMessage
61:61:boolean handleMessage(android.os.Message):0:0 -> handleMessage
62:62:void com.google.android.gms.common.ConnectionResult.<init>(int):0:0 -> handleMessage
62:62:boolean handleMessage(android.os.Message):0 -> handleMessage
63:63:boolean handleMessage(android.os.Message):0:0 -> handleMessage
64:64:boolean com.google.android.gms.common.api.internal.GoogleApiManager$zaa.isConnected():0:0 -> handleMessage
64:64:boolean handleMessage(android.os.Message):0 -> handleMessage
65:65:boolean handleMessage(android.os.Message):0:0 -> handleMessage
66:66:com.google.android.gms.common.api.Api$Client com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaab():0:0 -> handleMessage
66:66:boolean handleMessage(android.os.Message):0 -> handleMessage
67:67:boolean handleMessage(android.os.Message):0:0 -> handleMessage
68:68:com.google.android.gms.common.ConnectionResult com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabm():0:0 -> handleMessage
68:68:boolean handleMessage(android.os.Message):0 -> handleMessage
69:69:android.os.Handler zaa(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
69:69:com.google.android.gms.common.ConnectionResult com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabm():0 -> handleMessage
69:69:boolean handleMessage(android.os.Message):0 -> handleMessage
70:70:void com.google.android.gms.common.internal.Preconditions.checkHandlerThread(android.os.Handler):0:0 -> handleMessage
70:70:com.google.android.gms.common.ConnectionResult com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabm():0 -> handleMessage
70:70:boolean handleMessage(android.os.Message):0 -> handleMessage
71:71:com.google.android.gms.common.ConnectionResult com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabm():0:0 -> handleMessage
71:71:boolean handleMessage(android.os.Message):0 -> handleMessage
72:72:android.os.Handler zaa(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
72:72:com.google.android.gms.common.ConnectionResult com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabm():0 -> handleMessage
72:72:boolean handleMessage(android.os.Message):0 -> handleMessage
73:73:void com.google.android.gms.common.internal.Preconditions.checkHandlerThread(android.os.Handler):0:0 -> handleMessage
73:73:com.google.android.gms.common.ConnectionResult com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabm():0 -> handleMessage
73:73:boolean handleMessage(android.os.Message):0 -> handleMessage
74:74:com.google.android.gms.common.ConnectionResult com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabm():0:0 -> handleMessage
74:74:boolean handleMessage(android.os.Message):0 -> handleMessage
75:75:boolean handleMessage(android.os.Message):0:0 -> handleMessage
76:76:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms.common.api.internal.zak):0:0 -> handleMessage
76:76:boolean handleMessage(android.os.Message):0 -> handleMessage
77:77:android.os.Handler zaa(com.google.android.gms.common.api.internal.GoogleApiManager):0:0 -> handleMessage
77:77:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms.common.api.internal.zak):0 -> handleMessage
77:77:boolean handleMessage(android.os.Message):0 -> handleMessage
78:78:void com.google.android.gms.common.internal.Preconditions.checkHandlerThread(android.os.Handler):0:0 -> handleMessage
78:78:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms.common.api.internal.zak):0 -> handleMessage
78:78:boolean handleMessage(android.os.Message):0 -> handleMessage
79:79:void com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zaa(com.google.android.gms.common.api.internal.zak):0:0 -> handleMessage
79:79:boolean handleMessage(android.os.Message):0 -> handleMessage
80:80:boolean handleMessage(android.os.Message):0:0 -> handleMessage
...
com.google.android.gms.common.internal.zze -> b70:
android.os.Handler mHandler -> e
long zzdy -> h
long zzdx -> g
android.content.Context zzdv -> d
java.util.HashMap zzdu -> c
com.google.android.gms.common.stats.ConnectionTracker zzdw -> f
1:1:void com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection,java.lang.String):0:0 -> a
1:1:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
2:2:com.google.android.gms.common.stats.ConnectionTracker zzd(com.google.android.gms.common.internal.zze):0:0 -> a
2:2:void com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection,java.lang.String):0 -> a
2:2:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
3:3:android.content.Context zzc(com.google.android.gms.common.internal.zze):0:0 -> a
3:3:void com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection,java.lang.String):0 -> a
3:3:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
4:4:void com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection,java.lang.String):0:0 -> a
4:4:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
5:5:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0:0 -> a
6:6:boolean com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection):0:0 -> a
6:6:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
7:7:void com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection,java.lang.String):0:0 -> a
7:7:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
8:8:com.google.android.gms.common.stats.ConnectionTracker zzd(com.google.android.gms.common.internal.zze):0:0 -> a
8:8:void com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection,java.lang.String):0 -> a
8:8:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
9:9:android.content.Context zzc(com.google.android.gms.common.internal.zze):0:0 -> a
9:9:void com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection,java.lang.String):0 -> a
9:9:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
10:10:void com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection,java.lang.String):0:0 -> a
10:10:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
11:11:int com.google.android.gms.common.internal.zzf.getState():0:0 -> a
11:11:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
12:12:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0:0 -> a
13:13:android.content.ComponentName com.google.android.gms.common.internal.zzf.getComponentName():0:0 -> a
13:13:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
14:14:android.os.IBinder com.google.android.gms.common.internal.zzf.getBinder():0:0 -> a
14:14:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
15:15:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0:0 -> a
16:16:boolean com.google.android.gms.common.internal.zzf.isBound():0:0 -> a
16:16:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> a
17:17:boolean zza(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0:0 -> a
1:1:boolean com.google.android.gms.common.internal.zzf.zza(android.content.ServiceConnection):0:0 -> b
1:1:void zzb(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> b
2:2:void com.google.android.gms.common.internal.zzf.zzb(android.content.ServiceConnection,java.lang.String):0:0 -> b
2:2:void zzb(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> b
3:3:com.google.android.gms.common.stats.ConnectionTracker zzd(com.google.android.gms.common.internal.zze):0:0 -> b
3:3:void com.google.android.gms.common.internal.zzf.zzb(android.content.ServiceConnection,java.lang.String):0 -> b
3:3:void zzb(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> b
4:4:android.content.Context zzc(com.google.android.gms.common.internal.zze):0:0 -> b
4:4:void com.google.android.gms.common.internal.zzf.zzb(android.content.ServiceConnection,java.lang.String):0 -> b
4:4:void zzb(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> b
5:5:void com.google.android.gms.common.internal.zzf.zzb(android.content.ServiceConnection,java.lang.String):0:0 -> b
5:5:void zzb(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> b
6:6:boolean com.google.android.gms.common.internal.zzf.zzr():0:0 -> b
6:6:void zzb(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0 -> b
7:7:void zzb(com.google.android.gms.common.internal.GmsClientSupervisor$zza,android.content.ServiceConnection,java.lang.String):0:0 -> b
1:1:int com.google.android.gms.common.internal.zzf.getState():0:0 -> handleMessage
1:1:boolean handleMessage(android.os.Message):0 -> handleMessage
2:2:boolean handleMessage(android.os.Message):0:0 -> handleMessage
3:3:android.content.ComponentName com.google.android.gms.common.internal.zzf.getComponentName():0:0 -> handleMessage
3:3:boolean handleMessage(android.os.Message):0 -> handleMessage
4:4:android.content.ComponentName com.google.android.gms.common.internal.GmsClientSupervisor$zza.getComponentName():0:0 -> handleMessage
4:4:boolean handleMessage(android.os.Message):0 -> handleMessage
5:5:boolean handleMessage(android.os.Message):0:0 -> handleMessage
6:6:java.lang.String com.google.android.gms.common.internal.GmsClientSupervisor$zza.getPackage():0:0 -> handleMessage
6:6:boolean handleMessage(android.os.Message):0 -> handleMessage
7:7:boolean handleMessage(android.os.Message):0:0 -> handleMessage
8:8:boolean com.google.android.gms.common.internal.zzf.zzr():0:0 -> handleMessage
8:8:boolean handleMessage(android.os.Message):0 -> handleMessage
9:9:boolean com.google.android.gms.common.internal.zzf.isBound():0:0 -> handleMessage
9:9:boolean handleMessage(android.os.Message):0 -> handleMessage
10:10:void com.google.android.gms.common.internal.zzf.zzf(java.lang.String):0:0 -> handleMessage
10:10:boolean handleMessage(android.os.Message):0 -> handleMessage
11:11:android.os.Handler zzb(com.google.android.gms.common.internal.zze):0:0 -> handleMessage
11:11:void com.google.android.gms.common.internal.zzf.zzf(java.lang.String):0 -> handleMessage
11:11:boolean handleMessage(android.os.Message):0 -> handleMessage
12:12:void com.google.android.gms.common.internal.zzf.zzf(java.lang.String):0:0 -> handleMessage
12:12:boolean handleMessage(android.os.Message):0 -> handleMessage
13:13:com.google.android.gms.common.stats.ConnectionTracker zzd(com.google.android.gms.common.internal.zze):0:0 -> handleMessage
13:13:void com.google.android.gms.common.internal.zzf.zzf(java.lang.String):0 -> handleMessage
13:13:boolean handleMessage(android.os.Message):0 -> handleMessage
14:14:android.content.Context zzc(com.google.android.gms.common.internal.zze):0:0 -> handleMessage
14:14:void com.google.android.gms.common.internal.zzf.zzf(java.lang.String):0 -> handleMessage
14:14:boolean handleMessage(android.os.Message):0 -> handleMessage
15:15:void com.google.android.gms.common.stats.ConnectionTracker.unbindService(android.content.Context,android.content.ServiceConnection):0:0 -> handleMessage
15:15:void com.google.android.gms.common.internal.zzf.zzf(java.lang.String):0 -> handleMessage
15:15:boolean handleMessage(android.os.Message):0 -> handleMessage
16:16:void com.google.android.gms.common.internal.zzf.zzf(java.lang.String):0:0 -> handleMessage
16:16:boolean handleMessage(android.os.Message):0 -> handleMessage
17:17:void com.google.android.gms.common.stats.ConnectionTracker.unbindService(android.content.Context,android.content.ServiceConnection):0:0 -> handleMessage
17:17:void com.google.android.gms.common.internal.zzf.zzf(java.lang.String):0 -> handleMessage
17:17:boolean handleMessage(android.os.Message):0 -> handleMessage
18:18:boolean handleMessage(android.os.Message):0:0 -> handleMessage
----
I think the first part is the problem, as if I do this in the map file, it at least build (although no tests are found, but that is probably an unrelated problem):
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {*;}
I seem to be unable to make a more specific rule. For example this does not seem to work:
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {
public ** handleMessage(...);
}
- ØØ -
mk...@google.com <mk...@google.com> #5
1:1:boolean handleMessage(android.os.Message):0 -> handleMessage
2:2:boolean handleMessage(android.os.Message):0:0 -> handleMessage <----- PROBLEM
3:3:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.internal.GoogleApiManager$zab.zac(com.google.android.gms.common.api.internal.GoogleApiManager$zab):0:0 -> handleMessage
and
25:25:boolean handleMessage(android.os.Message):0 -> handleMessage
26:26:boolean handleMessage(android.os.Message):0:0 -> handleMessage <------ PROBLEM
27:27:boolean com.google.android.gms.common.api.internal.GoogleApiManager$zaa.zabp():0:0 -> handleMessage
The two lines are not showing up as inline-frames, so the mapper will take both of these as new mappings. I will have to investigate how these lines are written the way they are. For now, adding a keep-rule that ensure we are not inlining handleMessage should get you going. I think the following should be sufficient:
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {
boolean handleMessage(...);
}
(I think you would need *** and not ** in public ** handleMessage(...);)
> although no tests are found, but that is probably an unrelated problem:
Are you running -applymapping for instrumented tests? Great. Have you modified the rules that is added for running instrumented tests? We should not remove anything from the classes. We might rename stuff, but that would require junit or similar to be in your production app. Can you see if there are any such mappings in your mapping file?
oy...@encapsecurity.com <oy...@encapsecurity.com> #6
Fun fact. The androidTests in the project run in release by setting testBuildType to release in gradle. Just for fun, I tried to set it to debug, and configure debug with minifyEnabled=true and use the same proguard files as for release, and it found and ran the tests (with a lot of warnings). So I am not convinced this part of it is an R8 issue. But I don't know enough about it's inner workings to know what it could imply.
sg...@google.com <sg...@google.com> #7
Did you by any change try to add the keep rule that Morten suggested in
In debug mode R8 does not do any inlining, so the fact that it works in debug mode is an indication that the issue is related to inlining.
oy...@encapsecurity.com <oy...@encapsecurity.com> #8
I tried out the -keep rule. It did not work to use:
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {
boolean handleMessage(...);
}
It neither worked to do:
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {
public *** handleMessage(...);
}
The only thing I got working so far is to add this to the proguard file for the _app_ it self (not as a testProguardFile):
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {
*;
}
That will get me beyond the problem from the first comment in this issue, and too the task connectedXXXReleaseAndroidTest task, which then fails with no tests found.
mk...@google.com <mk...@google.com> #9
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {
boolean handleMessage(...);
}
to your main _app_ configuration. This keep rule needs to go into the _app_ keep-rule, the same place you put:
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {
*;
}
If that does not work, it is quite interesting, and it could point indicate that the mapping is not a result of inlining.
Regarding connectedXXXReleaseAndroidTest, are there any reason why you have a test proguard file? If none exists, AGP will automatically create a default configuration that includes:
-keep class * { *; }
-keepattributes *
-applymapping <mapping_produced_for_app>
To ensure all classes and members are kept with their attributes.
If a test proguard file file exists, it may be that AGP will not produce these default rules and you therefore have to add the above keep rules to your test proguard file. You can verify if that is infact the problem by looking at the test.apk by using a disassembler or APK-tool and see if test-classes and methods are there with the annotations needed. If all the members and annotations are there, and your tests are still not found, I would very much like to have a reproduction of your issue, to figure out what is going wrong.
mk...@google.com <mk...@google.com> #10
21:21:void com.google.android.gms.tasks.TaskCompletionSource.setResult(java.lang.Object):0:0 -> handleMessage
22:22:boolean handleMessage(android.os.Message):0:0 -> handleMessage
There seems to be a line missing that should look like:
21:21:boolean handleMessage(android.os.Message):0 -> handleMessage
I will try to see if I can reproduce why that is.
oy...@encapsecurity.com <oy...@encapsecurity.com> #11
The testProguardFile was added earlier to silence warnings, but I can see it also turned off optimisation and a few other things. So I tried now to completely remove that file. But the tests can still not be found.
The error:
com.android.builder.testing.ConnectedDevice > No tests found.[Nexus_5X_API_28_Android_9_x86_Google_Api_(AVD) - 9] FAILED
No tests found. This usually means that your test classes are not in the form that your test runner expects (e.g. don't inherit from TestCase or lack @Test annotations).
I used jadx-gui to take a quick look at what could be different in the test.apk that does not work, and the one that worked without R8. And nothing really stands out. The annotations are there, and the tests looks the same. The only "big" difference I can see in those packages is that the upgraded project adds a package called "defpackage" with 3 files. But I guess that is just something R8 needs to work. But just in case it is not, I'll copy paste the 3 files here:
package defpackage;
public /* synthetic */ class C$r8$backportedMethods$utility$Collections$emptyIterator {
}
---------
package defpackage;
public /* synthetic */ class a {
public static /* synthetic */ boolean a(Object obj, Object obj2) {
if (obj != obj2) {
if (obj == null || obj.equals(obj2) == null) {
return null;
}
}
return true;
}
}
--------
package defpackage;
public /* synthetic */ class b {
}
-------
As you are willing to have a look at a reproduction of this issue, I'll do my best to make an as small test sample as possible. I hope I can finish it done today, but it might take a bit more time.
mk...@google.com <mk...@google.com> #12
buildscript {
repositories {
maven {
url "
}
}
dependencies {
classpath 'com.android.tools:r8:7a905629010fb546afb21953c599a4f6b006110d' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
Also, if you could run with assertions enabled either by:
$ JAVA_OPTS="-ea" ./gradlew clean assembleRelease --no-daemon --stacktrace
or explicitly adding org.gradle.jvmargs=-ea in gradle.properties.
oy...@encapsecurity.com <oy...@encapsecurity.com> #13
When running:
JAVA_OPTS="-ea" ./gradlew clean app:assembleRelease --no-daemon --stacktrace
There was no stacktrace, which I guess was expected as building the app it self seems to work fine.
So I tried:
JAVA_OPTS="-ea" ./gradlew clean app:cAT --no-daemon --stacktrace
And it gave a stack trace, but I guess from a later stage than you expected. I can copy paste it here just for reference:
----
> Task :app:connectedXXXReleaseAndroidTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:connectedXXXReleaseAndroidTest'.
> There were failing tests. See the report at: file:///index.html
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:connectedXXXReleaseAndroidTest'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:151)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:148)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:141)
at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionStateTaskExecuter.execute(ResolveBeforeExecutionStateTaskExecuter.java:75)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:73)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.GradleException: There were failing tests. See the report at: file:///index.html
at com.android.build.gradle.internal.tasks.DeviceProviderInstrumentTestTask.doTaskAction(DeviceProviderInstrumentTestTask.java:226)
at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:51)
at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:31)
at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:91)
at com.android.build.gradle.internal.tasks.NonIncrementalTask.taskAction(NonIncrementalTask.kt:34)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:48)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:702)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:669)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:404)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:393)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:376)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:213)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$1(ExecuteStep.java:33)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:201)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:77)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:120)
... 35 more
----------
When it comes to the sample project, I had to start over, as I must have missed something the first time around. But it should be done within the next 30 hours, hopefully much earlier.
mk...@google.com <mk...@google.com> #14
Well actually, the app was not find since it seems like it was producing an incorrect mapping file. This is the place where it should have been caught, but for some reason it did not
OK, so now it did not report the duplicate mapping - which may be the reason why building of the app succeeded.
Do you have the keep rule:
-keep public class com.google.android.gms.common.api.internal.GoogleApiManager {
*;
}
in your proguard-configuration? If not, it seems like the version I send no longer have the error.
>> When it comes to the sample project, I had to start over, as I must have missed something the first time around. But it should be done within the next 30 hours, hopefully much earlier.
That is fine :)
oy...@encapsecurity.com <oy...@encapsecurity.com> #15
------
> Task :app:transformClassesAndResourcesWithR8ForXXXReleaseAndroidTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithR8ForXXXReleaseAndroidTest'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complete
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesAndResourcesWithR8ForXXXReleaseAndroidTest'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:151)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:148)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:141)
at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionStateTaskExecuter.execute(ResolveBeforeExecutionStateTaskExecuter.java:75)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:73)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.RuntimeException: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
at com.android.builder.profile.Recorder$Block.handleException(Recorder.java:55)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:108)
at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
at org.gradle.api.internal.project.taskfactory.IncrementalTaskInputsTaskAction.doExecute(IncrementalTaskInputsTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
at org.gradle.api.internal.project.taskfactory.AbstractIncrementalTaskAction.execute(AbstractIncrementalTaskAction.java:25)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:404)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:393)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:376)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:213)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:201)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:77)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:120)
... 35 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:77)
at com.android.tools.r8.utils.ExceptionUtils.withR8CompilationHandler(ExceptionUtils.java:53)
at com.android.tools.r8.R8.runForTesting(R8.java:237)
at com.android.tools.r8.R8.run(R8.java:165)
at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:199)
at com.android.build.gradle.internal.transforms.R8Transform.transform(R8Transform.kt:261)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:106)
... 87 more
Caused by: com.android.tools.r8.utils.AbortException: Error: offset: 0, line: 27319, column: 1, 'boolean handleMessage(android.os.Message)' already has a mapping
at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:101)
at com.android.tools.r8.naming.SeedMapper$Builder.build(SeedMapper.java:62)
at com.android.tools.r8.naming.SeedMapper.seedMapperFromInputStream(SeedMapper.java:77)
at com.android.tools.r8.naming.SeedMapper.seedMapperFromFile(SeedMapper.java:82)
at com.android.tools.r8.R8.run(R8.java:743)
at com.android.tools.r8.R8.run(R8.java:250)
at com.android.tools.r8.R8.lambda$runForTesting$1(R8.java:241)
at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:65)
... 95 more
* Get more help at
BUILD FAILED in 2m 41s
143 actionable tasks: 129 executed, 14 up-to-date
------
I am guessing that "line: 27319" is refering to the map file, and if so, it refers to this bit (the handleMessage line with 25:25 in front):
----
24:24:void com.google.android.gms.tasks.TaskCompletionSource.setResult(java.lang.Object):0:0 -> handleMessage
25:25:com.google.android.gms.common.api.internal.zai com.google.android.gms.common.api.internal.zaaf.zak():0:0 -> handleMessage
25:25:boolean handleMessage(android.os.Message):0 -> handleMessage
26:26:boolean handleMessage(android.os.Message):0:0 -> handleMessage
---
oy...@encapsecurity.com <oy...@encapsecurity.com> #16
Also note the switch in the build.gradle that switches to testBuildType release if you build from command line, and debug if you build from inside the IDE.
Hope it helps,
- ØØ -
mk...@google.com <mk...@google.com> #17
ap...@google.com <ap...@google.com> #18
Branch: master
commit a5c51ffac73e28c096a1c52a6a6bab59720c2891
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Fri Sep 27 11:56:05 2019
Do not inline methods on definitely null receivers
Currently we insert a throw null by inlining IR from the target of an
invoke when we see a definitely null receiver. This will cause a
SetInlineFrame to be created. This CL changes that to do nothing since
invokes on definitely null receivers should just be replaced by a
throw.
Bug: 140851070
Change-Id: I5e961145317d487960819d9c36ab2e5b1d8e9d96
M src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
M src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
M src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
A src/test/java/com/android/tools/r8/ir/optimize/inliner/InlinerShouldNotInlineDefinitelyNullTest.java
mk...@google.com <mk...@google.com> #19
buildscript {
repositories {
maven {
url "
}
}
dependencies {
classpath 'com.android.tools:r8:a5c51ffac73e28c096a1c52a6a6bab59720c2891' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
Hopefully that should allow for compiling your tests.
oy...@encapsecurity.com <oy...@encapsecurity.com> #20
1. I set the project back to the state where I could confirm the issue from the beginning of this issue.
2. Then set the R8 version to a5c51ffac73e28c096a1c52a6a6bab59720c2891 in the root build.gradle file.
3. Built
Conclusion There is no longer a build error where R8 complain about handleMessage is already mapped. So it looks fixed!
The project still does not find the connectedAndroidTests in that project though. So that part is not fixed by solving the handleMessage issue.
We used the old version of the runner, the androidx.test.runner.AndroidJUnit4, so I tried to update to androidx.test.ext.junit.runners.AndroidJUnit4. That did neither solve the problem So that part remains an enigma.
mk...@google.com <mk...@google.com> #21
ap...@google.com <ap...@google.com> #22
Branch: 1.6
commit 23dfd1f442ac4c3939873adf1a1d7b6c8a5bab25
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Oct 01 12:36:30 2019
Version 1.6.34
Cherry-pick: Do not inline methods on definitely null receivers
CL:
Bug: 140851070
Change-Id: If5c1caef21aefb174a3cd6184df80388c93d2aa5
M src/main/java/com/android/tools/r8/Version.java
M src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
M src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
M src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
[Deleted User] <[Deleted User]> #23
mk...@google.com <mk...@google.com> #24
buildscript {
repositories {
maven {
url '
}
}
dependencies {
classpath 'com.android.tools:r8:1.6.58' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
ma...@gmail.com <ma...@gmail.com> #25
I'm using Android Studio 3.5.3, and this sdk version :
def build_versions = [:]
build_versions.build_tools = "29.0.2"
build_versions.min_sdk = 19
build_versions.target_sdk = 29
ext.build_versions = build_versions
I'm still receiving this error on the newest version 1.6.58 :
AGPBI: {"kind":"error","text":"'void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface)' already has a mapping","sources":[{}],"tool":"R8"}
> Task :app:transformClassesAndResourcesWithR8ForDebugAndroidTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesAndResourcesWithR8ForDebugAndroidTest'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complete
mk...@google.com <mk...@google.com> #26
If that is the case I would like to see the mapping file because the method is not qualified, meaning it already is mapped to something else. Therefore, you might be able to find two methods on the form void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface) in the mapping file.
va...@gmail.com <va...@gmail.com> #27
[Deleted User] <[Deleted User]> #28
'void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface)' already has a mapping
my...@gmail.com <my...@gmail.com> #29
Same issue and
'void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface)' already has a mapping
mk...@google.com <mk...@google.com> #30
Is it possible to share the mapping files? The reporter in
if (methodMembers.put(signature, entry) != null) {
reporter.error(
ProguardMapError.duplicateSourceMember(
signature.toString(), this.originalName, entry.position));
}
So we are basically seeing the same signature twice, which may be an error in the mapping-parser. You can share the mapping file privately by sending it to
[Deleted User] <[Deleted User]> #31
I've got a 15mb mapping file that I can send along if that will help.
[Deleted User] <[Deleted User]> #32
Please double check you are using 1.6.58 by running the task with --info. R8 will print the version used.
Do you have any additional hints how to achieve this? I applied your suggestion from --info
it keeps printing the old version (1.5.69) - I've double and triple checked the order and tried to exclude r8 from the AGP dependency, I've run ./gradlew buildEnvironment
, which seems correct, there's only a single mention of r8
with version 1.6.84...
da...@spotify.com <da...@spotify.com> #33
Using Current version is: 1.6.84 (build 28c586565a5fcb10d6a3ae5b5752463454536706 from go/r8bot (luci-r8-ci-archive-0-w8wa)).
in AGP 3.6.2:
Forcibly removing the second mapping of void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface)
from the mapping.txt file through an added doLast
Gradle closure lets us move forward.
It then started failing for
R8: 'com.google.android.play.core.assetpacks.AssetPackState' cannot be mapped to 'Lcom/google/android/play/core/assetpacks/a;' because it is in conflict with an existing class with the same name. This usually happens when compiling a test application against a source application and having short generic names in the test application. Try giving 'Lcom/google/android/play/core/assetpacks/a;' a more specific name or add a keep rule to keep 'com.google.android.play.core.assetpacks.AssetPackState'.
R8: 'com.google.android.play.core.internal.f' cannot be mapped to 'Lcom/google/android/play/core/internal/f;' because it is in conflict with an existing class with the same name. This usually happens when compiling a test application against a source application and having short generic names in the test application. Try giving 'Lcom/google/android/play/core/internal/f;' a more specific name or add a keep rule to keep 'com.google.android.play.core.internal.f'.
but adding -keepnames
directives gets us past the issue.
mk...@google.com <mk...@google.com> #34
David, is it possible to share the mapping files, perhaps only the class snippets that define void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface)
privately by sending it to
Regarding you second problem, this is a duplicate of
ba...@google.com <ba...@google.com> #35
I just ran into the same issue, using r8 1.6.84: log file at
(FYI, the void zza(com.google.android.gms.common.internal.BaseGmsClient,int,android.os.IInterface)
itself is coming from
mk...@google.com <mk...@google.com> #36
There are definitely two entries in the file and it seems like they are inline lines but missing the destination. Can you shared the input and command such that I can reproduce it?
ba...@google.com <ba...@google.com> #37
ba...@google.com <ba...@google.com> #38
BTW, what I find interesting is that the mapping for line 345 is actually for the signature void access$000(com.google.android.gms.common.internal.BaseGmsClient,int)
in the SDK (note the missing android.os.IInterface
parameter).
jk...@google.com <jk...@google.com> #39 Restricted
ba...@google.com <ba...@google.com> #40
jk...@google.com <jk...@google.com> #41
I tried updating the permissions of the parent folder. Maybe that will help?
ba...@google.com <ba...@google.com> #42
mk...@google.com <mk...@google.com> #43
jkaihong@, the comment in #39 just shows Show Restricted Content
- it seems like I do not have permission to see the content.
ba...@google.com <ba...@google.com> #44
(FWIW, I can't see
mk...@google.com <mk...@google.com> #45
The project in
ba...@google.com <ba...@google.com> #46
There is an init.gradle.kts
script which does some additional transformations on the project to enable minification. Try
./gradlew --init-script=init.gradle.kts assemble assembleAndroidTest
With that I can reproduce the error locally.
mk...@google.com <mk...@google.com> #47
Just a small update. I have a local small reproduction of the issue and I can trace it back to unused argument removal. I am working on a fix but it is a bit more difficult than anticipated.
ap...@google.com <ap...@google.com> #48
Branch: master
commit b3244e3b210c0b34b012a623f63d7963e80db6ac
Author: Morten Krogh-Jespersen <mkroghj@google.com>
Date: Tue Jul 07 13:00:38 2020
Do not apply the graph lens to positions.
The positions are always in their original position.
Bug: 140851070
Change-Id: I79ec34f4aeaf88f818ef58778aead9f24cc41a6e
M src/main/java/com/android/tools/r8/R8.java
M src/main/java/com/android/tools/r8/graph/DexDebugEvent.java
M src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
M src/main/java/com/android/tools/r8/ir/code/Position.java
M src/main/java/com/android/tools/r8/ir/conversion/CfBuilder.java
A src/main/java/com/android/tools/r8/ir/conversion/CfSourceUtils.java
M src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java
M src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
M src/main/java/com/android/tools/r8/ir/desugar/LambdaRewriter.java
M src/main/java/com/android/tools/r8/shaking/Enqueuer.java
M src/main/java/com/android/tools/r8/utils/LineNumberOptimizer.java
M src/test/java/com/android/tools/r8/ir/optimize/unusedarguments/UnusedArgumentsCollisionMappingTest.java
mk...@google.com <mk...@google.com> #49
This is now fixed but it will probably not be rolled back to 2.0 or 2.1. To try it out, you can add the following to your top-level build.gradle file:
buildscript {
repositories {
maven {
url "https://storage.googleapis.com/r8-releases/raw/master"
}
}
dependencies {
classpath 'com.android.tools:r8:b3244e3b210c0b34b012a623f63d7963e80db6ac' // Must be before the Gradle Plugin for Android.
classpath 'com.android.tools.build:gradle:X.Y.Z' // Your current AGP version.
}
}
If not possible to use the version build on ToT (will be included in a -dev version soon), then a simple -keep rule on one of the offending methods will do the trick since this will keep the method signature.
re...@gmail.com <re...@gmail.com> #50
Get error:
Execution failed for task ':core_impl:minifyCnReleaseWithR8'.
> com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: offset: 0, line: 40280, column: 1
Caused by: com.android.tools.r8.internal.f: 'void <init>()' already has a mapping
at com.android.tools.r8.internal.JT.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:14)
at com.android.tools.r8.internal.JT.error(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:1)
at com.android.tools.r8.naming.i.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:12)
at com.android.tools.r8.naming.a0.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:236)
at com.android.tools.r8.naming.a0.b(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:308)
at com.android.tools.r8.naming.a0.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:13)
at com.android.tools.r8.naming.f0.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:5)
at com.android.tools.r8.graph.g.O(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:5)
at com.android.tools.r8.R8.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:1430)
at com.android.tools.r8.R8.b(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:1)
at com.android.tools.r8.internal.Fj.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:24)
... 103 more
Suppressed: java.lang.RuntimeException: com.android.tools.r8.internal.f: 'void <init>()' already has a mapping
at com.android.tools.r8.internal.JT.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:25)
at com.android.tools.r8.naming.e0.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:8)
at com.android.tools.r8.naming.f0.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:6)
at com.android.tools.r8.graph.g.O(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:5)
at com.android.tools.r8.R8.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:1430)
at com.android.tools.r8.R8.b(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:1)
at com.android.tools.r8.internal.Fj.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:24)
at com.android.tools.r8.R8.a(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:25)
at com.android.tools.r8.R8.run(R8_3.3.75_b7a6ff6b13548611571508fe72282c9167faa649161ca0013edfc92e19bd7e58:3)
at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:247)
at com.android.build.gradle.internal.tasks.R8Task$Companion.shrink(R8Task.kt:472)
at com.android.build.gradle.internal.tasks.R8Task.doTaskAction(R8Task.kt:334)
at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:74)
at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:34)
at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:91)
at com.android.build.gradle.internal.tasks.NonIncrementalTask.taskAction(NonIncrementalTask.kt:57)
at jdk.internal.reflect.GeneratedMethodAccessor6917.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:49)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:727)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:694)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:568)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:553)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:536)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:109)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:276)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:265)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$1(ExecuteStep.java:33)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:63)
at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54)
at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:153)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:67)
at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:41)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85)
at java.base/java.util.Optional.map(Optional.java:265)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:192)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:184)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:834)
[CIRCULAR REFERENCE:com.android.tools.r8.internal.f: 'void <init>()' already has a mapping]
My applied mapping file line 40280, has content as following:
org.chromium.mpa.CronetMpaServiceImpl$2 -> org.chromium.mpa.CronetMpaServiceImpl$2:
com.meituan.robust.ChangeQuickRedirect changeQuickRedirect -> changeQuickRedirect
org.chromium.mpa.CronetMpaServiceImpl this$0 -> this$0
30:30:void <init>(org.chromium.mpa.CronetMpaServiceImpl) -> <init>
33:36:void onFinish(boolean,java.lang.String) -> onFinish
com.meituan.robust.ChangeQuickRedirect changeQuickRedirect -> changeQuickRedirect
5:5:void <init>() -> <init>
53:54:void onResourcesLoaded(int) -> onResourcesLoaded
6:6:void <init>() -> <init> // This line is 40280
8:8:void <init>() -> <init>
10:10:void <init>() -> <init>
12:12:void <init>() -> <init>
14:14:void <init>() -> <init>
16:16:void <init>() -> <init>
18:18:void <init>() -> <init>
20:20:void <init>() -> <init>
22:22:void <init>() -> <init>
24:24:void <init>() -> <init>
26:26:void <init>() -> <init>
28:28:void <init>() -> <init>
30:30:void <init>() -> <init>
32:32:void <init>() -> <init>
34:34:void <init>() -> <init>
36:36:void <init>() -> <init>
38:38:void <init>() -> <init>
40:40:void <init>() -> <init>
42:42:void <init>() -> <init>
44:44:void <init>() -> <init>
46:46:void <init>() -> <init>
48:48:void <init>() -> <init>
50:50:void <init>() -> <init>
Looks like <init> has multiple mapping config, so R8 refuse to accept them, but proguard works fine.
ze...@google.com <ze...@google.com> #51
Thanks for the report. Filed a new issue for this in
Description
No description yet.