使用 @Monitor 进行 Koin 内置性能监控
@Monitor 注解(自 Koin Annotations 2.2.0 起可用)通过 Kotzilla 平台(Koin 的官方工具平台)为您的 Koin 组件启用自动性能监控和跟踪。
设置
添加 Kotzilla SDK 依赖项:
kotlin
dependencies {
implementation "io.kotzilla:kotzilla-core:latest.version"
}在 Kotzilla 文档上查看最新版本。
配置 allOpen 插件以使被监控的类可扩展:
kotlin
plugins {
id "org.jetbrains.kotlin.plugin.allopen"
}
allOpen {
annotation("org.koin.core.annotation.Monitor")
}在您的 Koin 配置中初始化 Kotzilla 分析:
kotlin
import io.kotzilla.sdk.analytics.koin.analytics
fun initKoin() {
startKoin {
// Enable Kotzilla monitoring
analytics()
modules(appModule)
}
}基本用法
只需使用 @Monitor 为您的 Koin 组件添加注解:
kotlin
@Monitor
@Single
class UserService(private val userRepository: UserRepository) {
fun findUser(id: String): User? = userRepository.findById(id)
suspend fun createUser(userData: UserData): User {
return userRepository.save(userData)
}
}生成的代码
编译器会自动生成一个包装您的组件的代理类:
kotlin
/**
* Generated by @Monitor - Koin proxy for 'UserService'
*/
class UserServiceProxy(userRepository: UserRepository) : UserService(userRepository) {
override fun findUser(id: String): User? {
return KotzillaCore.getDefaultInstance().trace("UserService.findUser") {
super.findUser(id)
}
}
override suspend fun createUser(userData: UserData): User {
return KotzillaCore.getDefaultInstance().suspendTrace("UserService.createUser") {
super.createUser(userData)
}
}
}Koin 会自动使用代理类代替原始类,透明地捕获:
- 方法执行时间
- 调用频率和模式
- 错误率和类型
- 性能瓶颈
ViewModel 监控
监控您的 ViewModel 以跟踪 UI 性能:
kotlin
@Monitor
@KoinViewModel
class DetailViewModel(private val repository: Repository) : ViewModel() {
fun loadData(id: String): StateFlow<Data> = repository.getData(id)
}Kotzilla 平台集成
监控数据会自动发送到您的 Kotzilla 平台工作区,提供:
- 实时性能仪表板:查看方法执行时间和趋势
- 错误跟踪:监控异常率和堆栈跟踪
- 使用分析:了解哪些组件的使用频率最高
- 性能警报:获得性能退化的通知
创建您的免费 Kotzilla 帐户并在您的 kotzilla.json 文件中配置 API 密钥:
json
{
"sdkVersion": "latest.version",
"keys": [
{
"appId": "your-app-id",
"applicationPackageName": "com.example.app",
"keyId": "your-key-id",
"apiKey": "your-api-key"
}
]
}要求
- 使用
@Monitor注解的类必须是 open 的(由allOpen插件自动处理) - Kotzilla SDK 依赖项在运行时必须可用
- 用于数据收集的有效 Kotzilla 平台帐户和 API 密钥
INFO
@Monitor 注解仅跟踪被监控类本身的方法调用。除非也添加了 @Monitor 注解,否则注入到被监控类中的依赖项不会被自动监控。
NOTE
有关完整的设置说明和高级配置选项,请访问 Kotzilla 文档。
