gradle-play-publisher: Firebase Crashlytics mapping file not uploaded in v3.0
Describe the bug
Been seeing this for a while in v3.0 Snapshots, but just thought it was something to do with my build. Looked into it in more detail, and found the the uploadCrashlyticsMappingFileRelease isn’t ran when running the publishReleaseBundle task.
I’m not sure if this is an issue with AGP/Crashlytics plugin or that with the new Crashlytics plugin we now need to explicitly run the new mapping task.
Generating a bundle directly from Android Studio Build -> Generate Signed Bundle / APK correctly runs the uploadCrashlyticsMappingFileRelease task as shown in the build logs below.
How To Reproduce
- Setup Firebase Crashlytics https://firebase.google.com/docs/crashlytics/upgrade-sdk?platform=android
- Upload Bundle using
publishReleaseBundletask. - Force a crash in app and the crash reports are obfuscated
Versions
- Gradle Play Publisher: 3.0
- Gradle Wrapper: 6.6.1
- Android Gradle Plugin: Tested on 4.1-RC1 and 4.2-Alpha10
- Firebase Plugin: com.google.firebase:firebase-crashlytics-gradle:2.2.1
- Firebase Crashlytics: com.google.firebase:firebase-crashlytics:17.2.1
Tasks executed
publishReleaseBundle
Expected behavior
Bundle is created and uploaded, Firebase mapping file is uploaded.
Additional context (if a crash, provide stack trace)
Further investigation shows that creating an App Bundle directly from Android Studio runs the following tasks automatically
> Task :app:preBuild UP-TO-DATE
> Task :app:extractProguardFiles UP-TO-DATE
> Task :app:preReleaseBuild UP-TO-DATE
> Task :app:checkReleaseDuplicateClasses UP-TO-DATE
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:generateReleaseResValues UP-TO-DATE
> Task :app:generateReleaseResources UP-TO-DATE
> Task :app:injectCrashlyticsMappingFileIdRelease
> Task :app:processReleaseGoogleServices UP-TO-DATE
> Task :app:packageReleaseResources
> Task :app:extractDeepLinksRelease UP-TO-DATE
> Task :app:checkReleaseAarMetadata UP-TO-DATE
> Task :app:parseReleaseLocalResources
> Task :app:processReleaseJavaRes NO-SOURCE
> Task :app:writeReleaseApplicationId UP-TO-DATE
> Task :app:analyticsRecordingRelease
> Task :app:mergeReleaseShaders UP-TO-DATE
> Task :app:compileReleaseShaders NO-SOURCE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseJniLibFolders UP-TO-DATE
> Task :app:mergeReleaseNativeLibs UP-TO-DATE
> Task :app:stripReleaseDebugSymbols UP-TO-DATE
> Task :app:collectReleaseDependencies UP-TO-DATE
> Task :app:configureReleaseDependencies UP-TO-DATE
> Task :app:parseReleaseIntegrityConfig UP-TO-DATE
> Task :app:validateSigningRelease UP-TO-DATE
> Task :generateEditForComDotWesleyellisDotNextepisode
> Task :commitEditForComDotWesleyellisDotNextepisode
> Task :app:mergeReleaseResources
> Task :app:processReleaseVersionCodes
> Task :app:generateReleaseBuildConfig UP-TO-DATE
> Task :app:createReleaseCompatibleScreenManifests UP-TO-DATE
> Task :app:processReleaseMainManifest UP-TO-DATE
> Task :app:processReleaseManifest UP-TO-DATE
> Task :app:processReleaseManifestForPackage UP-TO-DATE
> Task :app:generateReleaseRFile UP-TO-DATE
> Task :app:kaptGenerateStubsReleaseKotlin UP-TO-DATE
> Task :app:kaptReleaseKotlin UP-TO-DATE
> Task :app:compileReleaseKotlin UP-TO-DATE
> Task :app:compileReleaseJavaWithJavac UP-TO-DATE
> Task :app:mergeReleaseJavaResource UP-TO-DATE
> Task :app:processApplicationManifestReleaseForBundle UP-TO-DATE
> Task :app:bundleReleaseResources
> Task :app:processReleaseResources
> Task :app:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :app:transformClassesWithAndroidEntryPointTransformForRelease UP-TO-DATE
> Task :app:transformClassesWithFirebasePerformancePluginForRelease UP-TO-DATE
> Task :app:transformClassesWithRealmTransformerForRelease UP-TO-DATE
> Task :app:minifyReleaseWithR8 UP-TO-DATE
> Task :app:l8DexDesugarLibRelease UP-TO-DATE
> Task :app:shrinkReleaseResources
Removed unused resources: Binary resource data reduced from 831KB to 779KB: Removed 6%
> Task :app:buildReleasePreBundle
> Task :app:uploadCrashlyticsMappingFileRelease
> Task :app:packageReleaseBundle
> Task :app:signReleaseBundle
> Task :app:bundleRelease
BUILD SUCCESSFUL in 15s
49 actionable tasks: 15 executed, 34 up-to-date
Build Analyzer results available
Using publishReleaseBundle task
> Task :app:preBuild UP-TO-DATE
> Task :app:extractProguardFiles
> Task :app:preReleaseBuild
> Task :app:compileReleaseAidl NO-SOURCE
> Task :app:compileReleaseRenderscript NO-SOURCE
> Task :app:generateReleaseResValues
> Task :app:generateReleaseResources
> Task :app:injectCrashlyticsMappingFileIdRelease
> Task :app:processReleaseGoogleServices
Parsing json file: /Users/Wez/episode_guide/app/google-services.json
> Task :generateEditForComDotWesleyellisDotNextepisode
> Task :app:packageReleaseResources
> Task :app:checkReleaseDuplicateClasses
> Task :app:extractDeepLinksRelease
> Task :app:generateReleasePlayResources
> Task :app:processReleaseVersionCodes
> Task :app:generateReleaseBuildConfig
> Task :app:createReleaseCompatibleScreenManifests
> Task :app:processReleaseMainManifest
> Task :app:processReleaseManifest
> Task :app:parseReleaseLocalResources
> Task :app:processReleaseJavaRes NO-SOURCE
> Task :app:mergeReleaseShaders
> Task :app:compileReleaseShaders NO-SOURCE
> Task :app:generateReleaseAssets UP-TO-DATE
> Task :app:mergeReleaseAssets
> Task :app:processApplicationManifestReleaseForBundle
> Task :app:mergeReleaseResources
> Task :app:processReleaseManifestForPackage
> Task :app:mergeReleaseJniLibFolders
> Task :app:collectReleaseDependencies
> Task :app:configureReleaseDependencies
> Task :app:validateSigningRelease
> Task :app:generateReleaseRFile
> Task :app:kaptGenerateStubsReleaseKotlin
> Task :app:parseReleaseIntegrityConfig
> Task :app:checkReleaseAarMetadata
> Task :app:mergeReleaseNativeLibs
> Task :app:kaptReleaseKotlin
> Task :app:bundleReleaseResources
> Task :app:processReleaseResources
> Task :app:compileReleaseKotlin
> Task :app:compileReleaseJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
> Task :app:mergeReleaseGeneratedProguardFiles
> Task :app:transformClassesWithAndroidEntryPointTransformForRelease
> Task :app:transformClassesWithFirebasePerformancePluginForRelease
> Task :app:mergeReleaseJavaResource
> Task :app:transformClassesWithRealmTransformerForRelease
> Task :app:minifyReleaseWithR8
> Task :app:shrinkReleaseResources
Removed unused resources: Binary resource data reduced from 876KB to 824KB: Removed 5%
> Task :app:l8DexDesugarLibRelease
> Task :app:buildReleasePreBundle
> Task :app:packageReleaseBundle
> Task :app:signReleaseBundle
> Task :app:publishReleaseBundle
Starting App Bundle upload: /Users/Wez/episode_guide/app/build/outputs/bundle/release/app-release.aab
Uploading App Bundle: 80% complete
App Bundle upload complete
Starting mapping file upload: /Users/Wez/episode_guide/app/build/outputs/mapping/release/mapping.txt
Uploading mapping file: 51% complete
Mapping file upload complete
Updating [completed] release (com.wesleyellis.nextepisode:[836]) in track 'internal'
> Task :commitEditForComDotWesleyellisDotNextepisode
Committing changes
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.6.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 3m 46s
48 actionable tasks: 48 executed
15:33:05: Task execution finished 'publishReleaseBundle'.
Example crash report for version above (836)
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 10
- Comments: 18
Commits related to this issue
- Fix Crashlytics Mapping uploads See https://github.com/Triple-T/gradle-play-publisher/issues/859 — committed to chrisbanes/tivi by chrisbanes 4 years ago
- Run known crash reporting plugins on publish (fixes #859, fixes #893) Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com> — committed to Triple-T/gradle-play-publisher by SUPERCILEX 4 years ago
I’ve also hit this. I’m not 100% sure, but I think the Crashlytics plugin is hooking up their
uploadCrashlyticsMappingFileReleasetask to depend explicitly onbundleRelease. SincebundleReleaseis no longer run bypublishReleaseBundle, the mapping task isn’t being run, so it’s not being uploaded.Easy workaround for now, just call both when publishing:
./gradlew bundleRelease publishReleaseYou could also probably hook it this up automatically in Gradle, but that feels overkill.
Ah, sorry for not replying. This plugin has nothing to do with crashlytics, so you’d have to set up the wiring yourself. That said, I think this it’s a decent feature request that wouldn’t be too hard to implement.
Also worth mentioning that the same Firebase versions worked correctly with AS v4.0.1 and
gradle-play-publisherv2.8.0, and the mapping files were uploaded correctly.