未生成 Crashlytics 映射文件
Posted
技术标签:
【中文标题】未生成 Crashlytics 映射文件【英文标题】:Crashlytics Mapping files not getting generated 【发布时间】:2021-11-30 21:07:59 【问题描述】:我已经使用minifyEnabled true
启用了 proguard,并尝试从 jenkins 创建构建。但是在从 jenkins 创建 apk 时,我遇到了构建错误。
> Task :app:packageUat
> Task :app:uploadCrashlyticsMappingFileUat FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:uploadCrashlyticsMappingFileUat'.
> Crashlytics could not find the resource file generated by Google Services. You may need to execute the :process<Variant>GoogleServices Task. Please check your Firebase project configuration (https://firebase.google.com/docs/android/setup).
我在我的应用程序中使用 FCM 和 Crashlytics Google 服务。我没有包括google-service.json
,而是初始化运行时。这是firebase初始化代码:
FirebaseApp.initializeApp(mAppContext, new FirebaseOptions.Builder()
.setProjectId(BuildConfig.PROJECT_ID)
.setApiKey(BuildConfig.API_KEY)
.setApplicationId(BuildConfig.FCM_APPLICATION_ID)
.setGcmSenderId(BuildConfig.GCM_SENDER_ID)
.build());
FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true);
按照我在 jenkins 上使用的命令来创建构建:
clean
assemble$Build
这是我的 uat 构建配置:
uat
minifyEnabled true
shrinkResources true
signingConfig signingConfigs.uat
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
buildConfigField "String", 'API_KEY', API_KEY
buildConfigField "String", 'FCM_APPLICATION_ID', FCM_APPLICATION_ID
buildConfigField "String", 'PROJECT_ID', PROJECT_ID
buildConfigField "String", 'GCM_SENDER_ID', GCM_SENDER_ID
由于安全问题,我无法在我的项目中包含 google-service.json。我有什么遗漏吗?
【问题讨论】:
【参考方案1】:它清楚地告诉你它期望它在res
目录中:
Crashlytics 找不到由 Google 服务生成的资源文件。
XML 文件看起来很像 this... 但为什么不在构建时简单地提供 google-services.json
呢?这可能比从环境变量生成 XML 文件更省力(基本上就是插件所做的)。
实际上……documentation 写着:
Firebase 配置文件包含您项目的唯一但非机密标识符。
【讨论】:
google-service.json 的问题是,如果有人可以访问代码,那么任何人都可以访问密钥。这就是我们从 jenkins 注入它的原因。 只需添加一个构建步骤、shell 脚本,然后将整个文件作为 here-doc 注入。你没看我的回答吗?这个文件绝对没有什么“秘密”,任何可以反编译应用程序的人都可以访问这些字符串。这不是一个服务帐户配置文件,它会保存 SSH 密钥。 嗨@Martin 我明白了你的意思,但是真的可以在没有 google-services.json 的情况下在项目中配置 proguard 吗? @MartinZeitler:请帮助***.com/questions/69709546/…以上是关于未生成 Crashlytics 映射文件的主要内容,如果未能解决你的问题,请参考以下文章
Android 将特定构建警告视为错误,因此当 Crashlytics 映射文件上传失败时构建失败
Android NoHttpResponseException:Crashlytics 在上传 deobs 文件时出现问题