btrace在android sdk升级13之后编译报错
- Dominant language
- C++
- Stars
- 2.5k
- Forks
- 335
- PR merge metrics
- No merged PRs in 30d
Description
之前debug能正常编译,在项目组升级android sdk为13之后,使用btrace plugin就会编译报错如下:
1.PC环境:linux,JDK版本:Java 8,Python版本: 2.7.15,编译失败
2.手机环境:编译未通过
3.APK文件:64位,assets 目录是否包含 methodMapping.txt 文件:不包含
4.编译环境:Android Studio Giraffe | 2022.3.1 Patch 1,AGP版本:com.android.tools.build:gradle:4.2.0,btrace 版本:2.0.3-rc02,Java 版本:Java 11,已禁用R8(android.enableR8=false),debug模式,未开启混淆
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, position: Lorg/bouncycastle/jce/provider/X509CertificateObject;(Lorg/bouncycastle/asn1/x509/X509CertificateStructure;)V, origin: /drone/src/hxapp/build/intermediates/transforms/DomainTransform/dysource/debug/335.jar:org/bouncycastle/jce/provider/X509CertificateObject.class
at Version.fakeStackEntry(Version_2.2.64.java:0)
at com.android.tools.r8.utils.a0.a(SourceFile:89)
at com.android.tools.r8.D8.run(D8.java:11)
at com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:116)
... 37 more
Caused by: java.lang.NullPointerException
at com.android.tools.r8.ir.conversion.u$a.a(SourceFile:1)
at com.android.tools.r8.ir.conversion.u.a(SourceFile:13)
at com.android.tools.r8.r.o.I.a(SourceFile:273)
at com.android.tools.r8.ir.conversion.o.a(SourceFile:619)
at com.android.tools.r8.ir.conversion.S.a(SourceFile:259)
at com.android.tools.r8.graph.p.a(SourceFile:130)
at com.android.tools.r8.graph.p.b(SourceFile:11)
at com.android.tools.r8.graph.p.a(SourceFile:108)
at com.android.tools.r8.graph.h1.a(SourceFile:39)
at com.android.tools.r8.graph.M1.a(SourceFile:2)
at com.android.tools.r8.ir.conversion.T.a(SourceFile:603)
at com.android.tools.r8.utils.a0.a(SourceFile:124)
at com.android.tools.r8.ir.conversion.T.c(SourceFile:12)
at com.android.tools.r8.ir.conversion.T.a(SourceFile:477)
at com.android.tools.r8.ir.conversion.T.a(SourceFile:414)
at com.android.tools.r8.graph.n0.b(SourceFile:2)
at com.android.tools.r8.graph.t1.b(SourceFile:4)
at com.android.tools.r8.graph.u1.a(SourceFile:3)
at com.android.tools.r8.graph.v1.d(SourceFile:5)
at com.android.tools.r8.graph.u1.a(SourceFile:1)
at com.android.tools.r8.graph.t1.b(SourceFile:2)
at com.android.tools.r8.graph.n0.b(SourceFile:1)
at com.android.tools.r8.ir.conversion.T.b(SourceFile:17)
at com.android.tools.r8.utils.c1.a(SourceFile:36)
at com.android.tools.r8.utils.c1.a(SourceFile:41)
at com.android.tools.r8.utils.c1.a(SourceFile:35)
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:322)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:66)
at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:36)
at com.android.tools.r8.utils.c1.a(SourceFile:34)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
at com.android.tools.r8.utils.c1.a(SourceFile:6)
at com.android.tools.r8.utils.c1.a(SourceFile:40)
at com.android.tools.r8.utils.c1.a(SourceFile:38)
at com.android.tools.r8.utils.c1.a(SourceFile:37)
at com.android.tools.r8.ir.conversion.T.a(SourceFile:381)
at com.android.tools.r8.D8.d(D8.java:36)
at com.android.tools.r8.D8.b(D8.java:1)
at com.android.tools.r8.utils.a0.a(SourceFile:47)
... 39 more
Suppressed: java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.android.tools.r8.utils.b0: java.lang.NullPointerException
at com.android.tools.r8.D8.d(D8.java:173)
... 41 more
Caused by: java.util.concurrent.ExecutionException: com.android.tools.r8.utils.b0: java.lang.NullPointerException
at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:552)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:513)
at com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:86)
at com.android.tools.r8.utils.c1.a(SourceFile:11)
at com.android.tools.r8.utils.c1.a(SourceFile:40)
at com.android.tools.r8.utils.c1.a(SourceFile:38)
at com.android.tools.r8.utils.c1.a(SourceFile:37)
at com.android.tools.r8.ir.conversion.T.a(SourceFile:381)
at com.android.tools.r8.D8.d(D8.java:36)
... 41 more
Caused by: com.android.tools.r8.utils.b0: java.lang.NullPointerException
at com.android.tools.r8.utils.b0.a(SourceFile:6)
at com.android.tools.r8.utils.a0.a(SourceFile:126)
at com.android.tools.r8.ir.conversion.T.c(SourceFile:12)
at com.android.tools.r8.ir.conversion.T.a(SourceFile:477)
at com.android.tools.r8.ir.conversion.T.a(SourceFile:414)
at com.android.tools.r8.graph.n0.b(SourceFile:2)
at com.android.tools.r8.graph.t1.b(SourceFile:4)
at com.android.tools.r8.graph.u1.a(SourceFile:3)
at com.android.tools.r8.graph.v1.d(SourceFile:5)
at com.android.tools.r8.graph.u1.a(SourceFile:1)
at com.android.tools.r8.graph.t1.b(SourceFile:2)
at com.android.tools.r8.graph.n0.b(SourceFile:1)
at com.android.tools.r8.ir.conversion.T.b(SourceFile:17)
at com.android.tools.r8.utils.c1.a(SourceFile:36)
at com.android.tools.r8.utils.c1.a(SourceFile:41)
at com.android.tools.r8.utils.c1.a(SourceFile:35)
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:322)
at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:66)
at com.google.common.util.concurrent.AbstractListeningExecutorService.submit(AbstractListeningExecutorService.java:36)
at com.android.tools.r8.utils.c1.a(SourceFile:34)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
at com.android.tools.r8.utils.c1.a(SourceFile:6)
... 46 more
[CIRCULAR REFERENCE:java.lang.NullPointerException]
> Task :hxapp:dexBuilderDysourceDebug FAILED
FAILURE: Build failed with an exception.
Contributor guide
Research direction
Start by reproducing the Android build with btrace plugin 2.0.3-rc02, AGP 4.2.0, and Android SDK 13, focusing on the dexBuilderDysourceDebug task. Trace the D8 failure for org.bouncycastle.jce.provider.X509CertificateObject and identify the compatibility boundary involved. Done means the debug APK builds successfully with btrace enabled and the reported D8 exception no longer occurs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java
- Domain
- build-system, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100