首页 > 解决方案 > 为 Android NDK 崩溃报告自动上传 Symbol 文件

问题描述

我正在使用 Crashlytic sdk 收集 Android NDK 崩溃报告。请在下面找到配置文件。

如果我运行以下命令,它会很好地工作: ./gradlew crashlyticsUploadSymbolsXXXRelease

此外,如果我添加assembleXXXRelease.finalizedBy(crashlyticsUploadSymbolsXXXRelease)afterEvaluate块,符号文件也会在每次构建后上传。

以下是我的问题:

  1. 我希望这个上传过程是自动的。我面临的问题是 finalizedBy 方式将增加大约 10 分钟的构建时间,这是我必须避免的。我更喜欢在每次构建后创建一个新任务并在其他地方调用它,因此 APK 构建时间将与现在保持相同。我试图这样做,但它似乎不起作用。请参阅下面的代码。如果您有任何线索或我遗漏了什么,请告诉我。

  2. 是否可以根据不同的风格覆盖 NDK 输出路径?我尝试从 assbleXXXRelease 之类的任务名称中获取风味 XXX,并将其分配给 XXX/obj 之类的输出路径,但失败了。似乎风味已固定为默认风味。

  3. 我可以在没有 Crashlytic sdk 的情况下获取 cSYM 符号文件并上传到 Crashlytics 吗?

apply plugin: 'com.android.application'
apply plugin: 'io.fabric'

// Question 2 will be happening here:
crashlytics {
    enableNdk true
    androidNdkOut "obj" // override the path based on the flavor name to flavorName/obj?
    androidNdkLibsOut "libs" // override the path based on the flavor name to flavorName/libs?
}

dependencies {
    // ...
    implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'

    // Add the Crashlytics NDK dependency
    implementation 'com.crashlytics.sdk.android:crashlytics-ndk:2.1.1'
}

// Question 1 will be happening here:
// If I call this task from command line, it won't work. Nothing will happen.
task upload {
    doLast {
        crashlyticsUploadSymbolsXXXRelease
    }
}

afterEvaluate {project ->
    android.applicationVariants.all { variant ->
        assembleXXXRelease.finalizedBy(crashlyticsUploadSymbolsXXXRelease) // it works here
    }
}

标签: firebasecrashlytics

解决方案


  1. 我希望这个上传过程是自动的。我面临的问题是 finalizedBy 方式将增加大约 10 分钟的构建时间,这是我必须避免的。我更喜欢在每次构建后创建一个新任务并在其他地方调用它,因此 APK 构建时间将保持与现在相同。我试图这样做,但它似乎不起作用。

我通过如下修改任务解决了这个问题:

task upload {
    doLast {
       // do something whatever
    }
}

upload.finalizedBy(crashlyticsUploadSymbolsXXXRelease)
  1. 是否可以根据不同的风格覆盖 NDK 输出路径?我尝试从 assbleXXXRelease 之类的任务名称中获取风味 XXX,并将其分配给 XXX/obj 之类的输出路径,但失败了。似乎风味已固定为默认风味。

我已经通过调用来获取当前的风味名称

gradle.startParameter.taskName[0]
  1. 我可以在没有 Crashlytic sdk 的情况下获取 cSYM 符号文件并上传到 Crashlytics 吗?

我还没有找到解决方案。


推荐阅读