bytedance / bytedance/btrace

btrace在android sdk升级13之后编译报错

Open
#116 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.