Unity 命令行发Android包

news2024/12/28 17:49:03

unity.exe 只允许存在一个 如果开了ide 或者之前的没关掉 就不能运行了

C:
cd C:\Program Files\Unity\Editor\2021.3.6f1c1\Editor\
Unity.exe ^
-quit ^
-batchmode ^
-projectPath E:\puerts\UnityJenkins ^
-executeMethod Main.Build

C#代码放到任意Editor目录里

using System;
using UnityEditor;
using UnityEngine;
using UnityEditor.Build.Reporting;
class Main
{
    static void Build()
    {
        BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = new[] { "Assets/Scenes/SampleScene.unity" };
        buildPlayerOptions.locationPathName = "AndroidBuild.apk";
        buildPlayerOptions.target = BuildTarget.Android;
        buildPlayerOptions.options = BuildOptions.None;

        BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);
        BuildSummary summary = report.summary;

        if (summary.result == BuildResult.Succeeded)
        {
            Debug.Log("Build succeeded: " + summary.totalSize + " bytes");
        }

        if (summary.result == BuildResult.Failed)
        {
            Debug.Log("Build failed");
        }
    }
    
	static string[] GetBuildScenes()
    {
        List<string> names = new List<string>();
        foreach (EditorBuildSettingsScene e in EditorBuildSettings.scenes)
        {
            if (e == null)
                continue;
            if (e.enabled)
                names.Add(e.path);
        }
        return names.ToArray();
    }
}

也可以在命令行里加参数
c#读 String[] arguments = Environment.GetCommandLineArgs();
c#里输出的内容 都在Editor.log里
地址是
C:\Users\Administrator\AppData\Local\Unity\Editor
可以在ide的这里打开
里面有输出堆栈和内容方便调试
在这里插入图片描述
日志讲解
https://docs.unity3d.com/cn/current/Manual/LogFiles.html

用 jenkins 发布

第一种方法

可以安装 unity的插件
在这里插入图片描述
路径里写到版本号就可以了 插件会自己进去读unity.exe

增加步骤
在这里插入图片描述
在这里插入图片描述
这样就可以了
优点是打印到 Editor.log 里的内容 会直接输出到 jenkins 里,方便查看。
缺点是 不能使用 jenkins 里的自定义参数

第二种方法

自己写批处理
在这里插入图片描述
更灵活,符合要求。但是不能打印输出,遇到问题了看不到。
需要自己再写一个脚本
名字自己起 比如a.py 放到unity.exe平级目录
然后
在这里插入图片描述

import os,sys,string,datetime,time,threading
 
g_bStop = False
class OutputLogThread(threading.Thread):
    m_logFilePath = ''
    def run(self):
        global g_bStop
        nPosRead = 0
        fp = None
        print 'OutputLogThread Start'
        while g_bStop == False:
            if os.path.isfile(self.m_logFilePath):
                if fp == None:
                    fp = open(self.m_logFilePath, 'r')
 
            if fp != None:
                fp.seek(nPosRead)
                allLines = fp.readlines()
                nPosRead = fp.tell()
                fp.close()
                fp = None
                for lines in allLines:
                    print lines
            time.sleep(0.5)
 
    def __init__(self, logPath):
        threading.Thread.__init__(self)
        self.m_logFilePath = logPath
 
if __name__ == '__main__':
	if len(sys.argv) < 2:
		print 'not find unity path'
		sys.exit(-1)
	logFilePath = 'editor.txt'
	unityRunParm = ''
	for i in range(len(sys.argv)):
		if i > 0:
			unityRunParm += ' ' + sys.argv[i]
	unityRunParm += ' -logfile ' + logFilePath
	if os.path.isfile(logFilePath):
		os.remove(logFilePath)
	logThread = OutputLogThread(logFilePath)
	logThread.start()
	os.system(unityRunParm)
	g_bStop = True
	logThread.join()

也有一个工具
https://github.com/mr-kelly/unity_realtime_log
可以试试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/385582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux】进程信号——信号的产生

