迁移到gradle 3. +使用编译不同风格的库

时间:2018-04-04 17:31:22

标签: android android-gradle

我有一个非常复杂的项目,其中许多库彼此依赖。我已经浏览了所有的文档和视频,但没有任何东西指向我正确的方向来编译基于flavor的库。我对项目方面感到困惑。如果有人能指出我正确的方向来更新编译到实现,那将是很好的。如何直接替换配置:匹配风味?

这里是两个渐变的例子。

vnfmdata

//"myGrid1" should be the static id of the IG region
var widget      = apex.region('myGrid1').widget();
var grid        = widget.interactiveGrid('getViews','grid');  
var model       = grid.model; 
var results     = [];

model.forEach(function(r) {
    var record = r;

    //the name of the columns should be ID1 and ID2, if not
    //make the necessary changes using "_" to represent "space"
    var value1 = model.getValue(record,'ID1');
    var value2 = model.getValue(record,'ID2');

    if(value1 == 1 && value2 == 7) {
      results.push(record);
    }

})

console.log(results);

vnlocationservices

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')
}

1 个答案:

答案 0 :(得分:1)

修改 我发现在一个flavor中添加一个依赖节点会影响另一个味道。相反,最好使用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") }

如你所说,你可能会进入Migration Guide resolve matching errors

<强> vnfmdata

此处的更改位于风格以及依赖项的更改方式:

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'

    }
}

<强> vnlocationservices

在这里,我们看到如何声明仅由一种风格使用的依赖项。

{{1}}