我的项目有两种:
flavor1 -> packagename: com.example.flavor1
flavor2 -> packagename: com.example.flavor2
Run Code Online (Sandbox Code Playgroud)
现在我想构建一个flavor1和flavor2的构造变量.buildvariant的唯一区别是另一个packagename.
我的项目使用MapFragments并且只有一个Manifest - 所以我将MAPS_RECEIVE的权限名称放在我各自风格的字符串资源文件中.
问题是:如何替换buildvariant的字符串资源?
我尝试了以下方法(在这篇文章中描述):
buildTypes{
flavor1Rev{
packageName 'com.example.rev.flavor1'
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: ['package_permission' : 'com.example.rev.flavor1.permission.MAPS_RECEIVE'])
}
}
Run Code Online (Sandbox Code Playgroud)
但是使用这个我得到了这个错误:
找不到参数[{tokens = {package_permission = com.example.rev.flavor1.permission.MAPS_RECEIVE}}的方法filter(),BuildTypeDsl_D ecorated {name = ReplaceTokens,debuggable = false,jniDebugBuild = false,renderscript DebugBuild = false, BuildTypeD上的renderscriptOptimLevel = 3,packageNameSuffix = null,versionNameS uffix = null,runProguard = false,zipAlign = true,signingConfig = null}] sl_Decorated {name = buderusFinal,debuggable = false,jniDebugBuild = false,renderscr iptDebugBuild = false,renderscriptOptimLevel = 3 ,packageNameSuffix = null,versionNa meSuffix = null,runProguard = false,zipAlign …
我目前正在尝试将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.`
Run Code Online (Sandbox Code Playgroud)
通过一些挖掘,似乎这processManifest是在0.14.3版本中删除的已弃用属性之一.知道新的属性名称是什么?相同的用户指南尚未针对新版本进行更新,因此我找不到任何相关文档.
编辑:这是需要该属性的代码.我使用它将一些构建时值注入清单:
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')
}
}
Run Code Online (Sandbox Code Playgroud) android gradle android-studio build.gradle android-gradle-plugin