进程信号一、信号概念1.1 信号理解二、产生信号2.1 通过键盘产生信号2.2 捕捉信号自定义signal2.3 系统调用接口产生信号2.3.1 向任意进程发送任意信号kill2.3.2 给自己发送任意信号raise2.3.3 给自己发送指定信号abort2.3.4 理解2.4 硬件异常产生信号2.4.1 除0异常2.4.2 野指针…

ACM-大一训练第三周(Floyd算法+并查集算法专题训练)

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…

五、Bean的作用域

1 singleton 默认情况下&#xff0c;Spring的IoC容器创建的Bean对象是单例的。测试&#xff1a; package com.power.spring6.bean;public class SpringBean {public SpringBean() {System.out.println("无参数构造方法执行了");} }<?xml version"1.0"…

Ubuntu中使用Synaptic进行包管理

Synaptic概况 Synaptic 是一个轻量级的 apt 软件包管理器系统的 GUI 前端&#xff0c;所有你可以在终端中使用 apt-get 命令来做的事&#xff0c;都可以通过 Synaptic 来实现。优势 图形化安装界面&#xff0c;同时可以安装配置相关依赖&#xff0c;避免由于依赖问题导致的各类…

【c++】2023杭州月薪个税计算(chatGPT帮忙加注释)

参考信息 杭州市的个人所得税起征点是每月5000元。 个人所得税税率标准&#xff1a; 1、工资范围在1-5000元之间的&#xff0c;包括5000元&#xff0c;适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的&#xff0c;包括8000元&#xff0c;适用个人所得税税率为3%; 3、工…

SpringBoot3.0 + SpringSecurity6.0+JWT

JWT_SpringSecurity SpringBoot3.0 SpringSecurity6.0JWT Spring Security 是 Spring 家族中的一个安全管理框架。 一般Web应用的需要进行认证和授权。 认证&#xff1a;验证当前访问系统的是不是本系统的用户&#xff0c;并且要确认具体是哪个用户 授权&#xff1a;经过认…

「C/C++」 标准文件操作大全

一、设备文件&#xff08;运行程序时会默认打开这三个设备文件&#xff09; stdin&#xff1a;标准输入&#xff0c;默认为当前终端&#xff08;键盘&#xff09;&#xff0c;我们使用的scanf、getchar函数默认从此终端获得数据。stdout&#xff1a; 标准输出&#xff0c;默认…

当你问ChatGPT一些奇奇怪怪的问题

ChatGPT热度好像已经没那么高了&#xff0c;貌似也蹭不到什么流量了&#xff0c;不过嘛&#xff0c;玩了一下好玩的还是得记录一下。每个问题用标题给出&#xff0c;就可以当目录了。同时附上截图&#xff0c;想直接看图的伙伴可以直接看图。回答以绿色背景的形式给出。 觉得有…

坚如磐石:TiDB 基于时间点的恢复(PiTR)特性优化之路丨6.5 新特性解析

本文介绍了 TiDB 数据库的基于时间点的恢复&#xff08;PiTR&#xff09;特性&#xff0c;该特性允许用户将数据库恢复到特定时间点&#xff0c;从而避免丢失重要数据。文章首先介绍了 PiTR 技术的基本概念和工作原理&#xff0c;接着探讨了 TiDB 对 PiTR 的优化&#xff0c;包…

Java多线程(二)——同步

这一节主要是继上次提到的线程同步三大方法&#xff1a;同步代码块、同步方法、Lock锁。同步代码块&#xff0c;把出现线程安全问题的核心代码给上锁。还是继上次的例子&#xff0c;对代码块加上synchronized ("getMoney") {}之后就不会出现线程安全问题了&#xff1…

文科女生月入14k背后:转行IT软件测试不是谁都学得来!

