Add API usage example for the Android tree
This CL introduces an Android.bp target that allows to
use the client library from the Android tree. It also
introduces a minimalistic example hello world-style
target that shows it in action.
Bug: 132678367
Test: m libperfetto_client_example;
Change-Id: I8e06f68dcddc1b08191251dab8b10049fc889356
adb push out/target/product/*/system/bin/libperfetto_client_example /data/local/tmp/;
echo 'duration_ms: 10000; data_sources { config { name: "com.example.mytrace" } }; buffers { size_kb: 1024 }' | adb shell perfetto -c - --txt -o /data/misc/perfetto-traces/trace
diff --git a/Android.bp b/Android.bp
index f77e7bf..bf3ce64 100644
--- a/Android.bp
+++ b/Android.bp
@@ -390,6 +390,149 @@
],
}
+// GN target: //:libperfetto_client_experimental
+cc_library_static {
+ name: "libperfetto_client_experimental",
+ srcs: [
+ ":perfetto_protos_perfetto_common_lite_gen",
+ ":perfetto_protos_perfetto_common_zero_gen",
+ ":perfetto_protos_perfetto_config_lite_gen",
+ ":perfetto_protos_perfetto_config_zero_gen",
+ ":perfetto_protos_perfetto_ipc_ipc_gen",
+ ":perfetto_protos_perfetto_trace_android_zero_gen",
+ ":perfetto_protos_perfetto_trace_chrome_zero_gen",
+ ":perfetto_protos_perfetto_trace_filesystem_zero_gen",
+ ":perfetto_protos_perfetto_trace_ftrace_zero_gen",
+ ":perfetto_protos_perfetto_trace_interned_data_zero_gen",
+ ":perfetto_protos_perfetto_trace_minimal_lite_gen",
+ ":perfetto_protos_perfetto_trace_power_zero_gen",
+ ":perfetto_protos_perfetto_trace_profiling_zero_gen",
+ ":perfetto_protos_perfetto_trace_ps_zero_gen",
+ ":perfetto_protos_perfetto_trace_sys_stats_zero_gen",
+ ":perfetto_protos_perfetto_trace_track_event_zero_gen",
+ ":perfetto_protos_perfetto_trace_trusted_lite_gen",
+ ":perfetto_protos_perfetto_trace_zero_gen",
+ ":perfetto_src_ipc_wire_protocol_gen",
+ "src/base/event.cc",
+ "src/base/file_utils.cc",
+ "src/base/metatrace.cc",
+ "src/base/paged_memory.cc",
+ "src/base/pipe.cc",
+ "src/base/string_splitter.cc",
+ "src/base/string_utils.cc",
+ "src/base/string_view.cc",
+ "src/base/temp_file.cc",
+ "src/base/thread_checker.cc",
+ "src/base/thread_task_runner.cc",
+ "src/base/time.cc",
+ "src/base/unix_socket.cc",
+ "src/base/unix_task_runner.cc",
+ "src/base/virtual_destructors.cc",
+ "src/base/watchdog_posix.cc",
+ "src/ipc/buffered_frame_deserializer.cc",
+ "src/ipc/client_impl.cc",
+ "src/ipc/deferred.cc",
+ "src/ipc/host_impl.cc",
+ "src/ipc/service_proxy.cc",
+ "src/ipc/virtual_destructors.cc",
+ "src/protozero/message.cc",
+ "src/protozero/message_handle.cc",
+ "src/protozero/proto_decoder.cc",
+ "src/protozero/scattered_heap_buffer.cc",
+ "src/protozero/scattered_stream_null_delegate.cc",
+ "src/protozero/scattered_stream_writer.cc",
+ "src/tracing/core/chrome_config.cc",
+ "src/tracing/core/commit_data_request.cc",
+ "src/tracing/core/data_source_config.cc",
+ "src/tracing/core/data_source_descriptor.cc",
+ "src/tracing/core/id_allocator.cc",
+ "src/tracing/core/null_trace_writer.cc",
+ "src/tracing/core/observable_events.cc",
+ "src/tracing/core/packet_stream_validator.cc",
+ "src/tracing/core/shared_memory_abi.cc",
+ "src/tracing/core/shared_memory_arbiter_impl.cc",
+ "src/tracing/core/sliced_protobuf_input_stream.cc",
+ "src/tracing/core/startup_trace_writer.cc",
+ "src/tracing/core/startup_trace_writer_registry.cc",
+ "src/tracing/core/test_config.cc",
+ "src/tracing/core/trace_buffer.cc",
+ "src/tracing/core/trace_config.cc",
+ "src/tracing/core/trace_packet.cc",
+ "src/tracing/core/trace_stats.cc",
+ "src/tracing/core/trace_writer_impl.cc",
+ "src/tracing/core/tracing_service_impl.cc",
+ "src/tracing/core/virtual_destructors.cc",
+ "src/tracing/data_source.cc",
+ "src/tracing/internal/in_process_tracing_backend.cc",
+ "src/tracing/internal/system_tracing_backend.cc",
+ "src/tracing/internal/tracing_muxer_impl.cc",
+ "src/tracing/platform.cc",
+ "src/tracing/platform_posix.cc",
+ "src/tracing/trace_writer_base.cc",
+ "src/tracing/tracing.cc",
+ "src/tracing/virtual_destructors.cc",
+ ],
+ shared_libs: [
+ "libprotobuf-cpp-lite",
+ ],
+ static_libs: [
+ "perfetto_src_tracing_ipc",
+ ],
+ export_include_dirs: [
+ "include",
+ ],
+ generated_headers: [
+ "perfetto_protos_perfetto_common_lite_gen_headers",
+ "perfetto_protos_perfetto_common_zero_gen_headers",
+ "perfetto_protos_perfetto_config_lite_gen_headers",
+ "perfetto_protos_perfetto_config_zero_gen_headers",
+ "perfetto_protos_perfetto_ipc_ipc_gen_headers",
+ "perfetto_protos_perfetto_trace_android_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_filesystem_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_minimal_lite_gen_headers",
+ "perfetto_protos_perfetto_trace_power_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_profiling_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_ps_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_sys_stats_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_track_event_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_trusted_lite_gen_headers",
+ "perfetto_protos_perfetto_trace_zero_gen_headers",
+ "perfetto_src_ipc_wire_protocol_gen_headers",
+ ],
+ export_generated_headers: [
+ "perfetto_protos_perfetto_common_lite_gen_headers",
+ "perfetto_protos_perfetto_common_zero_gen_headers",
+ "perfetto_protos_perfetto_config_lite_gen_headers",
+ "perfetto_protos_perfetto_config_zero_gen_headers",
+ "perfetto_protos_perfetto_ipc_ipc_gen_headers",
+ "perfetto_protos_perfetto_trace_android_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_chrome_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_filesystem_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_ftrace_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_minimal_lite_gen_headers",
+ "perfetto_protos_perfetto_trace_power_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_profiling_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_ps_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_sys_stats_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_track_event_zero_gen_headers",
+ "perfetto_protos_perfetto_trace_trusted_lite_gen_headers",
+ "perfetto_protos_perfetto_trace_zero_gen_headers",
+ "perfetto_src_ipc_wire_protocol_gen_headers",
+ ],
+ defaults: [
+ "perfetto_defaults",
+ ],
+ cflags: [
+ "-DGOOGLE_PROTOBUF_NO_RTTI",
+ "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
+ "-DPERFETTO_BUILD_WITH_ANDROID",
+ ],
+}
+
// GN target: //:perfetto
cc_binary {
name: "perfetto",
@@ -3584,4 +3727,30 @@
srcs: [
"protos/perfetto/config/perfetto_config.proto",
],
+}
+
+// This sample target shows how to use the perfetto client API from within the
+// Android tree.
+cc_binary {
+ name: "libperfetto_client_example",
+ srcs: [
+ "test/android_client_api_example.cc",
+ ],
+ static_libs: [
+ "libperfetto_client_experimental",
+ "perfetto_src_tracing_ipc",
+ "perfetto_trace_protos",
+ ],
+ shared_libs: [
+ "libprotobuf-cpp-lite",
+ "liblog",
+ ],
+ local_include_dirs: [
+ "include",
+ ],
+ cflags: [
+ "-DGOOGLE_PROTOBUF_NO_RTTI",
+ "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
+ "-DPERFETTO_BUILD_WITH_ANDROID",
+ ],
}
\ No newline at end of file