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]
}