Attualmente sto lavorando a un'applicazione che dispone di 5 sapori e questa è la parte dei miei file build.gradle che conta:Gradle: Come creare due applicazioni per ciascuna variante con attività diverse cartelle:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.14.0'
}
}
apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
android {
compileSdkVersion 20
buildToolsVersion '20.0.0'
signingConfigs {
release {
storeFile file("")
storePassword "password"
keyAlias "alias"
keyPassword "password"
}
}
lintOptions {
abortOnError false
}
defaultConfig {
minSdkVersion 14
targetSdkVersion 20
applicationId 'application.package'
signingConfig signingConfigs.release
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
productFlavors {
flavor1{
applicationId 'com.flavor1.package'
}
flavor2{
applicationId 'com.flavor2.package'
}
flavor3{
applicationId 'com.flavor3.package'
}
flavor4{
applicationId 'com.flavor4.package'
}
flavor5{
applicationId 'com.flavor5.package'
}
}
}
dependencies {
compile project(':SDK')
}
Ho dovuto apportare alcune modifiche al file, ma in fondo è questo.
La domanda: Ho un obbligo di fornire per ciascuno di questi sapori un diverso insieme di file di risorse nella cartella degli asset che creerà un file apk differente ma avrà lo stesso nome di pacchetto. Questi file apk verranno caricati su Google Play come la stessa applicazione, ma per regioni diverse. Quindi il nome del pacchetto deve rimanere lo stesso. Quindi, in sostanza, ho bisogno di creare un meccanismo che invece di 5 sapori creerà 10 sapori quando ognuno di essi ha lo stesso nome di pacchetto ma una diversa cartella di risorse. Come si può fare usando gradle?
ho cercato attuare questo utilizzando BuildTypes in questo modo:
buildTypes {
release {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assets']
}
releaseAlt {
signingConfig signingConfigs.release
sourceSets.main.assets.srcDirs = ['assetsalt']
}
}
Ma per qualche motivo il releaseAlt prende anche i file che si trovano nella directory di attività e non la directory assetsalt. Qualcuno potrebbe indicarmi la giusta direzione riguardo a questo? Grazie in anticipo.
Grazie per il vostro aiuto, ma speravo in una soluzione in cui non avrei dovuto creare di nuovo un intero sapore per un'applicazione con lo stesso pacchetto, ma per fornire lo stesso sapore con una directory di risorse diversa per creare due apk che l'unica differenza tra loro è questa cartella delle risorse. Pensi che questo possa essere fatto senza creare il sapore del sapore? –
Non è necessario creare un nuovo sapore. In Android Gradle, il concetto di sapore è legato al concetto di Variante. Una variante è BuildType + Flavor. Ad esempio, se hai un debug buildType e un flavor Flavor1, la variante completa è flavor1Debug. Con la mia soluzione, stai usando un buildType personalizzato per avere più varianti sugli stessi sapori. Devi solo definire un nuovo BuildType e tutti i tuoi Flavori già definiti avranno una nuova Variante. – pdegand59
Con Gradle, la gerarchia delle cartelle è basata su Variant. Se sai che ogni Flavor condivide le stesse risorse per il BuildType di ReleaseAlt, puoi semplicemente aggiungere una nuova cartella 'releaseAlt/assets /' e inserire tutte le tue risorse alternative all'interno. Modifica della risposta – pdegand59