Поскольку некоторые, возможно, смотрели ввод-вывод Android Studio Gradle, Ксавье Дюкроэ упомянул в своем быстром выступлении, как использовать систему сборки Android Gradle. Моя проблема в том, что в документации и презентации не хватает информации для быстрого старта. или по крайней мере для меня. В моем следующем коде я попытался решить, как использовать систему плагинов gradle для Android, и я уверен, что некоторые шаги были неправильными, а некоторые правильными. (я не использовал ant или maven много)
Может быть, я пройду это шаг за шагом с тем, что я сделал до сих пор.
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
signingStoreLocation = "debug.keystore"
signingStorePassword = "***************"
signingKeyAlias = "***************"
signingKeyPassword = "**************"
}
Сначала я настраиваю параметры по умолчанию для отладочной сборки (или каждой сборки, которая использует параметры по умолчанию. Это означает отсутствие типов сборки или вкусов?)
наборы источников:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['com.project.maingradle', 'com.otherproject.changedsourcefilesforthisproject']
res.srcDirs = ['res', 'resfromotherprojectusingpartsofsamecode']
assets.srcDirs = ['assets']
}
}
На этом шаге я определил наборы источников. Тут у меня первый вопрос. Если у меня есть один и тот же код, который я хочу использовать для двух проектов, возможно ли/или следует ли это сделать, определив больше исходных наборов, таких как -->
sourceSets {
main {...}
srcsetforanotherproject {...}
}
... в зависимости от базовых папок src? Или следует сделать определение для sourceSets, как в моем первом объявлении sourceSets, путем определения набора различных папок, например res, как упоминал Ксавье Дюкроэ? (Также неясно, могу ли я сделать это только для папок res таким образом или также для папок кода java src, таких как java.srcDirs = ['com.project.maingradle', 'com.otherproject.changedsourcefilesforthisproject'].
подписываниеКонфигурации:
signingConfigs {
debugRelease {
storeFile file("debug.keystore")
}
release {
storeFile file("release.keystore")
}
testflight {
storeFile file("testflight.keystore")
}
}
На этом шаге я определил разные ключи, используемые для разных выпусков. должно быть в порядке...
Типы сборки:
buildTypes {
debugRelease.initWith(buildTypes.release)
testflight.initWith(buildTypes.release)
sourceSets.debugRelease.setRoot("src/release")
sourceSets.debugRelease.setRoot("src/release")
sourceSets.debugRelease.setRoot("src/release")
debugRelease {
packageNameSuffix ".debugRelease"
versionNameSuffix "-DEBUG"
debuggable true
signingConfig signingConfigs.debug
}
testflight {
packageNameSuffix ".testflight"
versionNameSuffix "-TESTFLIGHT"
signingConfig signingConfigs.testflight
}
release {
packageNameSuffix ".release"
versionNameSuffix "-RELEASE"
runProguard true
proguardFile getDefaultProguardFile('proguard-android.txt')
signingConfig signingConfigs.release
}
}
Этот шаг был объяснен более четко, чем любой другой шаг для плагина Gradle для Android. За исключением того, что я не знаю, есть ли предопределенные настройки выпуска или отладки, работающие в фоновом режиме... мне все равно нужно это уточнять... по крайней мере, я так думаю из-за использования суффиксов имен, proguard или объявления ключ к этой сборке (signingConfig).
Вкусы:
flavorGroups "abi", "version"
productFlavors {
arm {
flavorGroup "abi"
}
standardproject1 {
flavorGroup "version"
minSdkVersion 7
targetSdkVersion 14
packageName "com.project.maingradle.normal"
sourceSet sourceSets.main
}
standardproject2 {
flavorGroup "version"
minSdkVersion 6
targetSdkVersion 14
packageName "com.otherproject.normal"
sourceSet sourceSets.main
}
testflightproject1 {
flavorGroup "version"
minSdkVersion 7
targetSdkVersion 14
packageName "com.project.maingradle.testflight"
sourceSet sourceSets.main
}
testflightproject2 {
flavorGroup "version"
minSdkVersion 6
targetSdkVersion 14
packageName "com.otherproject.testflight"
sourceSet sourceSets.main
}
}
}
Лично я думаю, что вкусы - самая интересная часть. Ксавье Дюкроэ сказал, что вам не следует определять ключ в типе сборки (вместо этого объявлять в вариантах), если вы хотите использовать разные ключи для разных сборок вариантов? не знаю, правильно ли я это понял.
В любом случае... то, что я пытался здесь сделать, это определить разные варианты, которые должны быть собраны с разными настройками, такими как управление версиями sdk для разных систем, эксклюзивное имя пакета и установка зависимого исходного набора, как вы видите в примере. в чем я не уверен, так это в том, как типы сборки зависят от вкусов ... они просто умножают каждый вкус на каждый тип сборки? И... можно ли установить исходный набор (если возможно установить больше исходных наборов), как это в аромате?
gradle build
? Я вижу только неподписанный файл apk в моей папкеbuild/apk
. - person Jan-Terje Sørensen   schedule 19.08.2013