转行软件测试背后&#xff0c;或许每个人都有自己的无奈。就拿今天要和大家分享的这位小姐姐来说吧&#xff0c;如果不是万不得已&#xff0c;又怎么会狠下心来转行到IT互联网&#xff1f; 应届生逃避就业&#xff0c;考研失败 和大多数人一样&#xff0c;小姐姐的大学生活过得…

SpringBoot入门 - 添加内存数据库H2

上文我们展示了通过学习经典的MVC分包结构展示了一个用户的增删查改项目&#xff0c;但是我们没有接入数据库&#xff1b;本文将在上文的基础上&#xff0c;增加一个H2内存数据库&#xff0c;并且通过Spring 提供的数据访问包JPA进行数据查询。准备知识点在介绍通过Spring JPA接…

专访华西二院吴邦华:隐私计算+AI全栈技术,构筑智慧医院建设的坚实数据底座|爱分析访谈

从IT时代步入DT时代&#xff0c;医疗大数据成为智慧医院建设的重要驱动力。经过多年信息化系统建设&#xff0c;很多医院已经积累了大量的医疗数据资源&#xff0c;但由于各业务系统间数据孤岛化严重、系统架构落后、数据缺乏深度治理等问题存在&#xff0c;导致现有数据深度及…

springsecurity中的类

Authentication AuthenticationProvider 每一个AuthenticationProvider对应一个Authentication 很多个AuthenticationProvider 由一个 ProviderManager管理 ProviderManager implements AuthenticationManager 一个ProviderManager有很多个 AuthenticationProvider Usern…

EasyPoi的excel模板预览与下载、导出简单/复杂数据

官方文档地址&#xff1a;easypoi官网&#xff0c;官方仅供参考&#xff0c;部分描述有问题 excel模板预览 准备工作 事先将整理好的excel模板存在项目中&#xff0c;如图 excel模板预览代码 GetMapping("excel")ApiOperation("excel预览")NoLogpubli…

多个关键字用or、and、包含、不包含动态拼接为正则表达式和SQL查询条件

目录前言校验思路1、存储方式2、实现图一实现图二实现结果最后前言 不知道大家有没有做过这种需求&#xff1a;在某字符串中&#xff0c;根据多个关键字去判断这串字符串是否满足条件。如下图&#xff1a; 亦或是 如果说要根据图二的关键字去数据库中查询符合条件的数据&a…

QT基础(18)- QAbstractSocket

QT基础&#xff08;18&#xff09;- QAbstractSocket1 创建简单的客户端2 QAbstractSocket2.1 简介2.2 枚举2.2.1 BingFlag2.2.2 NetworkLayerProtocol2.2.3 PauseMode2.2.4 SocketError2.2.5 SocketOption2.2.6 SocketType2.2.7 SocketState2.3 公有函数2.3.1 构造函数2.3.2 a…

文献阅读(47)—— 遗传数据研究近视和眼压与视网膜脱落的关系

文献阅读&#xff08;47&#xff09;—— 遗传数据研究近视和眼压与视网膜脱落的关系 文章目录文献阅读&#xff08;47&#xff09;—— 遗传数据研究近视和眼压与视网膜脱落的关系遗传数据研究近视和眼压与视网膜脱落的关系先验知识/知识拓展文章结构文章结果1. 视网膜脱落风险…

centos8安装docker运行java文件

本文由个人总结&#xff0c;如需转载使用请标明原著及原文地址 这里是基于我前一篇搭的centos8服务器做的&#xff0c;如果yum baseos源或appstream源有问题可以去看看前一篇 https://blog.csdn.net/qq_36911145/article/details/129263830 1.安装docker 1.1配置docker yum…

惠普战66pro如何选购内存条?一篇文章讲解清楚

笔记本&#xff1a;惠普 ZHAN66 PRO CPU&#xff1a;Intel Core™ i-8565U CPU 1.80GHz 内存条&#xff1a;Samsung PS: 如果有需要更换硬盘的可以看我之前发的文章&#xff0c;博主进行了长时间的测试。 硬盘选购长测评 文章目录前言一、内存是什么&#xff1f;二、如何操作呢…