web-dev-qa-db-ja.com

Android St​​udioにリンクされたソースフォルダーを追加する方法

Eclipseでは、ソースフォルダを「リンクされたソースフォルダ」としてAndroidプロジェクトに追加できます。 Android St​​udioで同じことを実現するにはどうすればよいですか?

または、外部フォルダを追加してgradleでビルドすることは可能ですか?

60
Erik Z

build.gradleで、以下をAndroidノードの最後に追加します

Android {
    ....
    ....

    sourceSets {
        main.Java.srcDirs += 'src/main/<YOUR DIRECTORY>'
    }

}
91
fabrizotus

正しい答えは:

Android {
    ....
    ....

    sourceSets {
        main.Java.srcDirs += 'src/main/<YOUR DIRECTORY>'
    }
}

さらに、外部ソースディレクトリがsrc/mainの下にない場合、次のような相対パスを使用できます。

sourceSets {
    main.Java.srcDirs += 'src/main/../../../<YOUR DIRECTORY>'
}
18
lyfshadyboss

誰かが興味がある場合に備えて、Javaマルチモジュールアプリケーション内のビルドされたアーティファクトを正しく生成および参照する完全なAndroidモジュールgradleファイルがあります

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "net.ltgt.gradle:gradle-apt-plugin:0.15"
    }
}

apply plugin: "net.ltgt.apt"
apply plugin: "Java-library"
apply plugin: "idea"

idea {
    module {
        sourceDirs += file("$buildDir/generated/source/apt/main")
        testSourceDirs += file("$buildDir/generated/source/apt/test")
    }
}

dependencies {

    // Dagger 2 and Compiler
    compile "com.google.dagger:dagger:2.15"
    apt "com.google.dagger:dagger-compiler:2.15"
    compile "com.google.guava:guava:24.1-jre"

}

sourceCompatibility = "1.8"
targetCompatibility = "1.8"
2
Hector

sourceSetsを使用するとディレクトリ構造全体を含めることができますが、ここで説明するように、Android St​​udio(バージョン1.2以降)でその一部を除外する方法はありません。 Android Studio Excludeクラスビルドから?

Android St​​udioがAndroidソースのinclude/excludeディレクティブをサポートするように更新されるまで、 Symlinks は非常にうまく機能します。 Windowsを使用している場合、junctionmklinkなどのネイティブツールは、Un * xシンボリックリンクと同等の機能を実現できます。 CygWin は、少し強制的にこれらを作成することもできます。参照: WindowsのGit Symlinks および Windows 7のcygwinでシンボリックリンクを作成する方法

2
Brian White

ソースフォルダをビルドスクリプトに追加してから同期できます。次のドキュメントでsourceSetsを探します。 http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Basic-Project

テストソースフォルダーを追加する良い方法が見つかりません。ソースを手動で.imlファイルに追加しました。もちろん、これは、ビルドスクリプトが同期されるたびに消えることを意味します。

2
tom

Gradleを使用していない場合(たとえば、APKからプロジェクトを作成する場合)、これはAndroid St​​udio UI(バージョン3.3.2以降)を使用して実行できます。

  • プロジェクトのルートディレクトリを右クリックし、Open Module Settingsを選択します
  • + Add Content Rootボタンを押す(中央右)
  • パスを追加してOKを押します

私の経験では(ネイティブコードを使用)、.soがデバッグシンボルと同じ絶対パスから構築されている限り、ソースファイルに追加されたブレークポイントは自動的に認識されます。

0
Jeremy Nikolai