AppCenter:在构建期间查找并替换文件中的字符串



是否可以在AppCenter中编译之前编辑。mm文件?

在试图修复一个构建错误,我想找到并替换../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm中的字符串。

我试着在appcenter-pre-build.sh内使用sed -i 's/oldString/newString/g' ../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm,但它不起作用。

任何帮助将是感激的,谢谢。

不确定这是否是您的情况,但我需要更新一个复杂项目的版本号。为了用新版本替换当前版本的计数器,我考虑在每次构建时更新文件。在使用了一些版本的bash脚本之后,我意识到用C编写一个带有几个参数的控制台应用程序来解决这个问题更容易。对我来说简直完美。如果你需要,我可以分享这个程序的简单代码。

下面是C代码,它在作为参数传递的文件中查找字符串并替换其中的版本号。

int main(int argc, char* argv[])
{
cout << "Version changer startn";
if (argc < 2) {
cout << "There is no path argument. Version was no changed.";
return 1;
}
string sourcePath = argv[1];
string targetPath = sourcePath + ".tmp";

bool firstLine = true;
cout << sourcePath << endl;
ifstream sourceFile(sourcePath); // open file for input
ofstream targetFile(targetPath); // open file for output
string line;
while (getline(sourceFile, line)) // for each line read from the file
{
// looking for the desired line
if (line.find("public static String VER") != std::string::npos) { // replace "public static String VER" to your string definition code
line.replace(0, 32, "");
line.replace(line.length() - 2, 2, "");
int number = atoi(line.c_str());
number++; // In my case, I get an integer and add one to it
string v = to_string(number);
line = "    public static String VER = "" + v + "";";
cout << v;
}
if (firstLine) {
targetFile << line;
firstLine = false;
}
else
targetFile << endl << line;
}
sourceFile.close();
targetFile.close();
remove(sourcePath.c_str());
if (rename(targetPath.c_str(), sourcePath.c_str()) != 0)
perror("Error renaming file");
else
cout << endl << "----------- done -----------n";
}

相关内容

  • 没有找到相关文章

最新更新