Избегайте параметров сборки gradle для чистой задачи - PullRequest
0 голосов
/ 21 ноября 2018

Я настроил свой уровень приложения build.gradle файл, чтобы выбрать имя apk из параметров сборки.

Ниже приведен мой файл build.gradle

apply plugin: 'com.android.application'
android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.somethind"
        minSdkVersion 16
        targetSdkVersion 25
        ....
    }

    applicationVariants.all { variant ->
        changeAPKName(variant, project.apkName)
    }

    buildTypes {
        ......
        ......
    }
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

def changeAPKName(variant, apkName) {
    variant.outputs.all { output ->
        outputFileName = new File(apkName)
    }
}

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

    ........
}

Теперь я могу выполнить приведенную ниже команду для сборки apk с пользовательским именем

gradlew assembleDebug -PapkName=sample.apk

Но проблема в том, что если мне нужно очистить apk, я должен передать параметры сборки команде clean

Ошибка команды ниже

gradlew clean

Команда ниже работает нормально

gradlew clean -PapkName="somename.apk" //Its passing

Как избежать прохождения сборкипараметры clean task

1 Ответ

0 голосов
/ 26 ноября 2018

Проблема здесь в том, что нам нужно предоставить некоторое значение по умолчанию для project.apkName.Поэтому, когда мы не передали параметр apkName из командной строки, он примет значение по умолчанию.Это можно сделать как показано ниже

apply plugin: 'com.android.application'
android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.somethind"
        minSdkVersion 16
        targetSdkVersion 25
        ....
    }

    def defaultApkName = "Pervacio_ssd.apk"
    applicationVariants.all { variant ->
        if(project.hasProperty("apkName")){
            defaultApkName = apkName;
        }
        changeAPKName(variant, defaultApkName)
    }

    buildTypes {
        ......
        ......
    }
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

def changeAPKName(variant, apkName) {
    variant.outputs.all { output ->
        outputFileName = new File(apkName)
    }
}

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

    ........
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...