2016-07-04 8 views
0

Androidスタジオで、IDEショートカット(ctrl +クリック)を使用してクラスを開くと(モジュールAからモジュールBのクラスに)、そのクラスの.javaファイルを開くことが期待されます。クリックしたクラスが同じモジュールにない場合、そのクラスのコンパイルされていないバージョンになります。逆コンパイルではなく実際のソースを使用するようにAndroid Studioプロジェクトを設定するにはどうすればよいですか?

compile project(':moduleB')

だけのGradle設定の代わりに、手動の方法Choose Sources...と、それぞれのモジュールのソースコードにクラスをリンクする方法がある場合、私は好奇心?

enter image description here

+0

あなたは 'settings.gradle'ファイルを持っていますか? – njzk2

+0

はい私は 'include 'を行います:moduleB'、 ':moduleC'' – epool

答えて

0

最後に、私は、私の問題を解決するための回避策を見つけていない、それはこの問題を解決するための最良の方法だかどうかわからが、それは私のために動作します。私はより良いアプローチを聞くために開いています。私はすべてのモジュール名の依存関係を持つ配列を作成し、私のmoduleAbuild.gradleファイルで

def moduleNames = ['moduleB', 'moduleC', ...]

は、その後、私は私のモジュールのソースフォルダと私のsourceSetsを設定した:

android { 
    ... 
    sourceSets { 
     moduleNames.each { 
      main.java.srcDirs += "$rootDir/$it/src/main/java/" 
      androidTest.java.srcDirs += "$rootDir/$it/src/androidTest/java/" 
      test.java.srcDirs += "$rootDir/$it/src/test/java/" 
     } 
    } 
} 

そして、最後にモジュールをコンパイルします:

dependencies { 
    ... 
    moduleNames.each { compile project(":$it") } 
} 

UPDATE

私の問題は、私はあまりにもmoduleBを使用していたmoduleCを使用していたということでした。だからAndroid Studioは私にコンパイルされたバージョンを表示しようとしました。私は最終的に次の行で修正しました:

compile(project(':moduleC')) { 
    exclude module: 'moduleB' 
} 
compile project(':moduleB') 
+0

この後、私の' moduleB'クラスメソッドは 'メソッドが決して使われない'とマークされますが、実際には= /で使われます。 – epool

+0

問題は最後の更新で解決されました。 – epool

+0

は、 'compile'の代わりに'提供された 'メソッドを考慮します。これは、依存性を含めてコンパイルするためです。 (moduleCでは 'project( ':moduleB')'を '提供されたproject( ':moduleB')'で置き換えます) – njzk2

関連する問題