我目前正在尝试将Android Studio更新为1.0.0-RC。这似乎需要gradle Android插件1.0.0-rc1。更新后,我开始出现以下错误:
`Could not find property 'processManifest' on com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated@b9da89c.`
通过一些挖掘,似乎processManifest
是0.14.3 version中已删除的已弃用属性之一。知道新的属性名称是什么?新版本的相同用户指南尚未更新,因此我无法找到相关文档。
编辑:这是需要该属性的代码。我用它将一些构建时值注入清单:
applicationVariants.all { variant ->
variant.processManifest << {
def manifestOutFile = variant.processManifest.manifestOutputFile
def newFileContents = manifestOutFile.getText('UTF-8')
.replace("{GOOGLE_MAPS_KEY}", variant.buildType.ext.google_maps_key)
manifestOutFile.write(newFileContents, 'UTF-8')
}
}
答案 0 :(得分:51)
在Beta频道上更新到Android Studio 1.0.0后,我也遇到了此错误。但是,我在自己的gradle文件中找不到processManifest
的任何引用。经过一番搜索,我意识到我需要一个新的Robolectric gradle插件:
https://github.com/robolectric/robolectric-gradle-plugin/releases
使用版本0.14.0的Robolectric Gradle插件(以及Robolectric的2.4版本)为我解决了错误。
答案 1 :(得分:10)
我无法找到问题的解决方案,只是解决方法。 Android Gradle插件版本0.11引入了一个名为Manifest merger的新API。它允许实现我的黑客允许我做的同样的事情。
以下是所需的更改:
"${GOOGLE_MAPS_KEY}"
在每个BuildType中定义manifestPlaceholders
地图。那就是:
buildTypes {
debug {
manifestPlaceholders = [GOOGLE_MAPS_KEY: "xxxxxxxxxxxxxxxxxxxx"]
}
release {
manifestPlaceholders = [GOOGLE_MAPS_KEY: "xxxxxxxxxxxxxxxxxxxx"]
}
}
就是这样!该插件将自动替换您的Manifest中的那些变量。非常整洁!
答案 2 :(得分:8)
根据APK拆分(http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits)的文档,此方法已移至VariantOutput
(可通过variant.outputs
获得):
弃用警告:当前变体API包含一些已在其输出下移动的方法。该方法仍然存在,但如果有2+输出则会失败。它们将在1.0中完全删除 这些是:
VariantOutput
答案 3 :(得分:6)
android.applicationVariants.all{ variant ->
variant.outputs.each { output ->
output.processManifest.doLast{
def manifestFile = output.processManifest.manifestOutputFile
def updatedContent =manifestFile.getText('UTF-8').replaceAll("UMENG_CHANNEL_VALUE", "${variant.productFlavors[0].name}")
manifestFile.write(updatedContent, 'UTF-8')
}
}
}
我以这种方式更改了它,只是在旧版本之外添加了一个新图层。这有效,因为processManifest
现在位于outputs
字段中。
认为这可能会有所帮助。
答案 4 :(得分:0)
在我的情况下,我收到此错误,因为我的 settings.gradle 中指定的库文件夹存在依赖关系。那个文件夹显然有很多错误的配置。因此,只要我从settings.gradle中删除它,项目编译就好了。