错误: (26,0)未找到 Gradle DSL 方法: ‘ runProGuard()’

我使用的是带有级别 'com.android.tools.build:gradle:0.14.+'的安卓工作室0.9.3

Application plugin: ‘ com.android.application’应用插件: ‘ 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 ()’ < br/>

怎么补救?

72587 次浏览

据我所知,runProguard已经被 minifyEnabled取代了。我仍然不知道如何定义前卫的配置,但谷歌搜索应该可以帮助您找到。

编辑:

对于 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 + "]");
}
}

这是因为 gradle android 工具升级到了0.14.3。 放入你的文件“ build.gradle”替换

classpath 'com.android.tools.build:gradle:0.14.+'

作者:

classpath 'com.android.tools.build:gradle:0.14.2'

在他们修好之前。

不要在分级文件中使用 runProguard,尝试使用 minifyEnabled。这应该能解决问题。runProguard已废弃,不久将停止工作。

剪辑

若要使用 minifyEnabled,渐变应更新至2.2或以上版本。

等级0.14.4开始,这些错误被报告为编译时错误。

所以你必须用 minifyEnabled false/true代替 runProguard false/true

更改在 Android 开发者博客上列出。

更改 app 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'
}
}

如果您使用的是0.14.0或更高版本的 gradle插件,您应该在 build.gradle文件中将“ runProguard”替换为“ minifyEnabled”。

加上这个。

 buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}

意味着构建类型名称不能是 主要或机器人测试(这是由插件强制执行的) ,并且它们必须彼此唯一。

新版本的 Android Gradle插件,可以自动删除未使用的资源。这里最大的胜利在于,它不仅从你自己的代码中删除了未使用的资源,而且更重要的是从你正在使用的 图书馆中删除了(例如,其中包含了支持那些你实际上并没有从应用中使用的特性的资源)。

将 Gradle 项目迁移到1.0.0版本需要一些简单的重命名工作,所有这些都在这里描述: Http://tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0

你可以简单地重命名为‘ runProGuard’= > ‘ minifyEnable’,其他的可以参考如下:

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.

RunproGuard 已在 Gradle 版本0.14.0(2014/10/31)中更名为 MinifyEnable

为了解决这个问题,您需要在项目的 建造,分级文件中将 runProGuard 更改为 minifyEnable。

enter image description here