美文网首页
Unity 自动化打安卓工程并生成APK包

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

作者: Lennie_S | 来源:发表于2022-07-13 17:52 被阅读0次

    主要步骤如下:

    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包

          本文链接:https://www.haomeiwen.com/subject/xdjtirtx.html