Android другой пакет Имя с ароматами

Мне нужно установить 2 версии моего проекта (Производство и разработка). Мне нужно 2 приложения. Я пытаюсь добиться этого с помощью ароматов, но когда я подписываю apk, он всегда генерирует одно и то же приложение с одинаковым packageName (com.company.project). Я попытался удалить applicationId из defaultConfig, но он тоже не работает. В манифесте имя пакета - com.company.project.

Кто-нибудь знает, как это сделать?

Это build.gradle

defaultConfig {
            multiDexEnabled true
            minSdkVersion 16
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
            applicationId "com.company.project"
    }    
    productFlavors {
                development {
                    applicationId
                    "com.company.project.DEV"
                    versionName "1.0-dev"
                    resValue "string", "app_name", "Project-Dev"                     
                }
                production {
                    applicationId
                    "com.company.project.PROD"
                    resValue "string", "app_name", "Project-Prod"
                    versionName "1.0-prod"                        
                }
            }

3 ответа

Когда вы создаете productFlavors тогда соответствующий gradle задачи также меняется.

Например, изначально у вас есть только assembleDebug а также assembleRelease, Но после реализации productFlavors, gradle задачи будут меняться. Принимая во внимание ваш пример, это будет

  • assembleDevelopmentDebug
  • assembleDevelopmentRelease
  • assembleProductionDebug
  • assembleProductionRelease

Если вы используете Android Studioто вам не нужно беспокоиться о gradle задачи. Просто выберите Build Variant из меню и построить проект. Он запустит соответствующие задачи gradle и установит сборку.

Я написал блог, объясняющий это, Product Flavors в Android. Пример проекта также доступен на GitHub.

Я делаю то же самое, и мой build.gradle выглядит так и работает:

      flavorDimensions 'Level'
productFlavors {
    alpha {
        dimension 'Level'
        applicationIdSuffix '.alpha'
    }
    beta {
        dimension 'Level'
        applicationIdSuffix '.beta'
    }
    major {
        dimension 'Level'
    }
}

На самом деле я настроил это в Build -> Edit Flavors, и он сгенерировал все для меня.

В итоге сделал так:

      def appName = 'AppName'
productFlavors {
    devel {
        applicationIdSuffix ".devel"
        def buildId, appNameLabel
        buildId = androidApplicationId + '.devel' + androidVersionCode
        appNameLabel = appName + 'd' + androidVersionName
        buildConfigField "String", "BUILD_ID", '"' + buildId + '"'
        manifestPlaceholders = [app_name_label: appNameLabel, buildId: buildId]        }

    QA { 
        applicationIdSuffix ".qa"
        def buildId, appNameLabel
        buildId = androidApplicationId + '.qa' + androidVersionCode
        appNameLabel = appName + 'q' + androidVersionName
        buildConfigField "String", "BUILD_ID", '"' + buildId + '"'
        manifestPlaceholders = [app_name_label: appNameLabel, buildId: buildId]
    }

    pro {
        buildConfigField "String", "BUILD_ID", '"' + androidApplicationId + '"'
        manifestPlaceholders = [app_name_label: appName, buildId: androidApplicationId]
    }
Другие вопросы по тегам