在我的android项目中,我所有的.java视图文件都根据当前包的名称导入R文件。当我在Android Manifest中更改我的包名称时(动态,不通过Eclipse或任何其他IDE重构),我需要将所有java文件的引用指向生成的新R文件
我正在通过Ant制作一个构建脚本,但我不确定正则表达式约定是什么样的
需要替换的字符串如下所示:
import com.mysite.myapp.R;
即
import com.sushiroll.california.R
这就是我在ant构建脚本中的内容
<replaceregexp file="src/*"
match="import*.R"
replace="import ${current.package}.R"
byline="true">
<fileset dir="src/.">
<include name="*.java"/>
</fileset>
</replaceregexp>
我希望匹配所有表示import
并以.R
并将其替换为import $current.package}.R
我怎么称之为ant正则表达式呢?我写的匹配和替换只是猜测
答案 0 :(得分:2)
您需要在.R
之前对旧的包名称字符进行分组如果您知道包名称
match="import com\.mysite\.myapp\.R;"
如果你现在知道包名,但是如果你从不同的包中导入R,那么准备好为错误的导入失败
match="import (.*).R;"
替换为
replace="import ${current.package}.R;"
和
<fileset dir="src">
<include name="**/*.java"/>
</fileset>
答案 1 :(得分:1)
<replaceregexp
match="import .+?\.R;"
replace="import ${current.package}.R;"
flags="g"
>
...
如果需要+?
,那么如果您在一行中有两个导入,并且需要g
,那么不仅每个文件的一个导入被替换。虽然目前每个文件只有一个,因为你用相同的字符串替换所有文件,这是普遍正确的正则表达式...