Упаковка приложений для ношения Android не соответствует вкусам
У меня есть приложение, которое включает в себя приложение для ношения. Все отлично работает при проверке отладки с помощью реального устройства. Я могу создать альбом apk, который упаковывает из него apk. Но только если в моем приложении есть только один вкус.
Я хочу поддерживать две версии приложения с разными приложениями, но, несмотря на то, что эта компиляция без ошибок, в этом случае два релизных apks (один из каждого вкуса) не объединяют соответствующие носовые апки.
Это важная часть мобильного приложения build.gradle:
productFlavors {
Trial {
applicationId "com.example.myapp.trial"
versionName "3.0.1"
versionCode 301
}
Full {
applicationId "com.example.myapp"
versionName "3.0.1"
versionCode 301
}
}
}
dependencies {
compile 'com.google.android.gms:play-services:[email protected]'
wearApp project(':myWearApp')
}
И вот это приложение для создания загрузочного материала для корреспонденции:
productFlavors {
Trial {
applicationId "com.example.myapp.trial"
versionName "3.0.1"
versionCode 301
}
Full {
applicationId "com.example.myapp"
versionName "3.0.1"
versionCode 301
}
}
}
dependencies {
compile 'com.google.android.support:wearable:1.0.0'
compile 'com.google.android.gms:play-services-wearable:6.1.71'
}
Любая помощь будет приветствоваться. Благодарю.
Ответы
Ответ 1
Благодаря подсказке Скотт дал мне это полное решение:
1.) Ароматизаторы должны быть строчными
2.) конфигурации зависимостей должны включать аромат Release
3.) В приложении Wear app buil gradle, под android {}, мы должны включить publishNonDefault true
Итак, для мобильного приложения build.gradle:
android {
......
productFlavors {
trial {
applicationId "com.sample.myapp.trial"
versionName "3.0.1"
versionCode 301
}
full {
applicationId "com.sample.myapp"
versionName "3.0.1"
versionCode 301
}
}
}
dependencies {
trialWearApp project(path: ':myWearApp', configuration: 'trialRelease')
fullWearApp project(path: ':myWearApp', configuration: 'fullRelease')
}
И для ношения app build.gradle:
android {
publishNonDefault true
......
productFlavors {
trial {
applicationId "com.sample.myapp.trial"
versionName "3.0.1"
versionCode 301
}
full {
applicationId "com.sample.myapp"
versionName "3.0.1"
versionCode 301
}
}
}
Ответ 2
Привкус родительского приложения автоматически не распространяется на проект Wear. Вы должны отобразить его явно.
Вместо этого:
dependencies {
wearApp project(':myWearApp')
}
Сделайте это:
В приложении Wear:
android {
publishNonDefault true
}
В своем родительском приложении:
dependencies {
TrialWearApp project(path: ':myWearApp', configuration: 'Trial')
FullWearApp project(path: ':myWearApp', configuration: 'Full')
}
Ответ 3
Я вижу, что вы нашли решение своей проблемы, но вот моя версия, которая объединяет конфигурации сборки с ароматами и суффиксами приложений в случае, если вам это понадобится в будущем. Также может быть релевантной информацией для тех, кто попадает в этот пост.
Приложение/build.gradle:
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
signingConfigs {
debug { ... }
release { ... }
}
defaultConfig {
applicationId "com.sample.myapp"
minSdkVersion 14
targetSdkVersion 23
versionName "3.0.1"
versionCode 301
}
buildTypes {
debug {
applicationIdSuffix ".debug"
embedMicroApp = true
minifyEnabled false
debuggable true
}
release {
embedMicroApp = true
minifyEnabled true
zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
productFlavors {
trial {
applicationIdSuffix ".trial"
}
full {
applicationIdSuffix ".pro"
}
}
}
configurations {
trialDebugWearApp
fullDebugWearApp
trialReleaseWearApp
fullReleaseWearApp
}
dependencies {
...
trialDebugWearApp project(path: ':myWearApp', configuration: 'trialDebug')
fullDebugWearApp project(path: ':myWearApp', configuration: 'fullDebug')
trialReleaseWearApp project(path: ':myWearApp', configuration: 'trialRelease')
fullReleaseWearApp project(path: ':myWearApp', configuration: 'fullRelease')
}
износа/build.gradle:
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
publishNonDefault true
signingConfigs {
debug { ... }
release { ... }
}
defaultConfig {
applicationId "com.sample.myapp"
minSdkVersion 20
targetSdkVersion 23
versionName "3.0.1"
versionCode 301
}
buildTypes {
debug {
applicationIdSuffix ".debug"
minifyEnabled false
debuggable true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
productFlavors {
trial {
applicationIdSuffix ".trial"
}
full {
applicationIdSuffix ".pro"
}
}
dependencies {
...
}
}
Ответ 4
Я добавлю немного больше ответа @tormod, поскольку он опустил некоторые важные моменты, чтобы включить publishNonDefault true
Вот несколько примеров Gradle файлов для упаковки модуля износа с ароматами и типами конструкций.
Модуль mobile build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.example.app"
minSdkVersion 15
targetSdkVersion 23
versionCode 85
versionName "2.5.2"
}
buildTypes {
debug {
applicationIdSuffix ".debug"
embedMicroApp = true
minifyEnabled false
}
release {
embedMicroApp = true
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
zipAlignEnabled true
}
}
productFlavors {
free{
applicationId "com.example.app"
}
pro{
applicationId "com.example.app.pro"
}
}
}
configurations {
freeDebugWearApp
proDebugWearApp
freeReleaseWearApp
proReleaseWearApp
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
freeDebugWearApp project(path: ':wear', configuration: 'freeDebug')
proDebugWearApp project(path: ':wear', configuration: 'proDebug')
freeReleaseWearApp project(path: ':wear', configuration: 'freeRelease')
proReleaseWearApp project(path: ':wear', configuration: 'proRelease')
}
Износ модуля build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
publishNonDefault true
defaultConfig {
applicationId "com.example.app"
minSdkVersion 20
targetSdkVersion 23
versionCode 85
versionName "2.5.2"
}
buildTypes {
debug {
applicationIdSuffix ".debug"
minifyEnabled false
}
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
zipAlignEnabled true
}
}
productFlavors {
free {
applicationId "com.example.app"
}
pro {
applicationId "com.example.app.pro"
}
}
}
dependencies {
...
}