升級至 Crashlytics Gradle 外掛程式 v3
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
最新發布的 Crashlytics Gradle 外掛程式是主要版本 (3.0.0 版),並淘汰對較舊版 Gradle 和 Android Gradle 外掛程式的支援,讓 SDK 更加現代化。此外,這個版本中的變更也解決了 AGP v8.1 以上版本的問題,並改善對原生應用程式和自訂建構作業的支援。
基本規定
Crashlytics Gradle 外掛程式 v3 的最低需求如下:
Kotlin
plugins {
id("com.android.application") version "8.1.4" apply false
id("com.google.gms.google-services") version "4.4.3" apply false
...
}
Groovy
plugins {
id 'com.android.application' version '8.1.4' apply false
id 'com.google.gms.google-services' version '4.4.3' apply false
...
}
「Crashlytics」擴充功能異動
使用第 3 版 Crashlytics Gradle 外掛程式時,Crashlytics 擴充功能會出現下列重大變更:
已從 defaultConfig
android 區塊中移除擴充功能。請改為設定每個變體。
移除已淘汰的 mappingFile
欄位。系統現在會自動提供合併的對應檔案。
移除已淘汰的 strippedNativeLibsDir
欄位。請改用 unstrippedNativeLibsDir
處理所有原生程式庫。
將「unstrippedNativeLibsDir
」欄位變更為累計。
查看包含多個目錄的範例
buildTypes {
release {
configure<CrashlyticsExtension> {
nativeSymbolUploadEnabled = true
unstrippedNativeLibsDir = file("MY/NATIVE/LIBS")
}
}
productFlavors {
flavorDimensions += "feature"
create("basic") {
dimension = "feature"
// ...
}
create("featureX") {
dimension = "feature"
configure<CrashlyticsExtension> {
unstrippedNativeLibsDir = file("MY/FEATURE_X/LIBS")
}
}
}
}
uploadCrashlyticsSymbolFilesBasicRelease
工作只會上傳 MY/NATIVE/LIBS
中的符號,但 uploadCrashlyticsSymbolFilesFeatureXRelease
會上傳 MY/NATIVE/LIBS
和 MY/FEATURE_X/LIBS
中的符號。
以兩個新的頂層欄位取代結尾欄位 symbolGenerator
:
symbolGeneratorType
,字串可以是 "breakpad"
(預設) 或 "csym"
。
breakpadBinary
,本機二進位覆寫的檔案。dump_syms
擴充功能升級範例
Kotlin
之前 |
buildTypes {
release {
configure<CrashlyticsExtension> {
// ...
symbolGenerator(
closureOf<SymbolGenerator> {
symbolGeneratorType = "breakpad"
breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS")
}
)
}
}
}
|
現已推出第 3 版 |
buildTypes {
release {
configure<CrashlyticsExtension> {
// ...
symbolGeneratorType = "breakpad"
breakpadBinary = file("/PATH/TO/BREAKPAD/DUMP_SYMS")
}
}
}
|
Groovy
之前 |
buildTypes {
release {
firebaseCrashlytics {
// ...
symbolGenerator {
breakpad {
binary file("/PATH/TO/BREAKPAD/DUMP_SYMS")
}
}
}
}
}
|
現已推出第 3 版 |
buildTypes {
release {
firebaseCrashlytics {
// ...
symbolGeneratorType "breakpad"
breakpadBinary file("/PATH/TO/BREAKPAD/DUMP_SYMS")
}
}
}
|
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-09-06 (世界標準時間)。
[null,null,["上次更新時間:2025-09-06 (世界標準時間)。"],[],[],null,["\u003cbr /\u003e\n\nThe latest release of the Crashlytics Gradle plugin is a major\nversion (v3.0.0) and modernizes the SDK by dropping support for lower versions\nof Gradle and the Android Gradle plugin. Additionally, the changes in this\nrelease resolve issues with AGP v8.1+ and improve support for native apps and\ncustomized builds.\n\nMinimum requirements\n\nCrashlytics Gradle plugin v3 has the following minimum requirements:\n\n- Android Gradle plugin 8.1+ \n\n Upgrade this plugin using the\n [Android Gradle plugin Upgrade Assistant](https://developer.android.com/build/agp-upgrade-assistant)\n on the latest version of Android Studio.\n\n- Firebase's `google-services` Gradle plugin 4.4.1+ \n\n Upgrade this plugin by specifying the latest version in your project's Gradle\n build file, like so:\n\nKotlin \n\n```kotlin\nplugins {\n id(\"com.android.application\") version \"8.1.4\" apply false\n id(\"com.google.gms.google-services\") version \"4.4.3\" apply false\n ...\n}\n```\n\nGroovy \n\n```groovy\nplugins {\n id 'com.android.application' version '8.1.4' apply false\n id 'com.google.gms.google-services' version '4.4.3' apply false\n ...\n}\n```\n\nChanges to the Crashlytics extension\n\nWith v3 of the Crashlytics Gradle plugin, the Crashlytics extension has\nthe following breaking changes:\n\n- Removed the extension from the `defaultConfig` android block. Instead, you\n should configure each variant.\n\n- Removed the deprecated field `mappingFile`. Instead, the merged mapping file\n is now provided automatically.\n\n- Removed the deprecated field `strippedNativeLibsDir`. Instead, you should use\n `unstrippedNativeLibsDir` for all native libs.\n\n- Changed the field `unstrippedNativeLibsDir` to be cumulative.\n\n View an example with multiple directories\n\n \u003cbr /\u003e\n\n \u003cbr /\u003e\n\n ```kotlin\n buildTypes {\n release {\n configure\u003cCrashlyticsExtension\u003e {\n nativeSymbolUploadEnabled = true\n unstrippedNativeLibsDir = file(\"\u003cvar class=\"readonly\" translate=\"no\"\u003eMY/NATIVE/LIBS\u003c/var\u003e\")\n }\n }\n productFlavors {\n flavorDimensions += \"feature\"\n create(\"basic\") {\n dimension = \"feature\"\n // ...\n }\n create(\"featureX\") {\n dimension = \"feature\"\n configure\u003cCrashlyticsExtension\u003e {\n unstrippedNativeLibsDir = file(\"\u003cvar class=\"readonly\" translate=\"no\"\u003eMY/FEATURE_X/LIBS\u003c/var\u003e\")\n }\n }\n }\n }\n \n ```\n\n \u003cbr /\u003e\n\n The `uploadCrashlyticsSymbolFilesBasicRelease` task will only upload the\n symbols in \u003cvar class=\"readonly\" translate=\"no\"\u003eMY/NATIVE/LIBS\u003c/var\u003e,\n but `uploadCrashlyticsSymbolFilesFeatureXRelease` will upload symbols in\n both \u003cvar class=\"readonly\" translate=\"no\"\u003eMY/NATIVE/LIBS\u003c/var\u003e\n and \u003cvar class=\"readonly\" translate=\"no\"\u003eMY/FEATURE_X/LIBS\u003c/var\u003e.\n\n \u003cbr /\u003e\n\n- Replaced the closure field `symbolGenerator` with two new top level fields:\n\n - `symbolGeneratorType`, a String of either `\"breakpad\"` (default) or `\"csym\"`.\n - `breakpadBinary`, a File of a local `dump_syms` binary override.\n\nExample for how to upgrade the extension \n\nKotlin\n\n|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **Before** | ```kotlin buildTypes { release { configure\u003cCrashlyticsExtension\u003e { // ... symbolGenerator( closureOf\u003cSymbolGenerator\u003e { symbolGeneratorType = \"breakpad\" breakpadBinary = file(\"\u003cvar translate=\"no\"\u003e/PATH/TO/BREAKPAD/DUMP_SYMS\u003c/var\u003e\") } ) } } } ``` |\n| **Now in v3** | ```kotlin buildTypes { release { configure\u003cCrashlyticsExtension\u003e { // ... symbolGeneratorType = \"breakpad\" breakpadBinary = file(\"\u003cvar translate=\"no\"\u003e/PATH/TO/BREAKPAD/DUMP_SYMS\u003c/var\u003e\") } } } ``` |\n\nGroovy\n\n|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **Before** | ```groovy buildTypes { release { firebaseCrashlytics { // ... symbolGenerator { breakpad { binary file(\"\u003cvar translate=\"no\"\u003e/PATH/TO/BREAKPAD/DUMP_SYMS\u003c/var\u003e\") } } } } } ``` |\n| **Now in v3** | ```groovy buildTypes { release { firebaseCrashlytics { // ... symbolGeneratorType \"breakpad\" breakpadBinary file(\"\u003cvar translate=\"no\"\u003e/PATH/TO/BREAKPAD/DUMP_SYMS\u003c/var\u003e\") } } } ``` |"]]