using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using System.IO;
using System.Text.RegularExpressions;
public class AdincubeEditor : Editor
{
//打包完成后调用该方法
[PostProcessBuild(1)]
public static void AfterBuild(BuildTarget target, string pathToBuiltProject)
{
Debug.Log("Build Success " + target + " " + pathToBuiltProject);
//打开文件或文件夹
//System.Diagnostics.Process.Start(pathToBuiltProject);
if (target == BuildTarget.Android)
{
if (!pathToBuiltProject.EndsWith(".apk", System.StringComparison.Ordinal))
{
string projectPath = pathToBuiltProject + "/" + PlayerSettings.productName;
ModifyASXmlByFilePath(projectPath + "/src/main/AndroidManifest.xml");
ModifyASXmlByFilePath(projectPath + "/Firebase/AndroidManifest.xml");
ModifyASGradleByFilePath(projectPath + "/build.gradle", projectPath + "/Firebase/build.gradle");
}
}
}
static void ModifyASXmlByFilePath(string filePath)
{
//判断是否存在该文件
if (File.Exists(filePath))
{
//读取文件信息
StreamReader sr = new StreamReader(filePath);
string targetStr = sr.ReadToEnd();
sr.Close();
sr.Dispose();
//正则表达式匹配指定格式字符串
Regex regex = new Regex("<uses-sdk.*/>");
Match match = regex.Match(targetStr);
if (match.Groups.Count > 0)
{
//获取匹配到的字符串
string replaceStr = match.Groups[0].ToString();
//字符串替换
string newStr = targetStr.Replace(replaceStr, "");
//将修改后的文本写入(覆盖原文本)文件
StreamWriter sw = new StreamWriter(filePath, false);
sw.Write(newStr);
sw.Close();
sw.Dispose();
}
}
}
static void ModifyASGradleByFilePath(string targetpath, string filePath)
{
if (File.Exists(filePath))
{
//读取文本
StreamReader sr = new StreamReader(filePath);
string targetStr = sr.ReadToEnd();
sr.Close();
sr.Dispose();
//替换字符串
targetStr = targetStr.Replace("compile fileTree", "implementation fileTree");
targetStr = targetStr.Replace("buildToolsVersion '28.0.0'", "buildToolsVersion '28.0.3'");
//重新写入文本
StreamWriter sw = new StreamWriter(filePath, false);
sw.Write(targetStr);
sw.Close();
sw.Dispose();
}
if (File.Exists(targetpath) && File.Exists(filePath))
{
//读取文本A的字符串str1, 替换文本B的字符串str2
StreamReader targetSr = new StreamReader(targetpath);
string targetStr = targetSr.ReadToEnd();
targetSr.Close();
targetSr.Dispose();
Regex regex = new Regex(@"'com.android.tools.build:gradle:\d.\d.\d'");
Match match = regex.Match(targetStr);
if (match.Groups.Count > 0)
{
string modifyStr = match.Groups[0].ToString();
StreamReader sr = new StreamReader(filePath);
string targetStr2 = sr.ReadToEnd();
sr.Close();
sr.Dispose();
Regex regex2 = new Regex(@"'com.android.tools.build:gradle:\d.\d.\d'");
Match match2 = regex.Match(targetStr2);
if (match2.Groups.Count > 0)
{
string modifyStr2 = match2.Groups[0].ToString();
Debug.Log(modifyStr);
Debug.Log(modifyStr2);
if (modifyStr != modifyStr2)
{
string newStr = targetStr2.Replace(modifyStr2, modifyStr);
Debug.Log(targetStr2);
Debug.Log(newStr);
StreamWriter sw = new StreamWriter(filePath, false);
sw.Write(newStr);
sw.Close();
sw.Dispose();
}
}
}
}
}
}
本文来自博客园,作者:萧然CS,转载请注明原文链接:https://www.cnblogs.com/z-c-s/p/15112940.html
浙公网安备 33010602011771号