Unity 使用.bat自动化打包Apk

这篇具有很好参考价值的文章主要介绍了Unity 使用.bat自动化打包Apk。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先创建一个start.bat脚本内容如下

@echo off
F:
cd F:\unityProject\Test
start cmd /c call build.bat

G:
cd G:\AndroidStudioProject\Test
./gradlew clean project
pause

start cmd /c call build.bat     --新建一个CMD窗口执行另外一个.bat文件

cd G:\AndroidStudioProject\Test --进入到AndroidStudioProject文件夹中
./gradlew clean project    --执行gradle的清除缓存命令

然后创建一个 build.bat文件 内容如下

TASKLIST /V /S localhost /U %username%>tmp_process_list.txt
TYPE tmp_process_list.txt |FIND "Unity.exe"
 
IF ERRORLEVEL 0 (GOTO UNITY_IS_RUNNING)
ELSE (GOTO START_UNITY)
 
:UNITY_IS_RUNNING
TASKKILL /F /IM Unity.exe
PING 127.0.0.1 -n 1 >NUL
GOTO START_UNITY
 
:START_UNITY
C:
CD C:\Program Files\Unity\Editor
.\Unity.exe -projectPath F:\unityProject\Test -quit -batchmode -executeMethod Test.BuildEditor.BuildApp

echo F | xcopy "F:\unityProject\Test\App\test\unityLibrary\libs\unity-classes.jar" "G:\AndroidStudioProject\Test\unityLibrary\libs\unity-classes.jar" /Y
set "notCopy="

set src=F:\unityProject\Test\App\test\unityLibrary\src\main\Il2CppOutputProject
set dest=G:\AndroidStudioProject\Test\unityLibrary\src\main\Il2CppOutputProject
cd /d %src%
for /f "tokens=*" %%i in ('dir /B %src%') do (
echo %notCopy%|findstr "%%i">nul||(echo %%~ai|findstr "d">nul && xcopy %%~fi\* %dest%\%%~ni\ /E /Y || xcopy %%~fi %dest%\ /S /Y)
)

set src1=F:\unityProject\Test\App\test\unityLibrary\src\main\assets
set dest1=G:\AndroidStudioProject\Test\unityLibrary\src\main\assets
cd /d %src1%
for /f "tokens=*" %%i in ('dir /B %src1%') do (
echo %notCopy%|findstr "%%i">nul||(echo %%~ai|findstr "d">nul && xcopy %%~fi\* %dest1%\%%~ni\ /E /Y || xcopy %%~fi %dest1%\ /S /Y)
)

set src2=F:\unityProject\Test\App\test\unityLibrary\src\main\jniLibs
set dest2=G:\AndroidStudioProject\Test\unityLibrary\src\main\jniLibs
cd /d %src2%
for /f "tokens=*" %%i in ('dir /B %src2%') do (
echo %notCopy%|findstr "%%i">nul||(echo %%~ai|findstr "d">nul && xcopy %%~fi\* %dest2%\%%~ni\ /E /Y || xcopy %%~fi %dest2%\ /S /Y)
)

set src3=F:\unityProject\Test\App\test\unityLibrary\src\main\jniStaticLibs
set dest3=G:\AndroidStudioProject\Test\unityLibrary\src\main\jniStaticLibs
cd /d %src3%
for /f "tokens=*" %%i in ('dir /B %src3%') do (
echo %notCopy%|findstr "%%i">nul||(echo %%~ai|findstr "d">nul && xcopy %%~fi\* %dest3%\%%~ni\ /E /Y || xcopy %%~fi %dest3%\ /S /Y)
)

cd /
G:
cd G:\AndroidStudioProject\Test
./gradlew assembleRelease

unity 自动打包,Unity,自动化,unity,android,android studio

 进入到Unity的安装目录Editor文件夹

我这个是用的Unity的破解版本 如果使用的UnityHub的话修改为如下

CD C:\Program Files\Unity\Hub\Editor\2020.1.5f1c1\Editor

