Unity 自动化打安卓工程并生成APK包

主要步骤如下:

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;

        }

    }

}

你可能感兴趣的:(Unity 自动化打安卓工程并生成APK包)