错误:(26,0)未findGradle DSL方法:'runProguard()'
我正在使用android studio 0.9.3和gradle'com.android.tools.build:gradle:0.14 '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)未findGradle DSL方法:'runProguard()'
如何解决这个问题?
据我所知runProguard
被replace为minifyEnabled
。 我仍然不知道如何定义proguard的configuration,但谷歌search应该帮助你找出答案。
编辑:
为outFile
阅读这里: https : outFile
他们是如何做到这一点。
简而言之:他们使用了更复杂的版本:
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文件中使用runProguard
,请尝试使用minifyEnabled
。 这应该解决这个问题。 runProguard
已经被弃用,很快就会停止工作。
编辑
要使用minifyEnabled
,gradle应该更新到2.2或更高版本。
应用程序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' } }
从Gradle 0.14.4开始 ,这些错误被报告为编译时错误。
所以你必须用runProguard false/true
replaceminifyEnabled false/true
这些更改在Android开发人员博客上列出。
如果您使用gradle
插件的0.14.0或更高版本,则应该在build.gradle
文件minifyEnabled
“ runProguard
”replace为“ runProguard
”。
只需添加这个。
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }
minifyEnabled false
构buildtypes名称不能是main或androidTest (这由插件强制执行),并且它们必须是彼此唯一的。
Android Gradle
插件的新版本,可以自动删除未使用的资源。 这里最大的收获就是,它不仅可以从你自己的代码中删除未使用的资源,而且更重要的是从你正在使用的库中(例如,在你的应用中没有实际使用的资源中包含的资源)。
将Gradle Projects迁移到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.
这是由于gradle安卓工具更新到0.14.3。 进入你的文件“build.gradle”replace
classpath 'com.android.tools.build:gradle:0.14.+'
通过:
classpath 'com.android.tools.build:gradle:0.14.2'
直到他们解决它…
runProguard已经在Gradle的0.14.0(2014/10/31)版本中重命名为minifyEnabled 。
为了解决这个问题,你需要在项目的build.gradle文件中将runProguard改为minifyEnabled。
- 小数分隔符逗号(',')在EditText中使用numberDecimal inputType
- Actionbarsherlock +标签+多片段?
- Android屏幕尺寸像素为ldpi,mdpi,hpdi?
- 我怎样才能分析我的Android应用程序?
- android.os.FileUriExposedException:file:///storage/emulated/0/test.txt通过Intent.getData()暴露在应用程序之外
- android:Theme.Material.Light需要API级别21(当前最less8)
- 长按一下ListFragment
- 将对象传递给碎片
- Android:HTTP通讯应该使用“Accept-Encoding:gzip”