powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / ошибка при компиляции с различными flavors
6 сообщений из 6, страница 1 из 1
ошибка при компиляции с различными flavors
    #39881665
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Раньше я с flavors не работал.
В общем есть проект, в котором нужно менять один файл (res\field_list.xml) для разных клиентов. Сейчас я это делаю вручную, но хочется попробовать автоматическую компиляцию.

Вот как выглядит кусок build.gradle
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  flavorDimensions "main"
    productFlavors {
        any {
            dimension "main"
//                    applicationId 'com.example.myapp.free'
//            versionNameSuffix "-any"
        }

        bn {
            dimension "main"
            versionNameSuffix "-bn"
        }

        yp {
            dimension "main"
            versionNameSuffix "-yp"
        }
    }




структура папки на скриншоте.
Выдает ошибку: Gradle DSL method not found: 'dimension()'

Предлагает обновить plugin, но дело в том, что этот плагин и используется.
ERROR: Gradle DSL method not found: 'dimension()'
Possible causes:
The project 'XXX' may be using a version of the Android Gradle plug-in that does not contain the method (e.g. 'testCompile' was added in 1.1.0).
Upgrade plugin to version 3.5.1 and sync project

The project 'XXX' may be using a version of Gradle that does not contain the method.
Open Gradle wrapper file

The build file may be missing a Gradle plugin.
Apply Gradle plugin


Кусок главного build.gradle
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
//        classpath 'com.android.tools.build:gradle:1.1.0'
        classpath 'com.android.tools.build:gradle:3.5.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}


Поиск по гугл ничего толкового не дал, в чем может быть дело?
...
Рейтинг: 0 / 0
ошибка при компиляции с различными flavors
    #39881799
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а gradle какой версии? попробуй еще плагин версии 3.4.0 - у меня начиная с 3.5.х annotation processing не работает, кто знает что еще там поломано
...
Рейтинг: 0 / 0
ошибка при компиляции с различными flavors
    #39882290
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вроде решил проблему, была ошибка манифесте.

Теперь другая проблема: как бы имя файла сгенерировать в зависимости от productFlavors?
Сейчас я пользуюсь следующим содранным сниппетом:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
def static appendVersionName(variant, defaultConfig) {
    variant.outputs.each { output ->
        if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) {
            def apk_name = "XXX-release-v"
            def versionName = defaultConfig.versionName
            def newName = "${apk_name}${versionName}.apk"
            output.outputFileName = newName
        }
android {
...
 buildTypes {
        debug {
        }
        release {
            minifyEnabled false // true
//            zipAlignEnabled true
//            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationVariants.all { variant ->
                appendVersionName(variant, defaultConfig)
            }
        }
}


Кто может поделиться, как передать productFlavors в appendVersionName?
Кстати, раз уже пошла такая тема, gradle выдает предупреждение
API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.

Как это корректно меняется?
...
Рейтинг: 0 / 0
ошибка при компиляции с различными flavors
    #39882318
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я разруливал имена следующим образом:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
    buildTypes {
        debug {
            minifyEnabled false
            debuggable true
        }

        release {
            minifyEnabled true
            debuggable false
            signingConfig signingConfigs.release
            proguardFiles 'proguard-rules.txt'
            applicationVariants.all { variant ->
                variant.outputs.all { output ->
                    outputFileName = defaultConfig.applicationId + "-" + defaultConfig.versionName + "-" + variant.buildType.name + ".apk"
                }
            }
        }
    }

...
Рейтинг: 0 / 0
ошибка при компиляции с различными flavors
    #39882368
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

у меня почему-то на вскидку
def prodFlavor = variant.productFlavor.versionNameSuffix

не прокатило, получил:
ERROR: Could not get unknown property 'productFlavor' for object of type com.android.build.gradle.internal.api.ApplicationVariantImpl.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) {
            def apk_name = "XXX-release-v"
//            def apk_name = defaultConfig.applicationId
            def versionName = defaultConfig.versionName
            def builType = variant.buildType.name
           def prodFlavor = variant.productFlavor.versionNameSuffix
            def newName = "${apk_name}-${builType}-${prodFlavor}-v${versionName}.apk"
//            def newName = "${apk_name}-${builType}-v${versionName}.apk"
//            def newName = "${apk_name}${versionName}.apk"
            output.outputFileName = newName
        }



В инете заливаются, что документация на gradle простая и понятная, но на деле, чтобы разобраться в ней нужно много времени :(
...
Рейтинг: 0 / 0
ошибка при компиляции с различными flavors
    #39882408
Belotsky Serge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в общем, пока выкрутился так:

Код: java
1.
2.
3.
4.
5.
6.
7.
 if (output.outputFile != null && output.outputFile.name.endsWith('.apk')) {
            def apk_name = defaultConfig.applicationId
            def versionName = defaultConfig.versionName
            def builType = variant.buildType.name
            def prodFlavor = variant.getFlavorName()
            def newName = "${apk_name}-${builType}-${prodFlavor}-v${versionName}.apk"
}


но вопрос, как же, все-таки добраться до versionNameSuffix остается открытым. Гугл не выдает ни одного вменяемого примера. Зачем нужно было заводить?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / ошибка при компиляции с различными flavors
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]