Как некоторые, возможно, наблюдали за ходом Android Studio Gradle, Xavier Ducrohet упомянул в своей быстрой речи, как использовать систему сборки градиента android. Моя проблема заключается в том, что в документации и презентации отсутствует информация о быстром запуске. или, по крайней мере, для меня. В моем следующем коде я попытался решить проблему использования системы плагина android plugin и я уверен, что у меня есть некоторые шаги и неправильные. (я не использовал муравьев или maven)Android Studio Gradle Первые шаги
Возможно, я продолжу его шаг за шагом с тем, что я сделал до сих пор.
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 7
targetSdkVersion 16
signingStoreLocation = "debug.keystore"
signingStorePassword = "***************"
signingKeyAlias = "***************"
signingKeyPassword = "**************"
}
Сначала им настройки параметров по умолчанию для отладочных (или каждой сборки, которая использует по умолчанию settings..that не означает buildtypes или ароматизаторов?)
sourceSets:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['com.project.maingradle', 'com.otherproject.changedsourcefilesforthisproject']
res.srcDirs = ['res', 'resfromotherprojectusingpartsofsamecode']
assets.srcDirs = ['assets']
}
}
В этот шаг я определил sourceSets. Вот где у меня есть мой первый вопрос. Если у меня есть один и тот же код, я хочу использовать для двух проектов, возможно/или это должно быть сделано определение больше sourcesets как ->
sourceSets {
main {...}
srcsetforanotherproject {...}
}
... в зависимости от основных папок Src? Или должно быть сделано определение для sourceSets, как в моем первом объявлении setsSets, путем определения набора различных, например, res-папок, как упоминал Ксавьер Дюкроэт? (Также неясно, могу ли я сделать это только для файлов res таким образом или также для кодовых папок java src, таких как java.srcDirs = ['com.project.maingradle', 'com.otherproject.changedsourcefilesforthisproject'].
signingConfigs:
signingConfigs {
debugRelease {
storeFile file("debug.keystore")
}
release {
storeFile file("release.keystore")
}
testflight {
storeFile file("testflight.keystore")
}
}
В этом шаге я определил различные ключи, используя для разных версий должно быть хорошо ...
buildTypes:.
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
}
}
Этот шаг был более четко объяснен, чем любой другой шаг для плагина android. За исключением того, что я не знаю, есть ли предустановленная версия отладки или отладки, работающая в фоновом режиме ... мне все равно нужно прояснить ее ... по крайней мере, я так думаю, из-за использования namesuffixes, proguard или объявления ключ к этой сборке (signedConfig).
Вкусы:
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
}
}
}
Лично я думаю, что ароматы являются наиболее интересной частью. Ксавьер Дюкроэт сказал, что вы не должны определять ключ в buildtype (вместо этого заявленный в ароматах), если вы хотите использовать разные ключи для разных сборников аромата? Я не знаю, правильно ли я это понял.
В любом случае ... то, что я пытаюсь сделать здесь, определяет различные варианты, которые должны быть созданы с различными настройками, такими как: sdk versioning для разных систем, эксклюзивное packagename и установка зависимости набора источников, как вы видите в примере. что я не уверен в том, как строители зависят от вкусов ... они просто умножают каждый вкус на каждый тип сборки? И ... нормально ли установить sourceSet (если можно установить больше sourceSets), как это в аромате?
Я пробовал что-то подобное. Команда Wich запускается для подписания вашего релиза apk, 'gradle build'? Я вижу файл unsigned apk в моей папке 'build/apk'. –
Отличный вопрос, градиентные документы просто ужасные – Piotr
Повторяет sourceSets.debugRelease.setRoot ("src/release") три раза преднамеренно? –