当前位置: 首页 > 知识库问答 >
问题:

如何在android Studio中用gradle替换buildvariant的字符串?

鲁才艺
2023-03-14
flavor1 -> packagename: com.example.flavor1 
flavor2 -> packagename: com.example.flavor2

问题是:如何替换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'])
    }
}

但是使用这个,我得到了这个错误:

<string name="package_permission">package_permission</string>
buildTypes{
    flavor1Rev{
        copy{
            from('src/res/'){
                include '**/*.xml'
                 filter{String line -> line.replaceAll(package_permission, 'com.example.rev.flavor1.permission.MAPS_RECEIVE')}
            }
            into '$buildDir/res'
        }
    }
} 

共有1个答案

林修真
2023-03-14

我自己解决了这个问题,所以这里是“一步一步”的解决方案--也许它会帮助其他一些新手分级:)

>

  • 一般复制任务:

    copy{
        from("pathToMyFolder"){
            include "my.file"
        }
        // you have to use a new path for youre modified file
        into("pathToFolderWhereToCopyMyNewFile")
    }
    

    一般替换一行:

    copy {
       ...
       filter{
           String line -> line.replaceAll("<complete line of regular expression>",
                                          "<complete line of modified expression>")
       }
    }
    
    android.applicationVariants.each{ variant -> 
        variant.processManifest.doLast{ 
            copy{
                from("${buildDir}/manifests"){
                    include "${variant.dirName}/AndroidManifest.xml"
                }
                into("${buildDir}/manifests/$variant.name")
    
                // define a variable for your key:
                def gmaps_key = "<your-key>"
    
                filter{
                    String line -> line.replaceAll("<meta-data android:name=\"com.google.android.maps.v2.API_KEY\" android:value=\"\"/>",
                                                   "<meta-data android:name=\"com.google.android.maps.v2.API_KEY\" android:value=\"" + gmaps_key + "\"/>")
                }
    
                // set the path to the modified Manifest:
                variant.processResources.manifestFile = file("${buildDir}/manifests/${variant.name}/${variant.dirName}/AndroidManifest.xml")
            }    
       }
    }
    

  •  类似资料:
    • 问题内容: 如何在Java中用空字符串替换单引号’。我尝试了以下操作,但似乎没有用。 提前致谢。非常感谢您的帮助。(输出应为:Sids den) 谢谢你们的回应。我想我应该对我的问题更加清楚。基本上,我从表中获得特殊字符,并且从同一个表中我们必须用什么值替换那些特殊字符。这是代码片段: 因此,当数据中的evrf有特殊字符’时,我将面临nullpointer异常。请建议如何进行此操作? 问题答案:

    • 问题内容: 如何替换字符串(字符串以上)中的所有字符,应该看起来像? 问题答案: 一种无需正则表达式的简单方法: https://play.golang.org/p/B3c9Ket9fp 您最初可能会想些什么: https://play.golang.org/p/nbNNFJApPp

    • 问题内容: 我正在从用户那里获得一个物理位置地址,并试图安排它来创建一个URL,该URL以后将用于从Google Geocode API获取JSON响应。 最终的URL字符串结果应与此类似,但不能有空格: http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View

    • 我希望我的程序替换输入字符串中的每个元音。

    • 问题内容: 我有一个字符串叫做 我想用 我的输出替换DOT 我尝试了这段代码: 我正在获取StringIndexOutOfBoundsException。 如何更换圆点? 问题答案: 在点之前需要两个反斜杠,一个反斜杠可以使斜杠通过,而另一个反斜杠可以使点变为文字。正斜杠和星号视为原义。 http://docs.oracle.com/javase/7/docs/api/java/lang/Stri

    • 如果给一个字符串,比如“去医学院!”例如,如何仅替换偶数字符?问题是,虽然我的代码处理第一个单词,但单词之间的空格本身算作一个字符,并将第二个单词中的替换搞乱,第二个单词的第一个字母被归类为偶数。 这是我的尝试 这将给出输出“gomd!”(第二个字母正确替换为表示偶数,但第二个单词的第一个字母不应替换为“第一个”不是“偶数”。如何使索引忽略空格? 答案最好不包含数组,只包含Char和String方