Проблема: мне нужны два варианта продукта: БЕСПЛАТНАЯ версия с рекламой и ПРО версия без рекламы. Для рекламы требуется Google Play с минимальным SDK 9, поэтому я установил его БЕСПЛАТНО, но я хочу, чтобы моя профессиональная версия имела минимальный SDK 8.
Сборка БЕСПЛАТНОЙ версии работает, а сборка ПРО - нет.
Я использую (стабильную) Android Studio 1.1.0.
Я настраиваю новый проект с пустой активностью (пример Hello World). Затем я изменил файл build.gradle (ниже), включив в него два варианта и зависимость компиляции, специфичную для FREE, а затем изменил файловую структуру, чтобы переместить файлы java и макета xml активности в структуры ароматов. Таким образом, проект имеет следующую файловую структуру:
app\src\
free\
java\com\sample\adexample\MainActivity.java - This is Hello World.
res\layout\activity_main.xml - This is the Hello World layout.
res\values\strings.xml - Unique Hello World string for free version.
res\AndroidManifest.xml - This is a copy of the manifest in main.
main\
java\com\sample\adexample\ - empty
res\layout\ - empty
res\AndroidManifest.xml - This is the Hello World manifest.
pro\
java\com\sample\adexample\MainActivity.java - This is Hello World.
res\layout\activity_main.xml - This is the Hello World layout.
res\values\strings.xml - Unique Hello World string for free version.
res\AndroidManifest.xml - This is a copy of the manifest in main.
Вот мой файл build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
applicationId "com.sample.adexample"
minSdkVersion 8
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
pro {
applicationId "com.sample.adexample.pro"
minSdkVersion 8
versionName "1.0-Pro"
}
free {
applicationId "com.sample.adexample.free"
minSdkVersion 9
versionName "1.0-Free"
dependencies {
compile 'com.google.android.gms:play-services:6.+'
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}
Создание варианта freeDebug отлично работает. Но я получаю следующую ошибку при сборке proDebug:
:app:processProDebugManifest
C:\Users\Jeff\AndroidStudioProjects\AdExample\app\src\main\AndroidManifest.xml:0:0 Error:
uses-sdk:minSdkVersion 8 cannot be smaller than version 9 declared in library C:\Users\Jeff\AndroidStudioProjects\AdExample\app\build\intermediates\exploded-aar\com.google.android.gms\play-services\6.5.87\AndroidManifest.xml
Suggestion: use tools:overrideLibrary="com.google.android.gms" to force usage
Есть ли способ выполнить требования?
Спасибо за ваше время.
dependencies
сfree
. Переместите этотcompile 'com.google.android.gms:play-services:6.+'
в существующую застежкуdependencies
и сделайте ееfreeCompile
вместоcompile
. Посмотрите, поможет ли это. - person CommonsWare   schedule 23.02.2015