android - tools - Error:(26, 0) Método DSL Gradle no encontrado: ''runProguard()''
gradle version android studio (8)
A partir de Gradle 0.14.4 , estos errores se informan como errores en tiempo de compilación.
Por lo tanto, debe reemplazar
runProguard false/true
con
minifyEnabled false/true
Los cambios se enumeran en el tools.android.com/tech-docs/new-build-system .
Estoy usando Android Studio 0.9.3 con gradle
''com.android.tools.build:gradle:0.14.+''
aplique el complemento: ''com.android.application''
android {
compileSdkVersion 19
buildToolsVersion ''20.0.0''
defaultConfig {
applicationId "xxx.xxx.xxx"
minSdkVersion 16
targetSdkVersion 19
versionCode 1
versionName "1.0.11"
}
signingConfigs{
releaseConfig{
storeFile file("xxxxxxx")
storePassword = "xxxx"
keyAlias = "xxxx"
keyPassword = "xxxx"
}
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
signingConfig signingConfigs.releaseConfig
// adds version to file name
applicationVariants.all { variant ->
def file = variant.outputFile
variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
}
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
// You must install or update the Support Repository through the SDK manager to use this dependency.
// You must install or update the Support Repository through the SDK manager to use this dependency.
// You must install or update the Google Repository through the SDK manager to use this dependency.
// You must install or update the Support Repository through the SDK manager to use this dependency.
compile ''com.android.support:support-v4:19.+''
compile ''com.android.support:appcompat-v7:19.+''
compile ''com.mcxiaoke.volley:library:1.0.6''
compile ''com.google.code.gson:gson:2.2.+''
}
El proyecto compilado antes sin ningún cambio en ese archivo,
obtengo
:
Error: (26, 0) No se encontró el método Gradle DSL: ''runProguard ()''
¿Cómo arreglar eso?
El cambio en el archivo build.gradle de la aplicación puede ayudar:
antiguo:
buildTypes {
release {
runProguard false // this line has to be changed
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
nuevo:
buildTypes {
release {
minifyEnabled false // new version
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
En lugar de usar
runProguard
en su archivo gradle, intente usar
minifyEnabled
.
Esto debería solucionar el problema.
runProguard
está en desuso y pronto dejará de funcionar.
EDITAR
Para usar
minifyEnabled
, gradle debe actualizarse a la versión 2.2 o superior.
Esto se debe a la actualización de las herramientas de Android Gradle a 0.14.3. En su archivo "build.gradle" reemplace
classpath ''com.android.tools.build:gradle:0.14.+''
por:
classpath ''com.android.tools.build:gradle:0.14.2''
Hasta que lo arreglen ...
Hasta donde sé,
runProguard
fue reemplazado por
minifyEnabled
.
Todavía no estoy seguro de cómo definir la configuración de proguard, pero una búsqueda en Google debería ayudarlo a descubrirlo.
Editar:
Para el
outFile
lea aquí:
https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0
cómo lo hacen.
En resumen: usaron una versión más compleja:
applicationVariants.all { variant ->
variant.outputs.each { output ->
def apk = output.outputFile;
def newName;
// newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-" + variant.buildType.name.toUpperCase() + ".apk");
if (variant.buildType.name == "release") {
newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-release.apk");
} else {
newName = apk.name.replace(".apk", "-v" + defaultConfig.versionName + "-beta.apk");
}
output.outputFile = new File(apk.parentFile, newName);
if (output.zipAlign) {
output.outputFile = new File(apk.parentFile, newName.replace("-unaligned", ""));
}
logger.info(''INFO: Set outputFile to '' + output.outputFile + " for [" + output.name + "]");
}
}
La migración de Gradle Projects a la versión 1.0.0 necesita un trabajo de cambio de nombre fácil, todo se describe aquí: http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0
Para proguard, simplemente puede cambiar el nombre de ''runProguard'' => ''minifyEnabled'', para los demás ver a continuación:
Renamed Properties in BuildTypes:
runProguard => minifyEnabled
zipAlign => zipAlignEnabled
jniDebugBuild => jniDebuggable
renderscriptDebug => renderscriptDebuggable
Renamed Properties in ProductFlavors:
flavorGroups => flavorDimensions
packageName => applicationId
testPackageName => testApplicationId
renderscriptSupportMode => renderscriptSupportModeEnabled
ProductFlavor.renderscriptNdkMode => renderscriptNdkModeEnabled
Other Name changes
InstrumentTest was renamed to androidTest.
Si está utilizando la versión 0.14.0 o superior del complemento
gradle
, debe reemplazar "
runProguard
" con "
minifyEnabled
" en sus archivos
build.gradle
.
Solo agrega esto.
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt''
}
}
Los nombres de tipo de compilación de medios
minifyEnabled false
no pueden ser
main o androidTest
(esto se aplica mediante el complemento), y deben ser únicos entre sí.
La nueva versión del complemento Android
Gradle
puede eliminar automáticamente los recursos no utilizados.
La gran victoria aquí es que elimina los recursos no utilizados no solo de su propio código, sino más importante de las
bibliotecas
que está utilizando (por ejemplo, donde hay recursos incluidos para admitir funciones que no está utilizando realmente desde su aplicación).