Как использовать разные зависимости в build.gradle? - PullRequest
0 голосов
/ 15 мая 2018

(связано с моим вопросом здесь )

Я хочу опубликовать одноразовое обновление для моего приложения для minSdk <14 (по сравнению с текущим minSdk = 15. Я рассматриваю возможность создания двух версий моего приложения - одного, которое поддерживает уровни API ниже 14 с библиотекой поддержки Android <strong>25.4.0 , а также для уровня API 14 и новее, использующего новейшую библиотеку поддержки 27.1.1, которая поддерживает только API 14 и выше.

Может ли раздел dependencies в build.gradle поддерживать импорт разных пакетов для разных версий?

Моя первая попытка выглядит так:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 27
    flavorDimensions "standard", "oldApi"

    defaultConfig {
        versionCode 37
        versionName "2.1.3"
        applicationId "org.app"
    }

    productFlavors {
        standard {
            dimension "standard"
            targetSdkVersion 27
            minSdkVersion 15
        }

        oldApi {
            dimension "oldApi"
            versionNameSuffix "X" //for old devices
            targetSdkVersion 14
            minSdkVersion 8
            maxSdkVersion 14
        }
    }

    signingConfigs {...}
    }

    buildTypes {
        release {...}
        debug {...}
    }
}

dependencies {
    standardImplementation project(path: ':MyappLibrary', configuration: 'standard')
    oldApiImplementation project(path: ':MyappLibrary', configuration: 'oldApi')
}

и

apply plugin: 'com.android.library'
android {
    compileSdkVersion 27
    flavorDimensions "standard", "oldApi"

    productFlavors {
        standard {
            dimension "standard"
        }

        oldApi {
            dimension "oldApi"
        }
    }
}

dependencies {
    api 'com.dropbox.core:dropbox-core-sdk:3.0.6'
    standardApi "com.android.support:appcompat-v7:$package_version"
    standardApi "com.android.support:support-v4:$package_version"
    oldApiApi 'com.android.support:appcompat-v7:25.4.0'
}

Ошибки (обратите внимание на выделенные части):

Невозможно разрешить зависимость для ': app @ standardOldApiDebug / compileClasspath': не удалось разрешить проект: MyappLibrary.

Невозможно разрешить зависимость для ': app @ standardOldApiDebugAndroidTest / compileClasspath': возможно не разрешить проект: MyappLibrary. Открыть файл Показать подробности

1 Ответ

0 голосов
/ 15 мая 2018

Может ли раздел dependencies в build.gradle поддерживать импорт разных пакетов для разных версий?

Вы можете указать:

productFlavors {
        f1 {
           //..
        }
        f2 {
           //..
        }
   }

dependencies{         
    f1Implementation 'com.android.support:appcompat-v7:XX.2.1'
    f2Implementation 'com.android.support:appcompat-v7:27..1'
}

Подробнее информация здесь .

...