草庐IT

android - Crashlytics 无法解析 Android 项目结构

coder 2023-11-25 原文

我已将我的 Android 应用程序连接到 crashlytics。我的项目有 3 种风格。我添加到主 AndroidManifest.xml 中的结构 key 对所有 3 种风格都很常见。但是当我尝试构建 apk 文件时,它返回错误:

:app:fabricGenerateResourcesKzDebug
ERROR - Crashlytics Developer Tools error.
java.lang.IllegalArgumentException: Crashlytics could not parse the Android Project structure. 

接下来是我的口味项目的 gradle:

    flavorDimensions("build")

    productFlavors {
        kz {
            dimension "build"
        }
        ua {
            dimension "build"
        }
        uz {
            dimension "build"
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }

我构建的整个错误:

Starting a Gradle Daemon, 1 incompatible and 3 stopped Daemons could not be reused, use --status for details
Crashlytics couldn't find the res folder specified in sourceSets.main.res, please make one. It picked: src\main\res
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Crashlytics couldn't find the res folder specified in sourceSets.main.res, please make one. It picked: src\main\res
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Crashlytics couldn't find the res folder specified in sourceSets.main.res, please make one. It picked: src\main\res
Could not find google-services.json while looking in [src/ua/debug, src/debug/ua, src/ua, src/debug, src/uaDebug]
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Crashlytics couldn't find the res folder specified in sourceSets.main.res, please make one. It picked: src\main\res
Could not find google-services.json while looking in [src/ua/release, src/release/ua, src/ua, src/release, src/uaRelease]
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Crashlytics couldn't find the res folder specified in sourceSets.main.res, please make one. It picked: src\main\res
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Crashlytics couldn't find the res folder specified in sourceSets.main.res, please make one. It picked: src\main\res
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
:apiservice:preBuild UP-TO-DATE
:apiservice:preDebugBuild UP-TO-DATE
:apiservice:compileDebugAidl UP-TO-DATE
:apiservice:compileDebugRenderscript UP-TO-DATE
:apiservice:checkDebugManifest UP-TO-DATE
:apiservice:generateDebugBuildConfig UP-TO-DATE
:apiservice:generateDebugResValues UP-TO-DATE
:apiservice:generateDebugResources UP-TO-DATE
:apiservice:packageDebugResources UP-TO-DATE
:apiservice:platformAttrExtractor UP-TO-DATE
:apiservice:processDebugManifest UP-TO-DATE
:apiservice:generateDebugRFile
:apiservice:prepareLintJar UP-TO-DATE
:apiservice:generateDebugSources
:apiservice:javaPreCompileDebug UP-TO-DATE
:apiservice:compileDebugJavaWithJavac
:apiservice:extractDebugAnnotations
:apiservice:mergeDebugConsumerProguardFiles
:apiservice:mergeDebugShaders UP-TO-DATE
:apiservice:compileDebugShaders UP-TO-DATE
:apiservice:generateDebugAssets UP-TO-DATE
:apiservice:packageDebugAssets UP-TO-DATE
:apiservice:packageDebugRenderscript NO-SOURCE
:apiservice:processDebugJavaRes NO-SOURCE
:apiservice:transformResourcesWithMergeJavaResForDebug
:apiservice:transformClassesAndResourcesWithSyncLibJarsForDebug
:apiservice:compileDebugNdk NO-SOURCE
:apiservice:mergeDebugJniLibFolders
:apiservice:transformNativeLibsWithMergeJniLibsForDebug
:apiservice:transformNativeLibsWithSyncJniLibsForDebug
:apiservice:bundleDebug
:apiservice:compileDebugSources
:apiservice:assembleDebug
:apiservice:preReleaseBuild UP-TO-DATE
:apiservice:compileReleaseAidl
:apiservice:compileReleaseRenderscript
:apiservice:checkReleaseManifest
:apiservice:generateReleaseBuildConfig
:apiservice:generateReleaseResValues
:apiservice:generateReleaseResources
:apiservice:packageReleaseResources
:apiservice:processReleaseManifest
:apiservice:generateReleaseRFile
:apiservice:generateReleaseSources
:apiservice:javaPreCompileRelease
:apiservice:compileReleaseJavaWithJavac
:apiservice:extractReleaseAnnotations
:apiservice:mergeReleaseConsumerProguardFiles
:apiservice:mergeReleaseShaders
:apiservice:compileReleaseShaders
:apiservice:generateReleaseAssets
:apiservice:packageReleaseAssets
:apiservice:packageReleaseRenderscript NO-SOURCE
:apiservice:processReleaseJavaRes NO-SOURCE
:apiservice:transformResourcesWithMergeJavaResForRelease
:apiservice:transformClassesAndResourcesWithSyncLibJarsForRelease
:apiservice:compileReleaseNdk NO-SOURCE
:apiservice:mergeReleaseJniLibFolders
:apiservice:transformNativeLibsWithMergeJniLibsForRelease
:apiservice:transformNativeLibsWithSyncJniLibsForRelease
:apiservice:bundleRelease
:apiservice:compileReleaseSources
:apiservice:mergeReleaseResources
:apiservice:verifyReleaseResources
:apiservice:assembleRelease
:apiservice:assemble
:apiservice:lint
Ran lint on variant debug: 4 issues found
Ran lint on variant release: 4 issues found
Wrote HTML report to file:///E:/Jenkins/vbi-build/workspace/apiservice/build/reports/lint-results.html
Wrote XML report to file:///E:/Jenkins/vbi-build/workspace/apiservice/build/reports/lint-results.xml
:apiservice:preDebugUnitTestBuild UP-TO-DATE
:apiservice:javaPreCompileDebugUnitTest
:apiservice:compileDebugUnitTestJavaWithJavac
:apiservice:mockableAndroidJar
:apiservice:processDebugUnitTestJavaRes NO-SOURCE
:apiservice:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug
:apiservice:testDebugUnitTest
:apiservice:preReleaseUnitTestBuild UP-TO-DATE
:apiservice:javaPreCompileReleaseUnitTest
:apiservice:compileReleaseUnitTestJavaWithJavac
:apiservice:processReleaseUnitTestJavaRes NO-SOURCE
:apiservice:transformClassesAndResourcesWithPrepareIntermediateJarsForRelease
:apiservice:testReleaseUnitTest
:apiservice:test
:apiservice:check
:apiservice:build
:app:preBuild UP-TO-DATE
:app:preKzDebugBuild UP-TO-DATE
:app:compileKzDebugAidl UP-TO-DATE
:app:compileKzDebugRenderscript UP-TO-DATE
:app:checkKzDebugManifest UP-TO-DATE
:app:generateKzDebugBuildConfig UP-TO-DATE
:app:prepareLintJar UP-TO-DATE
:app:mainApkListPersistenceKzDebug UP-TO-DATE
:app:mergeKzDebugShaders UP-TO-DATE
:app:compileKzDebugShaders UP-TO-DATE
:app:generateKzDebugAssets UP-TO-DATE
:app:mergeKzDebugAssets UP-TO-DATE
:app:processKzDebugGoogleServices
Parsing json file: E:\Jenkins\vbi-build\workspace\app\src\kz\google-services.json
:app:createKzDebugCompatibleScreenManifests UP-TO-DATE
:app:processKzDebugManifest UP-TO-DATE
:app:fabricGenerateResourcesKzDebug
ERROR - Crashlytics Developer Tools error.
java.lang.IllegalArgumentException: Crashlytics could not parse the Android Project structure. 
Contact support@fabric.io for assistance.
    at com.crashlytics.tools.android.DeveloperTools.processProperties(DeveloperTools.java:489)
    at com.crashlytics.tools.android.DeveloperTools.processArgsInternal(DeveloperTools.java:348)
    at com.crashlytics.tools.android.DeveloperTools.gradleMain(DeveloperTools.java:292)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:46)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:91)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
    at com.crashlytics.tools.gradle.tasks.FabricTaskBuilder.callDevtoolsWrappingRuntimeExceptions(FabricTaskBuilder.groovy:359)
    at com.crashlytics.tools.gradle.tasks.FabricTaskBuilder.this$2$callDevtoolsWrappingRuntimeExceptions(FabricTaskBuilder.groovy)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
    at com.crashlytics.tools.gradle.tasks.FabricTaskBuilder$_pluginGenerateResources_closure4.doCall(FabricTaskBuilder.groovy:132)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
    at groovy.lang.Closure.call(Closure.java:414)
    at groovy.lang.Closure.call(Closure.java:430)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:718)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:691)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Invalid resource path: E:\Jenkins\vbi-build\workspace\app\src\main\res
    at com.crashlytics.tools.android.project.StandardAndroidProject.getValuesDirectory(StandardAndroidProject.java:55)
    at com.crashlytics.tools.android.project.StandardAndroidProjectFactory.createTypedProject(StandardAndroidProjectFactory.java:201)
    at com.crashlytics.tools.android.project.StandardAndroidProjectFactory.create(StandardAndroidProjectFactory.java:150)
    at com.crashlytics.tools.android.project.StandardAndroidProjectFactory.create(StandardAndroidProjectFactory.java:125)
    at com.crashlytics.tools.android.DeveloperTools.processProperties(DeveloperTools.java:484)
    ... 79 more
:app:fabricGenerateResourcesKzDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:fabricGenerateResourcesKzDebug'.
> Crashlytics Developer Tools error.

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:fabricGenerateResourcesKzDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: org.gradle.api.GradleException: Crashlytics Developer Tools error.
    at com.crashlytics.tools.gradle.tasks.FabricTaskBuilder.callDevtoolsWrappingRuntimeExceptions(FabricTaskBuilder.groovy:375)
    at com.crashlytics.tools.gradle.tasks.FabricTaskBuilder.this$2$callDevtoolsWrappingRuntimeExceptions(FabricTaskBuilder.groovy)
    at com.crashlytics.tools.gradle.tasks.FabricTaskBuilder$_pluginGenerateResources_closure4.doCall(FabricTaskBuilder.groovy:132)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:718)
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:691)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
    ... 29 more
Caused by: com.crashlytics.tools.android.exception.PluginException: Crashlytics Developer Tools error.
    at com.crashlytics.tools.android.DeveloperTools.processArgsInternal(DeveloperTools.java:356)
    at com.crashlytics.tools.android.DeveloperTools.gradleMain(DeveloperTools.java:292)
    at com.crashlytics.tools.gradle.tasks.FabricTaskBuilder.callDevtoolsWrappingRuntimeExceptions(FabricTaskBuilder.groovy:359)
    ... 40 more
