1

Androidフレーバーを使用して、フレーバーを別のフレーバーから継承し、親のクラスをオーバーライドしようとしています。ターゲットクラスが重複して表示されることを除いて、すべてが完璧に見え、機能します。私の推測では、親フレーバーのクラスを sourceSets から次のように除外する方法があると思います。

sourceSets {
    benchmark {
        java {
            srcDirs = ['src/main/java', 'src/offline/java', 'src/benchmark/java']

            exclude { '**/Facade.java' in sourceSets.offline.files }
        }
    }
}

誰かがこれで私を助けることができますか?ありがとう!

4

1 に答える 1

0

別のフレーバーから継承する代わりに、フレーバー ディメンションを使用する

android {
    ...


    flavorDimensions "version", "online"


    productFlavors {    
        benchmark {
            dimension "version"
            ...
        }

        standard {
            dimension "version"
            ...
        }

        online {
            dimension "online"
            ...
        }

        offline {
            dimension "online"
            ...
        }
    }
    //optionally filter combinations you don't want
    variantFilter { variant ->
        if (variant.flavors*.name.contains("online") && variant.flavors*.name.contains("benchmark")) {
            variant.ignore = true
        }
    }
}

の 1 つのバージョンをfacade.java入れるsrc\benchmark\java\com\yourcompany\namespace\facade.java

代替バージョンを入れるsrc\standard\java\com\yourcompany\namespace\facade.java

標準ディレクトリにはどのビルドフレーバーでも常に同じファイルが残り、src\main\java\com\yourcompany\namespace\

于 2017-04-11T18:57:07.860 に答える