首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过编译不同风格的库迁移到分级3.+

通过编译不同风格的库迁移到分级3.+
EN

Stack Overflow用户
提问于 2018-04-04 17:31:22
回答 1查看 172关注 0票数 1

我有一个非常复杂的项目,其中有许多相互依赖的库。我已经看过了所有的文档和视频,但是没有任何东西能指引我根据口味编译库的正确方向。我对项目方面感到困惑。如果有人能为我指出正确的方向来更新编译到实现,那就太好了。如何直接替换配置:与口味匹配?

这里有两个等级的例子。

vnfmdata

代码语言:javascript
复制
android {
    compileSdkVersion build_versions.compile_sdk
    buildToolsVersion build_versions.build_tools

    defaultConfig {
        minSdkVersion build_versions.min_sdk
        targetSdkVersion build_versions.target_sdk
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    publishNonDefault true
    flavorDimensions flavor.default
    productFlavors {
        regular {}
        no_meridian {}
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    regularCompile project(':vncore')
    regularCompile project(path: ':vnlocationservice', configuration: 'meridianDebug')

    no_meridianCompile project(':vncore')
    no_meridianCompile project(path: ':vnlocationservice', configuration: 'no_meridianDebug')
}

vnlocationservices

代码语言:javascript
复制
android {
    compileSdkVersion build_versions.compile_sdk
    buildToolsVersion build_versions.build_tools

    defaultConfig {
        minSdkVersion build_versions.min_sdk
        targetSdkVersion build_versions.target_sdk
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    publishNonDefault true
    productFlavors {
        no_meridian {}
        meridian {}
    }

    buildTypes {
        release {
            //minifyEnabled false
            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError false
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile deps.support.app_compat

    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    no_meridianCompile project(':vncore')

    meridianCompile project(':vncore')
    meridianCompile project(':third:Sas-Android')

    //Localytics
    meridianCompile deps.support.compat_v26
    meridianCompile deps.play.ads
    meridianCompile deps.play.location
    meridianCompile deps.localytics
    ///////////////////

    meridianCompile 'com.arubanetworks.meridian:meridian:+@aar'

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-05 05:01:59

编辑:我发现将依赖节点添加到风味中会影响其他风味。相反,最好使用<flavor's name>Implementation

正如你所说的,你可能进入了迁移指南解决匹配错误

vnfmdata

在这里,更改位于口味和依赖关系变化的方式上:

代码语言:javascript
复制
android {
    ...
    productFlavors {
        regular {
            // Forces regular's flavor to point on LocationService meridian's flavor 
            // because their flavors' name are different
            matchingFallbacks = ["meridian"]
        }
        no_meridian {
            // Will automatically point on LocationService no_meridian's flavor 
            // because they both have the same name
        }
    }
    ...
}

dependencies {
    // We used the flavors' matching feature
    // so gradle knows that if you select regular, you wants the meridian flavor on these 2 projects
    implementation project (":vncore")
    implementation project (":vnlocationservice")

}

vnlocationservices

在这里,我们将看到如何声明一个只有一种口味的依赖项。

代码语言:javascript
复制
android {
    ...
    productFlavors {
        meridian {}
        no_meridian {}
    }
    ...
}

dependencies {
    implementation project (":vncore")

    meridianImplementation project(':third:Sas-Android')

    //Localytics
    meridianImplementation deps.support.compat_v26
    meridianImplementation deps.play.ads
    meridianImplementation deps.play.location
    meridianImplementation deps.localytics
    ///////////////////

    meridianImplementation  'com.arubanetworks.meridian:meridian:+@aar'

    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49657063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档