主要步骤如下:
1. 实现Unity 打包完成的回调方法
2. 利用批处理命令实现自动化打包,直接生成APK
1. 实现Unity打包完成的方法
[PostProcessBuild(1)]
public static void AfterBuild(BuildTarget target, string pathToBuiltProject)
{
// 判断平台是否是安卓
if (target == BuildTarget.Android)
{
// 判断是否是导出安卓工程
if (EditorUserBuildSettings.exportAsGoogleAndroidProject)
{
EditorUtil.ShowDisplayDialog("自动生成APK", "OK", "TIP");
BuildAS();
}
}
}
2.利用批处理命令实现自动化打包,直接生成APK
1、编写批处理命令,生成批处理文件
生成编译AS工程的批处理命令:
set filename="%cd%\gradlew.bat"
D:\GradleVersionTools\gradle-5.6.4-all\gradle-5.6.4-all\gradle-5.6.4\bin\gradle.bat init wrapper
D:\GradleVersionTools\gradle-5.6.4-all\gradle-5.6.4-all\gradle-5.6.4 这个路径是我的Unity配置中Gradle的路径
接着生成APK的批处理命令,只有一行: gradlew assembleRelease
2、执行批处理文件,生成APK包
1. 先执行编译安卓工程的批处理文件
2.再执行生成APK的批处理文件
注意:两个批处理文件要放在生成的安卓工程中,与Launch文件夹同级的位置
至此APK生成完毕,再也不用打开安卓工程打包了,下边是自己写的生成批处理文件,和执行批处理文件代码,供大家参考
public static class BatTool
{
public static void WriteBat(string batContent, string filePath)
{
if (!File.Exists(filePath))
{
FileStream fs1 = new FileStream(filePath, FileMode.Create, FileAccess.Write);//create writing file
StreamWriter sw = new StreamWriter(fs1, Encoding.ASCII);
sw.WriteLine(batContent);//start writing
sw.Close();
fs1.Close();
}
else
{
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Write);
StreamWriter sr = new StreamWriter(fs);
sr.WriteLine(batContent);
sr.Close();
fs.Close();
}
}
public static bool CallBat(string fileName, string targetPath)
{
System.Diagnostics.Process proc = null;
try
{
string targetDir = targetPath;
proc = new System.Diagnostics.Process();//System.Diagnostics.Process打开和关闭exe应用程序
proc.StartInfo.WorkingDirectory = targetDir;
proc.StartInfo.FileName = fileName;
//proc.StartInfo.Arguments = string.Format(targetPath + " " + originPath);
//proc.StartInfo.CreateNoWindow = true;
//proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//disable dos window
proc.Start();
proc.WaitForExit();
return true;
}
catch (System.Exception ex)
{
Debug.LogFormat("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
return false;
}
}
}
网友评论