2017-10-27 5 views
1

モジュールA、B、C、Dの4つのモジュールを持つプロジェクトがあります。モジュールCはA、B、Dの共通コードのコンテナです。 ProtobuffersからJavaコードを生成します。モジュールBはモジュールCとDの両方に依存しています。私はBでコンパイルプロジェクトの依存関係は1つしかありませんが、BコンパイルではCコンパイルが行われます。Android Studioはモジュール間の依存関係を持つモジュールを作成できません

昨年、エディタ "、つまりモジュールはまだうまく構築されていましたが、モジュールAとBで編集するときにAndroid Studioが生成されたJavaクラスを見落とし、コードが"かなり "赤く塗りつぶされました。他のもの。

Googleでチケットを開いた後、何も起こりませんでした。私はしばらく、

sourceSets { 
    main.java.srcDirs += '../common/build/generated/source/java/' 
} 

を私の(AまたはB)グラデルにしました。エディタをそのままにしていたので、プロジェクトはとにかくビルドされていました。

Androidスタジオ3.0では、私のモジュールはこれ以上ビルドされません。

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]' 

混乱の発言:私はdexerはGradleのライン上でなければ、重複クラス

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 

を見つけることで終わる上記のsourceSetラインで、私は、コンパイラがコードを見つけないで終わるdesparately私がしようとしたとき、ダウングレードのグラデル、グラデルツールなどで、以前のAndroid Studioリリースの状態にAndroidスタジオが移行しましたが、依存関係がますます増えたため、途中で諦め、AS3.0が提供しているモジュールに戻ってきました。

しかし、AS3.0を再起動した後、私は上記のジレンマに戻ります。私は実際に私のgradleの設定を前後に編集することができないことを意味するたびに構築作業を取得します。

私の依存関係をより良く設定する方法や、コンパイル、ビルディング、構文の強調表示をすべて修正する方法はありますか?

私は来週早々に回答を期待して、長い週末のために今AFKです。

参考文献:

  1. G +:https://plus.google.com/u/0/+FrankNestel/posts/c177h2R1qJz
  2. 、Googleの問題:https://issuetracker.google.com/issues/37120454

答えて

0

物事が複雑で、現実の世界ですので、これは、スーパー答えではありません。しかし、Googleのサポートは、私の設定を親切に調べて、生成されたコードの特定のソース設定が必要になったことを知りました。これはAS2.2ではオプションです。

とにかくAS3で始めると、おそらくそれは起こりません。しかし、時間が経つにつれて物事が乱雑になり、移行後に仕事が突然停止したため、これは明らかに分かりにくいものでした。

関連する問題