unity 自动打包,Unity,自动化,unity,android,android studio

 启动.\Unity.exe 调用你要打包的Unity项目目录Editor文件夹下的Editor函数Test.BuildEditor.BuildApp Test是命名空间有则写 没有则去掉 BuildEditor是脚本名字 BuildApp是函数名字

unity 自动打包,Unity,自动化,unity,android,android studio

 拷贝和替换AS内容

unity 自动打包,Unity,自动化,unity,android,android studio

 进入到AS项目根目录里面然后 执行Release出包  也可以执行./gradlew assembleDebug 出Debug包

 最后执行打开 G:\AndroidStudioProject\Test\launcher\build\outputs\apk\release\ 文件夹即可看到出的Apk

Unity脚本如下

using System;
using System.IO;
using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;
namespace Test
{
    public class BuildEditor
    {
        [MenuItem("Build/Build")]
        public static void BuildApp()
        {
            BuildGameRes();
#if UNITY_ANDROID
            Build_Apk();
#else
            Build_Ipa();
#endif
        }

        private static void BuildGameRes()
        {
            //写自己的资源打包
        }
        private static void Build_Apk()
        {
            PlayerSettings.Android.keystoreName = Application.dataPath.Replace("/Assets", "") + "/test.keystore";
            PlayerSettings.Android.keystorePass = "123456";
            PlayerSettings.Android.keyaliasName = "test";
            PlayerSettings.Android.keyaliasPass = "123456";
            PlayerSettings.Android.useAPKExpansionFiles = false;
            PlayerSettings.bundleVersion = "1";
            PlayerSettings.Android.bundleVersionCode = 1;
            PlayerSettings.applicationIdentifier = "com.test.test01";
            PlayerSettings.Android.targetArchitectures = AndroidArchitecture.All;

            string time = DateTime.Now.ToString("yyyyMMddHHmmss");
            string[] scenes = {
                @"Assets/Res/Resources/scene/test.unity",
            };
            string fileName = "test";
            fileName = Application.dataPath.Replace("/Assets", "") + "/App/" + fileName;
            string dir = Path.GetDirectoryName(fileName);
            if (Directory.Exists(dir))
                Directory.Delete(dir, true);
            Directory.CreateDirectory(dir);
            BuildOptions buildOptions = BuildOptions.CompressWithLz4;
            BuildReport report = BuildPipeline.BuildPlayer(scenes, fileName, BuildTarget.Android, buildOptions);
            if (report.summary.result != BuildResult.Succeeded)
            {
                Debug.LogError("build fail - " + fileName);
                return;
            }
            AssetDatabase.Refresh();
            string path = Application.dataPath.Replace("/Assets", "") + "/App";
            path = path.Replace("/", @"\");
            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "explorer.exe";
            p.StartInfo.Arguments = path;
            p.Start();
            Debug.LogError("build success - " + fileName);
        }

        private static void Build_Ipa()
        {
            PlayerSettings.bundleVersion = "1";
            PlayerSettings.iOS.buildNumber = "1";
            PlayerSettings.applicationIdentifier = "com.test.test01";
            string[] scenes = {
                @"Assets/Res/Resources/scene/test.unity",
            };
            string path = EditorUtility.SaveFolderPanel("save xcode", "", "");

            BuildOptions buildOptions = BuildOptions.CompressWithLz4;
            BuildReport report = BuildPipeline.BuildPlayer(scenes, path, BuildTarget.iOS, buildOptions);
            if (report.summary.result != BuildResult.Succeeded)
            {
                Debug.LogError("build fail - " + path);
                return;
            }
            AssetDatabase.Refresh();

            Debug.LogError("build success - " + path);
        }
    }
}

参考链接:

使用命令行运行unity并执行某个静态函数(运用于命令行打包和批量打包)_林新发的博客-CSDN博客_unity 命令行打包

Unity命令行参数链接:

命令行参数 - Unity 手册文章来源地址https://www.toymoban.com/news/detail-533131.html

到了这里,关于Unity 使用.bat自动化打包Apk的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用apifox打包测试用例生成测试套件自动化执行

