web-dev-qa-db-ja.com

gradleとAndroid Studioでのデバッグとリリースの異なる依存関係

Androidプロジェクト、純粋なJavaプロジェクトに依存しています。両方とも別のJavaライブラリ、 Android Studio。そのライブラリの2つのバージョンがあり、両方のAndroidとJavaプロジェクトデバッグモードでそれらの1つに依存し、リリースで別の-に依存します。

Android project?For pure Java project?How?

48
Meteorite

ビルドタイプ(デバッグ、リリース、またはカスタム)は、独自の依存関係を持つことができます。

ビルドタイプに固有の依存関係を指定するには、次の手順を実行します。

dependencies {
    debugCompile "mydebugdependency"
    releaseCompile "myreleasedependency"
}

JavaプロジェクトとAndroidプロジェクトが両方ともgradleを使用している場合、build.gradleファイルの両方で上記を実行できます。

58
athor

buildDebug依存関係も無視されていました。私のセットアップはアプリモジュールとライブラリモジュールであり、ビルドタイプをアプリからライブラリモジュールに伝達する必要があります。つまり、アプリでデバッグタイプをコンパイルするときに、ライブラリデバッグタイプも取得する必要があります。

前述のように、app gradleファイルの各ビルドタイプに特定の依存関係を持たせようとしましたが、役に立ちませんでした。

buildTypes {
    debug {
        debuggable true
        applicationIdSuffix ".debug"

        dependencies {
            debugCompile project(":library")
        }
    }
}

最終的に私にとってのトリックはこれでした: http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication

したがって、ライブラリの依存関係はapp gradleファイルのグローバルな依存関係スコープで(通常どおり)管理されます。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    releaseCompile project(path: ':library', configuration: 'release')
    debugCompile project(path: ':library', configuration: 'debug')
}

ライブラリのgradleビルドファイルにこれを追加する必要がありました:

Android {
    publishNonDefault true
}

これにより、すべての依存関係のビルドタイプが公開されます。依存関係をコンパイルするのに時間がかかる場合、このソリューションは適切ではない可能性があることに注意してください。

36
takecare

次のパターンを使用してこれを行うことができます

build_variant_namedependency_configurations "依存"
build_variant_namedependency_configurationsproject(path: ':libName'、configuration: 'build_variant_name of libName')

例えば

dependencies {

    FreeDebugImplementation "dependency"
    PaidReleaseApi project(path: ':libName', configuration: 'release')
}

ビルドバリアントの詳細については、こちらをご覧ください- https://developer.Android.com/studio/build/build-variants 依存関係の構成- https://developer.Android.com/studio/build/gradle-plugin-3-0-0-migration#new_configurations

3
yoAlex5