aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Nguyen <olivernguyen@google.com>2022-06-28 11:38:52 -0700
committerOliver Nguyen <olivernguyen@google.com>2022-06-28 11:44:08 -0700
commitc4a2546eb09899ca23b44b57522f57cfedfe1de2 (patch)
tree3b93bf24ab3912f2960b34b44377cf8ed1fd6c41
parentbad44a6a58d5edc4f0e5606e71e42cf12d031b2a (diff)
downloadjacoco-c4a2546eb09899ca23b44b57522f57cfedfe1de2.tar.gz
Enable jacocoagent as a Java agent for host.
Excludes some sources only for device builds to minimize dependency requirements. Set up manifest to properly load as a Java agent. Test: atest HelloWorldHostTest --coverage Bug: 228858566 Change-Id: Ie6b33724630780a0f57bf4bcb1dcc97f4af4c132
-rw-r--r--Android.bp17
-rw-r--r--org.jacoco.agent/src/MANIFEST.MF3
-rw-r--r--org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java2
-rw-r--r--org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java2
4 files changed, 16 insertions, 8 deletions
diff --git a/Android.bp b/Android.bp
index 25801a46..2211c6cc 100644
--- a/Android.bp
+++ b/Android.bp
@@ -60,6 +60,7 @@ java_library {
name: "jacocoagent",
host_supported: true,
installable: true,
+ manifest: "org.jacoco.agent/src/MANIFEST.MF",
apex_available: [
"//apex_available:anyapex",
@@ -80,12 +81,16 @@ java_library {
// system apps.
// Note: we still may need to update the source code to cut dependencies in
// mandatory jacoco classes.
- exclude_srcs: [
- "org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java",
- "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/PreMain.java",
- "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java",
- "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/JmxRegistration.java",
- ],
+ target: {
+ android: {
+ exclude_srcs: [
+ "org.jacoco.core/src/org/jacoco/core/runtime/ModifiedSystemClassRuntime.java",
+ "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/PreMain.java",
+ "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/CoverageTransformer.java",
+ "org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/JmxRegistration.java",
+ ],
+ },
+ },
// In order to include Jacoco in core libraries, we cannot depend on
// anything in the bootclasspath (or we would create dependency cycle).
diff --git a/org.jacoco.agent/src/MANIFEST.MF b/org.jacoco.agent/src/MANIFEST.MF
new file mode 100644
index 00000000..fb315f3d
--- /dev/null
+++ b/org.jacoco.agent/src/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Premain-Class: org.jacoco.agent.rt.internal.PreMain
+
diff --git a/org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java b/org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java
index 1fc2b70f..f877b832 100644
--- a/org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java
+++ b/org.jacoco.core/src/org/jacoco/core/runtime/LoggerRuntime.java
@@ -145,7 +145,7 @@ public class LoggerRuntime extends AbstractRuntime {
mv.visitInsn(Opcodes.ICONST_0);
mv.visitInsn(Opcodes.AALOAD);
- mv.visitTypeInsn(Opcodes.CHECKCAST, InstrSupport.DATAFIELD_DESC);
+ mv.visitTypeInsn(Opcodes.CHECKCAST, InstrSupport.DATAFIELD_DESC_UNQUALIFIED);
// Stack[0]: [Z
diff --git a/org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java b/org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java
index 00fb4b07..5be410fe 100644
--- a/org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java
+++ b/org.jacoco.core/src/org/jacoco/core/runtime/RuntimeData.java
@@ -271,7 +271,7 @@ public class RuntimeData {
// stack[0]: [Z
- mv.visitTypeInsn(Opcodes.CHECKCAST, InstrSupport.DATAFIELD_DESC);
+ mv.visitTypeInsn(Opcodes.CHECKCAST, InstrSupport.DATAFIELD_DESC_UNQUALIFIED);
}
}