Ошибка: (26, 0) Gradle Метод DSL не найден: 'runProguard()'
Я использую android studio 0.9.3 с gradle 'com.android.tools.build:gradle:0.14.+'
применить плагин: '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.+'
}
Проект, скомпилированный ранее без изменений в этом файле,
Я получаю:
Ошибка: (26, 0) gradle Метод DSL не найден: 'runProguard()'
Как это исправить?
Ответы
Ответ 1
Насколько я знаю, runProguard
был заменен на minifyEnabled
. Я до сих пор не знаю, как определить конфигурацию для proguard, но поиск Google поможет вам узнать.
Edit:
Для outFile
читайте здесь: https://groups.google.com/forum/#!topic/adt-dev/4_-5NvxuFB0, как они это делают.
Вкратце: они использовали более сложную версию:
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 + "]");
}
}
Ответ 2
Вместо использования runProguard
в вашем файле gradle попробуйте использовать minifyEnabled
. Это должно решить проблему. runProguard
устарел и скоро перестанет работать.
ИЗМЕНИТЬ
Чтобы использовать minifyEnabled
, gradle следует обновить до версии 2.2 или выше.
Ответ 3
Изменение файла приложения build.gradle может помочь:
старый:
buildTypes {
release {
runProguard false // this line has to be changed
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
новый
buildTypes {
release {
minifyEnabled false // new version
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Ответ 4
Как и в Gradle 0.14.4, эти ошибки сообщаются как ошибки времени компиляции.
Итак, вы должны заменить runProguard false/true
на minifyEnabled false/true
Изменения перечислены в Блог разработчиков Android.
Ответ 5
Если вы используете версию 0.14.0 или выше плагина gradle
, вы должны заменить "runProguard
" на "minifyEnabled
" в ваших файлах build.gradle
.
Просто добавьте это.
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
minifyEnabled false
Значения типа Build Build не могут быть основными или androidTest (это принудительно применяется плагином) и что они должны быть уникальными друг для друга.
Новая версия плагина Android gradle
позволяет автоматически удалять неиспользуемые ресурсы. Большая победа здесь в том, что она удаляет неиспользуемые ресурсы не только из вашего собственного кода, но, что более важно, из библиотек, которые вы используете (например, когда есть ресурсы, которые включены для поддержки функций, которые вы фактически не используете в своем приложении).
Ответ 6
Миграция Gradle Проекты до версии 1.0.0 требуют простой работы по переименованию, здесь описано все:
http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0
Для proguard вы можете просто переименовать 'runProguard' = > 'minifyEnabled', остальные - ниже:
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.
Ответ 7
Это связано с обновлением инструментов андроида gradle до 0,14.3.
В свой файл "build.gradle" замените
classpath 'com.android.tools.build:gradle:0.14.+'
по:
classpath 'com.android.tools.build:gradle:0.14.2'
Пока они не исправят это...
Ответ 8
runProguard был переименован в minifyEnabled в версии 0.14.0 (2014/10/31) из Gradle.
Чтобы исправить это, вам нужно изменить runProguard на minifyEnabled в файле build.gradle вашего проекта.
![введите описание изображения здесь]()