    1、首先点击自动化测试--创建测试用例--新建分组(整理每个模块对应的测试用例),右键点击对应的分组新建测试用例,开始创建测试用例。 2、创建测试用例:输入对应的名称,以及用例执行的优先级(核心、高、中、低),添加对应的用例备注(说明)  3、编辑测试用

    2024年02月11日
    浏览(52)
  • [bat]0基础实现自动化办公-基于start实现一键打开常用软件/文档

    每次开机时,都要一个个打开常用软件,比如微信、QQ或是word文档、excel表格等程序,比较费时。 使用bat脚本中的start方法,通过将需要打开的程序或文件写入到bat脚本中,运行bat脚本从而实现一键批量打开常用软件。 通过前文已实现了新建一个可运行的bat脚本,现在我们只

    2024年01月19日
    浏览(55)
  • uniapp使用cli脚手架创建兼容小程序和h5的项目 自动化命令打包运行

    HbuliderX搭建项目结构: CLI搭建项目结构: CLI方式搭建uniapp项目: 大家可以看下两种方式搭建的项目文件夹目录有什么区别,上面的是HbuilderX模版搭建的小程序项目,下面的是cli搭建的项目,先把my-test项目中src下面的文件全部删除,然后我把小程序代码全部塞进了src文件夹下

    2024年02月16日
    浏览(71)
  • Jenkins自动化打包脚本

    jenkins可以设置定时任务打包,也已手动点按钮打包,还可以通过执行http请求打包,今天我们就通过shell脚本,通过curl命令进行jenkins打包。 2.1 在jenkins上构建项目 设置触发器

    2024年02月13日
    浏览(40)
  • jenkins-自动化打包部署

    环境:         centos 7.2或者更新         rmp包:官方下载地址 Redhat Jenkins Packages         java-1.8.0 安装: 配置:jenkins 配置文件 /etc/sysconfig/jenkins  ,可以根据需求自行修改 访问web 并进行配置 稍等一会,就可以正常登录了 根据需要安装自定义插件,本次选择是推

    2024年02月13日
    浏览(45)
  • jenkins编译打包及自动化部署

    一:简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 官网文档:https://www.jenkins.io/zh/doc/ 二:下载及安装(Windows为例) 下载Jenkins安装包 需要安装jdk(11和17版本

    2024年03月21日
    浏览(50)
  • Selenium自动化脚本打包exe文件

    近期由于工作需要写了一个selenium自动化脚本,但是每次运行的时候都要打开Pycharm,因此本人直接使用Python第三方打包库PyInstaller将py文件打包成一个可执行的exe文件,在使用时无需安装Python也可以点击运行。 PyInstaller是一个使用较为简单便捷的打包套件,只需要几行命令即可

    2023年04月08日
    浏览(98)
  • Android之Gradle自动化打包实战

    解放双手,双击桌面快捷方式生成apk包,基于Gradle、bat文件让开发人员告别打包烦扰! 前不久有一个Unity3D研发的小仙女在羽毛球场问我关于Android Studio打apk的一些事情,她说他们运营和测试隔三差五的就坐着她旁边要她重复性的打包(估计是那群痴汉打着工作的幌子实际上干

    2024年02月05日
    浏览(41)
  • 17.Jenkins完成自动化 拉取,编译,打包,部署

    1.1安装gitee插件到jenkins  gitee默认不允许内网触发。----必须要配置内网穿透 NATAPP -       思考: 我们的项目和jenkins是不是都在一台服务器上。因为jenkins它所在的服务器非常耗费资源,因为jenkins本身要集成很多软件。如果这时项目也部署到当作jenkins所在的服务器,势必会导致

    2024年02月04日
    浏览(46)
  • 【uniapp】Uniapp cli 自动化打包脚本实现

    通常使用uniapp开发app时,大多数会使用项目的云服务打包,否则的话再借助原生会变得极其复杂,还要去安装对应大内存的环境。如果恰好此时,你有一个需求是,可以随意的更换logo和封面、标题切换成另外一个app,那么很明显你的HBuilderX维护起来是非常复杂的,如果我们想

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包