Caused by: java.lang.IllegalArgumentException: Crashlytics could not parse the Android Project structure. 
Contact support@fabric.io for assistance.
    at com.crashlytics.tools.android.DeveloperTools.processProperties(DeveloperTools.java:489)
    at com.crashlytics.tools.android.DeveloperTools.processArgsInternal(DeveloperTools.java:348)
    ... 42 more
Caused by: java.lang.IllegalArgumentException: Invalid resource path: E:\Jenkins\vbi-build\workspace\app\src\main\res
    at com.crashlytics.tools.android.project.StandardAndroidProject.getValuesDirectory(StandardAndroidProject.java:55)
    at com.crashlytics.tools.android.project.StandardAndroidProjectFactory.createTypedProject(StandardAndroidProjectFactory.java:201)
    at com.crashlytics.tools.android.project.StandardAndroidProjectFactory.create(StandardAndroidProjectFactory.java:150)
    at com.crashlytics.tools.android.project.StandardAndroidProjectFactory.create(StandardAndroidProjectFactory.java:125)
    at com.crashlytics.tools.android.DeveloperTools.processProperties(DeveloperTools.java:484)
    ... 43 more


* Get more help at https://help.gradle.org

BUILD FAILED in 1m 49s
70 actionable tasks: 45 executed, 25 up-to-date
Build step 'Invoke Gradle script' changed build result to FAILURE
Build step 'Invoke Gradle script' marked build as failure
Finished: FAILURE

我是使用口味的新手,所以问题可能就在这里(实际上我不知道)。但是,我被卡住了。

我的项目结构:

最佳答案

在重组我的 flavor 的资源后,我遇到了同样的错误。

你必须确保每个口味都有一个 res 文件夹在里面。即使 flavor 没有自己的资源。添加一些空文件夹后,构建再次成功。

例子:

/App
  /src
    /flavor1
       /res <--
    /flavor1Release
       /res <--
    /flavor2
       /res <--
    /main
       /res <--

关于android - Crashlytics 无法解析 Android 项目结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49726436/

有关android - Crashlytics 无法解析 Android 项目结构的更多相关文章

  1. Ruby 解析字符串 - 2

    我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  4. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  5. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  6. ruby - 用逗号、双引号和编码解析 csv - 2

    我正在使用ruby​​1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\

  7. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  8. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  9. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  10. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

随机推荐