#android-ndk #android #ndk #logging #api-bindings #atrace

android_trace

支持Android NDK跟踪

2个版本

0.1.1 2024年6月14日
0.1.0 2024年4月3日

#104 in 操作系统

Download history 220/week @ 2024-05-03 319/week @ 2024-05-10 58/week @ 2024-05-17 141/week @ 2024-05-24 407/week @ 2024-05-31 157/week @ 2024-06-07 190/week @ 2024-06-14 117/week @ 2024-06-21 64/week @ 2024-06-28 64/week @ 2024-07-05 248/week @ 2024-07-12 183/week @ 2024-07-19 150/week @ 2024-07-26 91/week @ 2024-08-02 42/week @ 2024-08-09 63/week @ 2024-08-16

401 个下载/每月
用于 tracing_android_trace

Apache-2.0 OR MIT

26KB
262

Android Trace

支持Android NDK 跟踪

Latest published version. Documentation build status. Apache 2.0 or MIT license.
Linebender Zulip chat. GitHub Actions CI status. Dependency staleness status.

⚠️ Android Trace仅支持Android

Android Trace提供了对Android NDK方法的访问,如 ATrace_beginSectionATrace_endSection。这可以使用 Android GPU Inspector 对Rust代码进行跟踪。

有关与 tracing 的集成,请参阅 tracing_android_trace

重大更改记录在 变更日志 中。

快速入门

添加对Android Trace的依赖

[target.'cfg(target_os = "android")'.dependencies]
android_trace = "0.1.0"

库的主要入口点是 AndroidTrace,它存储每个可用NDK函数的函数指针

use android_trace::AndroidTrace;
let trace = AndroidTrace::new();

// If the `is_enabled` method isn't available, we also shouldn't trace
let should_trace = trace.is_enabled().unwrap_or(false);
if should_trace {
  trace.begin_section(c"My expensive calculation");
}

// ...performing an expensive calculation

if should_trace {
  trace.end_section();
}

Android API级别

跟踪API 的第一级自Android API级别23起可用,Android API级别29添加了更灵活的API。为了支持任何Android API版本的设备,我们使用 dlsym 在运行时解析这些函数。除非我们知道(通过 功能)某个API级别可用,否则我们将使用此运行时访问。

库功能标志

以下功能标志可用

  • api_level_23(默认启用):要求Android API级别23,以避免某些运行时符号解析
  • api_level_29:要求Android API级别29,以提高效率,避免完全运行时符号解析

要支持小于23的Android API版本,应禁用默认功能

[target.'cfg(target_os = "android")'.dependencies]
android_trace = { version = "0.1.0", default-features = false }

最低支持的Rust版本(MSRV)

此版本的Android Trace已验证可编译与 Rust 1.77 及以后的版本。

Android Trace的未来版本可能会提高Rust版本要求。这不会被视为破坏性更改,甚至可能在小的补丁版本中发生。

如果编译失败,请单击此处。

随着时间的推移,一些Android Trace的依赖可能已经发布了需要更高Rust版本要求的新版本。如果您因为依赖问题遇到编译错误,但又不想升级您的Rust工具链,那么您可以降级该依赖。

# Use the problematic dependency's name and version
cargo update -p package_name --precise 0.1.1

社区

关于Android Trace的开发讨论发生在Linebender Zulip上,具体在#general > Android Tracing。所有公开内容都可以在不登录的情况下阅读。

欢迎通过pull request提交贡献。适用Rust行为准则

许可证

许可协议为以下之一

任选其一。

依赖项

~43KB