Android 将build:gradle更新为3.3.0时,Crashlytics找不到清单

Android 将build:gradle更新为3.3.0时,Crashlytics找不到清单,android,gradle,Android,Gradle,我在我的应用程序中使用fabric crashlytics,当com.android.tools.build:gradle为3.2.1时,它运行良好,直到我将其更新为3.3.0 现在我遇到了“Crashlytics找不到清单”,并发现在build/mediates/merged_manifest/../merged中没有创建AndroidManifest.xml。 我读了很多书,但没有解决我的问题。 我怎么修理它?谢谢 这是自由党 apply plugin: 'com.android.libra

我在我的应用程序中使用fabric crashlytics,当com.android.tools.build:gradle为3.2.1时,它运行良好,直到我将其更新为3.3.0

现在我遇到了“Crashlytics找不到清单”,并发现在build/mediates/merged_manifest/../merged中没有创建AndroidManifest.xml。 我读了很多书,但没有解决我的问题。 我怎么修理它?谢谢

这是自由党

apply plugin: 'com.android.library'
buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'io.fabric'
repositories {
    maven { url 'https://maven.fabric.io/public' }
    ...
}

dependencies {
    ...
    api('com.crashlytics.sdk.android:crashlytics:2.9.8@aar') {
        transitive = true
    }
}
这是gradle项目

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        ...
    }
}
这就是错误:

您是否尝试过完全按照Crashlytics设置所需配置库模块和基本项目的所有内容?如果设置与推荐的不同,新的Gradle插件似乎不起作用


对于我来说,从库的build.gradle文件中删除“
apply plugin:'io.fabric'
”(但将其保留在application build.gradle中)解决了这个错误

我已经对此进行了修复,同时将Crashlytics依赖项排除在应用程序模块之外,但这是一个非常黑客的问题

据我所知,io.fabric插件主要用于为crashlytics生成一个构建ID,这对于fabric平台很重要,但对于Firebase却没有使用。我认为,这是一个残存的功能,当Crashlytics完成到Firebase的迁移时,它最终会被删除,但与此同时,这是非常必要的,因为Crashlytics会检查它,如果它不存在,就会使你的应用程序崩溃

所以,我只是简单地创建了一个无用的虚拟构建ID,并从我的模块中删除了所有关于ui.fabric插件的内容,它就可以工作了!我的代码像以前一样编译并向firebase控制台报告崩溃,我可以毫无问题地更新到android gradle插件v3.3.0+


我采取的具体步骤是:

将其添加到使用crashlytics的模块中的主/res/values.xml文件中:

RANDOM\u UUID

并删除io.fabric gradle插件的所有用法,以及对gradle插件的类路径依赖(因为您不再使用它)


请注意,正如我所说的,这是非常令人讨厌的。如果您在项目中采用这种方法,我建议您彻底测试它。可能有一些功能仍然使用构建ID,这将导致其中断

编辑:经过进一步调查,我相信这样做可以防止crashlytics上载映射文件,这意味着您必须手动清除堆栈跟踪。至少这仍然是一种选择,但似乎有缺点。同样值得注意的是,您也可以简单地使用:

false


我没有提供虚拟构建ID。

我也遇到了同样的问题,并使用Ionic 5、电容器和(参考Crashlytics)修复了它,您可能需要调整一些路径以适应您的环境:

  • 运行Gradlew Build命令,如
    /Gradlew assembleDebug
  • 等待你得到的错误
  • AndroidManifest.xml
    your app/src/main/AndroidManifest.xml
    复制到
    your app/build/intermediates/merged_manifests/debug/AndroidManifest.xml
  • 重新运行Gradlew Build命令,./Gradlew assembleDebug`
  • 您的构建过程现在应该成功了
  • 在我使用离子5和电容器的情况下,路径为:

    • android/cordova安卓插件/src/main/AndroidManifest.xml
    • android/cordova-android插件/build/intermediates/merged_-manifests/debug/AndroidManifest.xml

    希望对您有所帮助。

    这里也有同样的问题!我也一样!!!!我最终将结构移动到应用程序模块。它正在为我的答复工作。我试过了,但没办法。此外,它在gradle:3.2.1中工作,所以我认为这个配置很好。当更新到3.3.0时,在mediates/../merged中没有创建AndroidManifest.xml,所以我想这就是报告此错误的原因。感谢您的回复。我根据@Roman Potapov的回答来修复它。首先,将插件移动到app.gradle buildscript{repositories{maven{url'}}依赖项{classpath'io.fabric.tools:gradle:1.+'}}apply plugin:'io.fabric',然后将其保存在我的lib.gralde存储库{maven{url'}maven{url'}api('com.crashlytics.sdk.android:crashlytics:2.9)中。9@aar'){transitive=true}是的,这应该也可以,我在提供此解决方案时的观点是,它将所有Crashlytics保留在库模块中。首先,我使用库模块的全部原因是将我的代码与firebase/crashlytics完全解耦。是的,这很有意义。谢谢回复。这看起来是一个更容易完成的方法。谢谢,我有完全相同的问题,这就解决了它。但是现在找不到AAPT:error:resource color/accent(又名com.flexeventsapp.flex:color/accent)。你有没有碰到过这个问题?@ihorbond我跟着台阶走到了那里,你能修好吗?@Zen3515是的,我修好了。我创建了一个color.xml()文件,并将其放入\android\app\src\main\res\values您已经走上了正确的道路。您似乎有一些插件需要额外的config.xml(在您的例子中)颜色定义。您也需要复制它,可以创建一个用于复制静态资源的小脚本。