簡體   English   中英

Kotlin 多平台+哨兵

[英]Kotlin Multiplatform + Sentry

我想將 Sentry 用於我的多平台 Kotlin 項目。

哨兵 Kotlin 多平台

所以我試圖用 Kotlin Multiplatform 准備 Sentry 的設置。 我正在按照指南進行操作,進行了 mavenLocal() 構建等。現在我想將它添加到項目中。 但是,在啟動我的 (Android) 項目時,甚至在啟動應用程序的 onCreate() 之前,我都會收到崩潰說明:

Unable to get provider io.sentry.android.core.SentryInitProvider: 
java.lang.IllegalArgumentException: DSN is required. Use empty string to disable SDK.

所以需要明確的是,在將api("io.sentry:sentry-kotlin-multiplatform:0.0.1")添加到依賴項時,這種情況已經發生。 早在 init 調用之前。

我所做的只是:

  1. 配置共享build.gradle.kts並添加
 val commonMain by getting {
            dependencies {
                api("io.sentry:sentry-kotlin-multiplatform:0.0.1")
  1. 添加示例配置
fun initializeSentry(context: Context) {
    Sentry.init(context) { sentryOptions ->  setDsnHere... } 
}

並在 Android 申請中:

initializeSentry(this)

然后嘗試運行它。 但我什至沒有進入 init 調用。 應該達到配置並執行initializeSentry(this)塊。 (如果它在那里失敗我可以接受但我什至沒有那么遠。)

相反,該應用程序無法說明

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: xyz, PID: 23056
    java.lang.RuntimeException: Unable to get provider io.sentry.android.core.SentryInitProvider: java.lang.IllegalArgumentException: DSN is required. Use empty string to disable SDK.
        at android.app.ActivityThread.installProvider(ActivityThread.java:7467)
        ...

甚至在其他任何事情之前。 所以僅僅添加到 gradle 文件就已經導致崩潰(即使其他代碼被注釋掉)。

-------- 全棧跟蹤--------

java.lang.RuntimeException: Unable to get provider io.sentry.android.core.SentryInitProvider: java.lang.IllegalArgumentException: DSN is required. Use empty string to disable SDK.
        at android.app.ActivityThread.installProvider(ActivityThread.java:7467)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6973)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6744)
        at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2133)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7872)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

     Caused by: java.lang.IllegalArgumentException: DSN is required. Use empty string to disable SDK.
        at io.sentry.Sentry.initConfigurations(Sentry.java:201)
        at io.sentry.Sentry.init(Sentry.java:170)
        at io.sentry.Sentry.init(Sentry.java:118)
        at io.sentry.android.core.SentryAndroid.init(SentryAndroid.java:87)
        at io.sentry.android.core.SentryAndroid.init(SentryAndroid.java:56)
        at io.sentry.android.core.SentryInitProvider.onCreate(SentryInitProvider.java:27)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:2451)
        at android.content.ContentProvider.attachInfo(ContentProvider.java:2421)
        at io.sentry.android.core.SentryInitProvider.attachInfo(SentryInitProvider.java:44)
        at android.app.ActivityThread.installProvider(ActivityThread.java:7462)
        at android.app.ActivityThread.installContentProviders(ActivityThread.java:6973) 
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6744) 
        at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2133) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loopOnce(Looper.java:201) 
        at android.os.Looper.loop(Looper.java:288) 
        at android.app.ActivityThread.main(ActivityThread.java:7872) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) 

原來手冊忘了提到自動配置。

將此行添加到您的清單中:

<meta-data android:name="io.sentry.auto-init" android:value="false" />

並繼續教程。

以供參考:

https://github.com/getsentry/sentry-kotlin-multiplatform/issues/45

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM