Android с несколькими вариантами сборки

У нас есть проект с несколькими вариантами, и каждый вариант имеет 3 различных типа сборки: отладка, контроль качества и выпуск.

productFlavors {
    flavor1 {}

    flavor2 {}

    flavor3 {}   
    }

buildTypes {
    debug {
        applicationIdSuffix ".debug"
    }

    qa {
        applicationIdSuffix ".qa"

    }

    release {
   ..
    }

Но для каждого аромата и buildType нам нужны разные зависимости библиотеки. Например:

compile 'baseUrl:myLibrary:1.0.0:flavor1Release@aar'
compile 'baseUrl:myLibrary:1.0.0:flavor1Qa@aar'
...
compile 'baseUrl:myLibrary:1.0.0:flavor3Qa@aar'

Можем ли мы добавить эти зависимости с помощью скрипта Groovy?

2 ответа

Решение

  1. Если вы хотите создать несколько типов сборки в нашем единственном проекте. Поэтому вам нужно следовать этому /questions/17956785/kak-zapustit-razlichnyie-variantyi-produkta-v-android-studio/56762660#56762660 Я использую следующий код, работающий нормально, поэтому никуда не уходите, просто перейдите по ссылке.

Я надеюсь, что этот код поможет вам в полной мере.

Я знаю, что вы можете определить конкретную зависимость для buildType, как это

debugCompile 'baseUrl:myLibrary:1.0.0:debugLib@aar'
releaseCompile 'baseUrl:myLibrary:1.0.0:release:Lib@aar'
  • компилировать: основное приложение
  • androidTestCompile: тестовое приложение
  • debugCompile: тип сборки отладки
  • releaseCompile: релиз Тип сборки.

Поскольку невозможно создать APK, у которого нет связанного типа сборки, APK всегда конфигурируется с двумя (или более) конфигурациями: Compile и Compile. Создание нового типа сборки автоматически создает новую конфигурацию на основе его имени.

Кажется, что он также отлично работает с ароматом, как описано здесь (но не с flavourDimensions)

Делать это для варианта (buildType+Flavor) кажется немного больше работы. В противном случае вы можете определить свою библиотеку как реальный библиотечный проект и использовать такой синтаксис

Чтобы создать зависимость от другого опубликованного артефакта, необходимо указать, какой из них использовать:

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

От: http://tools.android.com/tech-docs/new-build-system/user-guide

Другие вопросы по тегам