使用批处理一键打包Unity安卓APK文件

好久都没有更新自个的Blog了,前段时间比较忙,难得今日有空来写一点博客吧!说不定写到一半的时候就会去弄新的需求啦!
这次为写的是一个比较好用的工具类博客吧,也是实际项目需求中可能会用到的哦!也是我前段时间写的小工具功能吧,方便不懂程序的人来做程序啦!说白了 工具类就是给任何人都能看的,都能会用的,而不需要向我们程序一样自己写代码去实现某个功能。比如说项目中后期测试需要经常打包成APK,而测试人员又不会打包,程序呢,又有别的事情要去做,那么此时有一个一键打包的工具就非常好用了哦!虽然unity在打包安卓的时候已经很简单了 ,但是要想不打开unity就能打出APK文件的话,那么还是需要我们程序的帮助哦,哈哈。。。
好了,不说多了,我们步入正题吧!这次要讲的是如何使用Windows命令行通过批处理的方式来一键打包出我们所需要的APK文件。
准备工作

  • 需要自己配置好unity打包安卓的环境,比如说JDK,SDK等,设置好环境变量。
  • unity平台需要设置成安卓平台。
  • 使用Window系统即可
  • 需要了解Windows命令行基本语法要求

铺垫阶段

  • 设置好unity中PlayerSetting中打包所需要的安卓参数,比如 App 的图标,闪屏图标,安装包名,公司名,是否带签名密钥打包等等一系列工作

函数说明阶段
这里先把将要用到的unity函数例举出来 以便大家下面对代码的更好理解。

  • C# ⇒ public static string BuildPlayer(string[] levels, string locationPathName, BuildTarget target, BuildOptions options); 函数 用来编译项目用的
  • 参数解释:
    levels
    编译要被包含的场景,如果为空,当前打开的场景将被编译。路径相对于项目文件夹
    locationPathName
    将被编译应用程序的路径。
    target
    要编译的目标平台。
    options
    额外编译选项
  • BuildTarget 你要选择的打包的目标平台
  • BuildOptions 打包时候的额外编译选项
  • EditorBuildSettings 编辑器模式下的发布设置
  • EditorBuildSettings.scenes 指你在编辑器模式下往BuildSetting里面添加的场景
    下面是一个命令行参数 在unity中使用的 (很重要)
  • unity中要使用到的命令行参数
  • windows命令行下一些参数
  • echo 显示消息,或者启用或关闭命令回显。
  • echo off // 后续所有命令在执行前,不打印出命令的内容
  • echo “Hello World!!!” // 输出Hello World!!!到终端屏幕
  • 有效标号:冒号后紧跟一个以字母数字开头的字符串,goto语句可以识别
  • 无效标号::冒号后紧跟一个非字母数字的一个特殊符号,goto无法识别的标号,可以起到注释作用,::常被用作注释符号
  • %cd% 是bat文件所在路径

一些关于参数的说明应该就是这些了 ,下面我们正式进入编码阶段吧!
编码阶段
随便打开一个unity项目即可,如何写好下面的脚本 放到我们的Editor文件夹下面。

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class BuilderApk : Editor
{
    [MenuItem("BuildApk/BuildMyAndroidApk")]
    public static void BuildMyAndroidApk()
    {
        string outputPath = "G:\\5.6.5\\Client\\MyApkTest\\MyBatApk.apk";           //输出的安装包路径目录
        BuildOptions buildOption = BuildOptions.None;
        outputPath = outputPath.Replace('\\', '/');
        BuildPipeline.BuildPlayer(GetBuildScenes(), outputPath, BuildTarget.Android, buildOption);
    }

    /// 
    /// 取得要打包的场景
    /// 
    /// 
    static string[] GetBuildScenes()
    {
        List pathList = new List();
        foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
        {
            if (scene.enabled)
            {
                pathList.Add(scene.path);
            }
        }
        return pathList.ToArray();
    }
}

到这里可以说是在unity中的工作已经完成了哦 !大家可以把unity关闭了。记住哦 ,一定要关闭掉unity,因为要确保关闭Unity编辑器,然后才运行bat文件,不然你运行肯定失败。
下面就是window中批处理的一些指令了。
新建一个文本文档,如何写入下面的命令

@echo off
 
rem 这里是一些路径的常量设置 使用set来处理 

set UNITY_PATH=F:\unity5.6.5\Unity\Editor\Unity.exe 		rem  这个是你的Unity安装应用程序的路径
set UNITY_PROJECT_PATH=G:\5.6.5\Client\GuJian				rem  这个是你的Unity工程的路径
set EXPORT_PROJECT_PATH=%cd%\BatunityApk				    rem  这个是你导出的路径(当然了这个路径也可以直接在unity中写好即可)
set UNITY_METHOD_NAME=BuilderApk.BuildMyAndroidApk			rem  这个是unity脚本中的类名+方法名
set UNITY_LOG_PATH=%cd%\BatunityApk_log.txt					rem   这个是记录日志的txt路径和文件名


echo  1.首先清理旧的文件夹

if exist %EXPORT_PROJECT_PATH% ( rd /s /q %EXPORT_PROJECT_PATH% ) 
md %EXPORT_PROJECT_PATH%

if not %errorlevel%==0 ( goto fail)

echo 2.开始编译
 
echo 3.然后调用unity中打包方法来打包

%UNITY_PATH% -quit -batchmode -logFile %UNITY_LOG_PATH% -projectPath %UNITY_PROJECT_PATH% -executeMethod %UNITY_METHOD_NAME% 
 
if not %errorlevel%==0 ( goto fail ) else ( goto success )


:success

echo 4.打包成功
goto end
 
 
:fail

echo 4.打包失败
goto end

:end

echo 5.批处理结束

pause rem 让控制台暂停

然后将记事本保存 ,此时一定要把记事本的.txt 文件改成 .bat 结尾的 使它成为批处理文件。
最后运行即可。时间会有一点点长,等完事之后大家就可以看见你要打出的APK文件安装包了哦~ ~ ~
时间原因 ,不足之处请指出 ,高手请绕道~

你可能感兴趣的:(c#,unity,Windows)