У меня есть 3 файла .aar, которые включены в модуль и модуль aar, включенные в приложение.Как включить различные .aar в зависимости от варианта сборки android
В настоящее время у меня есть 3 варианта сборки и для конкретного варианта сборки. Я хочу включить конкретный aar.
Позволяет Пусть: У меня 3 AARS именования хуга, PQR, DEF
хуга должны быть включено в 123 сборке варианты PQR должны быть включено в 456 сборке варианты четкости, чтобы быть включенной в 789 варианте сборки
модуль AAR build.gradle
File xyzFile= file("xyz.aar")
File pqrFile = file("pqr.aar")
File defFile = file("def.aar")
configurations.maybeCreate("xyz")
artifacts.add("xyz", xyzFile)
configurations.maybeCreate("pqr")
artifacts.add("pqr", pqrFile)
configurations.maybeCreate("def")
artifacts.add("def", defFile)
приложение Проект build.gradle
apply plugin: 'com.android.application'
configurations {
xyzDebugCompile
xyzReleaseCompile
xyzReleaseUnsignedCompile
pqrDebugCompile
pqrReleaseCompile
pqrReleaseUnsignedCompile
defDebugCompile
defReleaseCompile
defReleaseUnsignedCompile
}
android {
compileSdkVersion 24
buildToolsVersion "24.0.0"
=
lintOptions {
abortOnError false
}
defaultConfig {
applicationId "cm.ez.eia"
minSdkVersion 21
targetSdkVersion 24
versionCode 1
versionName '0.9.2'
multiDexEnabled true
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
project.ext { appName = 'FA-Comm' }
def newName = output.outputFile.name
newName = newName.replace("app-", "$project.ext.appName-")
output.outputFile = new File(output.outputFile.parent, newName)
}
}
}
release {
debuggable false
jniDebuggable false
applicationVariants.all { variant ->
variant.outputs.each { output ->
project.ext { appName = 'FA-Comm' }
def newName = output.outputFile.name
newName = newName.replace("app-", "$project.ext.appName-")
output.outputFile = new File(output.outputFile.parent, newName)
}
}
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
releaseUnsigned {
debuggable false
jniDebuggable false
applicationVariants.all { variant ->
variant.outputs.each { output ->
project.ext { appName = 'FA-Comm' }
def newName = output.outputFile.name
newName = newName.replace("app-", "$project.ext.appName-")
output.outputFile = new File(output.outputFile.parent, newName)
}
}
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "1g" //specify the heap size for the dex process
preDexLibraries = false //delete the already predexed libraries
}
productFlavors {
xyz {
applicationId 'com.fieldaware.communicator'
minSdkVersion 21
targetSdkVersion 24
}
def {
applicationId 'com.fieldaware.communicator'
minSdkVersion 21
targetSdkVersion 24
}
pqr {
applicationId 'com.fieldaware.communicator'
minSdkVersion 21
targetSdkVersion 24
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile project(':android-common-master')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.5.0'
compile 'com.android.support:multidex:1.0.0'
compile 'com.google.android.gms:play-services-ads:9.4.0'
compile 'com.google.android.gms:play-services-auth:9.4.0'
compile 'com.google.android.gms:play-services-gcm:9.4.0'
//Aar Configs
xyzDebugCompile project(path:':sdk',configuration: 'xyz')
xyzReleaseCompile project(path:':sdk',configuration: 'xyz')
xyzReleaseUnsignedCompile project(path:':sdk',configuration: 'xyz')
pqrDebugCompile project(path: ':sdk', configuration: 'pqr')
pqrReleaseCompile project(path: ':sdk', configuration: 'pqr')
pqrReleaseUnsignedCompile project(path: ':sdk', configuration: 'pqr')
defDebugCompile project(path: ':sdk', configuration: 'def')
defReleaseCompile project(path: ':sdk', configuration: 'def')
defReleaseUnsignedCompile project(path: ':sdk', configuration: 'def')
}
Я хочу, чтобы включить конкретный .aar файл в зависимости от конкретного варианта сборки.
Этот код извлекает неправильные файлы аара. Просьба предложить любое решение
Но я думаю, 3 AAR всегда будет включен в исходном коде приложения. с этим решением? –
Нет. будет включен только один аар. Причина в том, что «xyz», «pqr» и «def» - это ваши вкусы сборки и «debug», «release» и «releaseUnsigned» - ваши варианты сборки. Если вы запустите «./gradlew assemble», вы получите 9 apk; по одному для каждого варианта сборки/вкуса. И каждый apk будет содержать только один из aar (подходящий для варианта сборки/аромата). Чтобы лучше объяснить это: если вы запустите «./gradlew assembleXyzDebugCompile», он сгенерирует apk для этого (из девяти) вариантов сборки/вкуса и что apk будет компилироваться только с одним xyz.aar –
Спасибо @Jason .. Я создал 3 отдельных модуля с 3 различными арами и соответственно включил их в аромат –