Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio无法生成具有跨模块依赖性的模块_Android_Android Gradle Plugin_Android Studio 3.0 - Fatal编程技术网

Android Studio无法生成具有跨模块依赖性的模块

Android Studio无法生成具有跨模块依赖性的模块,android,android-gradle-plugin,android-studio-3.0,Android,Android Gradle Plugin,Android Studio 3.0,我有一个包含4个模块的项目,比如a、B、C、D。模块C是a、B和D中常见代码的容器。模块C使用Wire从Protobuffers生成Java代码。模块B同时依赖于模块C和D。不过,我在B中只有一个编译项目依赖性,因为B编译D编译C 在去年Android Studio更新之前,一切都很好,当我“失去了编辑器”时,即模块仍在良好构建,但Android Studio在模块A和B中编辑时错过了生成的Java类,并将我的代码“相当”地涂成红色,即编辑器不知道从C生成的类,丢失语法完成和所有其他内容 在谷歌

我有一个包含4个模块的项目,比如a、B、C、D。模块C是a、B和D中常见代码的容器。模块C使用Wire从Protobuffers生成Java代码。模块B同时依赖于模块C和D。不过,我在B中只有一个编译项目依赖性,因为B编译D编译C

在去年Android Studio更新之前,一切都很好,当我“失去了编辑器”时,即模块仍在良好构建,但Android Studio在模块A和B中编辑时错过了生成的Java类,并将我的代码“相当”地涂成红色,即编辑器不知道从C生成的类,丢失语法完成和所有其他内容

在谷歌开了一张罚单之后,什么都没发生。我花了一段时间来解决这个问题

 sourceSets {
    main.java.srcDirs += '../common/build/generated/source/java/'
}
在我的(A或B)年级。这使编辑保持了原样,但项目仍在建设中

使用Android Studio 3.0,我不再构建模块。在上面的sourceset行中,我最终发现dexer找到了重复的类

Information:Gradle tasks [:app:assembleDebug]
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lde/spieleck/app/badgers/messages/BadgeMsg$Builder;
Error:com.android.dex.DexException: Multiple dex files define Lde/spieleck/app/badgers/messages/BadgeMsg$Builder;
Error:  at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error:  at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error:  at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error:  at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error:  at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error:  at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1445)
Error:  at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error:  at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:902)
Error:  at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1689)
Error:  at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1644)
Error:  at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lde/spieleck/app/badgers/messages/BadgeMsg$Builder;
Information:BUILD FAILED in 8s
Information:BUILD 61 FINISHED; failure=org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
Information:16 errors
Information:0 warnings
Information:See complete output in console
如果没有上面的渐变行,编译器将无法找到代码:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Unable to find source java class: 'D:\00meins\AndroidStudioProjects\Badgers-UI\common\build\generated\source\java\de\spieleck\app\badgers\messages\BadgeMsg.java' because it does not belong to any of the source dirs: '[D:\00meins\AndroidStudioProjects\Badgers-UI\app\src\main\java, D:\00meins\AndroidStudioProjects\Badgers-UI\app\src\debug\java, D:\00meins\AndroidStudioProjects\Badgers-UI\app\build\generated\source\r\debug, D:\00meins\AndroidStudioProjects\Badgers-UI\app\build\generated\source\buildConfig\debug, D:\00meins\AndroidStudioProjects\Badgers-UI\app\build\generated\source\aidl\debug, D:\00meins\AndroidStudioProjects\Badgers-UI\app\build\generated\source\rs\debug]'
困惑的评论:当我绝望地试图将gradle、gradle工具等从Android Studio降级到之前Android Studio版本的状态时,由于依赖性越来越多,我放弃了一半,并将东西恢复到AS3.0提供和构建模块的状态

然而,在重新启动AS3.0之后,我又回到了上述困境。我的意思是,我真的不能每次都来回编辑我的渐变设置来让构建工作正常

有没有关于如何更好地设置依赖项或修复所有编译、构建和语法突出显示的建议

我现在忙了一个长周末,希望下周早些时候能得到答案

参考资料:

  • G+:
  • 谷歌问题:

  • 这不是一个超级答案,因为事情是复杂的和真实的世界。但谷歌支持人员善意地检查了我的设置,发现生成的代码需要特定的源代码设置,这在AS2.2中是可选的


    所以,如果你从AS3开始,它可能不会发生。但随着时间的推移,事情变得一团糟,在迁移后突然停止工作,这一点并不明显。

    这不是一个超级答案,因为事情是复杂的和真实的。但谷歌支持人员善意地检查了我的设置,发现生成的代码需要特定的源代码设置,这在AS2.2中是可选的

    所以,如果你从AS3开始,它可能不会发生。但随着时间的推移,事情变得一团糟,迁移后突然停止工作,这一点并不明显