13

実験的なgradleプラグインを使用するプロジェクトがあります0.2.0. を持っていないときはproductFlavor、ライブラリ モジュールを Android Studio に完全に統合でき、すべてが完全に機能します。しかし、ライブラリに がある場合、productFlavorメイン プロジェクトでライブラリ クラスが見つかりません。

この修正は、実験的な gradle プラグインでは機能しないようです。make フレーバーが新しいプラグインでどのように機能するか、誰か知っていますか?

としょうかん:

android.productFlavor {
    create ('flavor') {
        ...
    }
}

計画:

...

dependencies {
    compile project(':mylibrary')
}
4

3 に答える 3

10

これは役立つかもしれませんか?

図書館出版物

デフォルトでは、ライブラリはそのリリース バリアントのみを公開します。このバリアントは、ライブラリを参照するすべてのプロジェクトで使用されます。どのバリアントを自分で作成するかに関係ありません。これは、削除に向けて取り組んでいる Gradle の制限による一時的な制限です。

どのバリアントを公開するかを制御できます

android { defaultPublishConfig "debug" }

この発行構成名は完全なバリアント名を参照することに注意してください。リリースとデバッグは、フレーバーがない場合にのみ適用されます。フレーバーの使用中にデフォルトの公開バリアントを変更したい場合は、次のように記述します。

android {defaultPublishConfig "flavor1Debug" }

ライブラリのすべてのバリアントを公開することもできます。通常のプロジェクト間の依存関係 (上記のように) を使用しながらこれを許可することを計画していますが、Gradle の制限により、これは現在不可能です (それらの修正にも取り組んでいます)。デフォルトでは、すべてのバリアントの公開は有効になっていません。それらを有効にするには:

android {publishNonDefault true } 

複数のバリアントを公開することは、複数のバリアントを含む単一の aar ではなく、複数の aar ファイルを公開することを意味することを理解することが重要です。各 aar パッケージには、単一のバリアントが含まれています。バリアントを公開するということは、この aar を Gradle プロジェクトの出力成果物として利用できるようにすることを意味します。これは、maven リポジトリに発行するとき、または別のプロジェクトがライブラリ プロジェクトへの依存関係を作成するときに使用できます。

Gradle にはデフォルトの "アーティファクト" という概念があります。これは、次の記述時に使用されるものです。

compile project(':libraries:lib2')

公開された別のアーティファクトへの依存関係を作成するには、使用するアーティファクトを指定する必要があります。

dependencies {
    flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
    flavor2Compile project(path: ':lib1', configuration: 'flavor2Release') 
}

重要: 公開された構成は、ビルド タイプを含む完全なバリアントであり、そのように参照する必要があることに注意してください。重要: デフォルト以外の公開を有効にすると、Maven 公開プラグインはこれらの追加のバリアントを追加のパッケージとして (分類子を使用して) 公開します。これは、Maven リポジトリへの公開と実際には互換性がないことを意味します。単一のバリアントをリポジトリに公開するか、プロジェクト間の依存関係に対してすべての構成公開を有効にする必要があります。

ここから。

于 2015-10-18T08:44:40.200 に答える