2019-04-26 19:50:06 weixin_43812189 阅读数 874

Unity3D Android打包 全面屏适配设置

打个Android包,在Temp/StagingArea下会新建一个AndroidManifest.json文件,复制一份放到Assets/Plugins/Android下,加上

<meta-data android:name="android.max_aspect" android:value="2.2" />
<application android:resizeableActivity="true" />

这样再次打包时会直接使用这个.json而不是重新生成,打出来的包就可以适配全面屏了。

2017-05-02 12:29:07 qq283818296 阅读数 1587
1.Jenkins介绍
jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java,c#,php等)的项目构建,也完全兼容ant、maven、gradle等多种第三方构建工具,同时跟svn、git能无缝集成,也支持直接与知名源代码托管网站,比如github、bitbucket直接集成。

2.Windows下安装Jenkins
jenkins官网地址为http://jenkins-ci.org/,jenkins本身是用java语言开发的,所以安装jenkins的机器至少要有jdk,另外建议git、ant、maven、gradle、groovy等工具也一并安装好,方便与这些构建工具集成。

直接从http://mirrors.jenkins-ci.org/war/latest/jenkins.war 下载最新的war包,然后解压到某个固定目录就算安装完成了,非常方便。
启动方法: java -jarjenkins.war 即可,如果要以后台进程的方式启动,改成nohup java -jar jenkins.war &即可,启动过程中,它会将war包解压到用户目录~/.jenkins目录下,并生成一些目录及配置文件




创建Unity3d工程
  1. 新建C#脚本重命名为Main.cs
  2. Main.cs代码,如下
publicclassMain : MonoBehaviour { privateRect rect = newRect(0f, 0f, Screen.width , Screen.height); voidOnGUI() { GUI.skin.label.fontSize = 40; GUI.Label(rect, "Hello Jenkins"); } }

  1. 依次点击File->NewScene,新建场景,重命名为Main.unity
  2. 在Main.unity场景中,创建GameObject节点,重命名为Node
  3. 将Main.c挂载到节点Node上 
  1. 打开File->BuildSettings,将Main拖进到Scenes InBuild窗口下 
  1. 保存以上所有信息。
  2. 运行可以看到如下图显示 
  1. 检查是否已正确配置包名,AnroidSdk路径。建议先在Unity3d BuildSetting成功输出Android,以隔离下面Jenkins打包失败问题。
Unity打包命令
UnityEditor命令空间下,有打包接口(需要Pro版本)

publicstaticstringBuildPlayer(string[] levels, string locationPathName, BuildTarget target, BuildOptions options);

参数:

levels 为的打包的场景路径数据 

locationPathName 包输出目录 

target 输出平台 

option 输出选项 

上面4个参数的具体用处,其实对应下面的Unity图形界面 




同时Unity3D支持以命令行形式启动,并且允执行一个Editor目录的静态方法。所以只要在此静态方法里使用BuildPlayer.BuildPlayer即可以通过命令行实现打包功能。命令行的各项参数见官方文档 



这里我简单实现这个静态方法

publicclass JenkinsAdapter{ [MenuItem("Jenkins/JenkinsBuild")] publicstaticvoidBuild() { EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android); List<string> sceneList = new List<string>(); EditorBuildSettingsScene[] temp = EditorBuildSettings.scenes; for (int i = 0, iMax = temp.Length; i < iMax; ++i) sceneList.Add(temp[i].path); BuildPipeline.BuildPlayer(sceneList.ToArray(), "./android.apk", BuildTarget.Android, BuildOptions.None); }}

在命令中增加了选项-logFilebuild.log以查看失败原因。

H:\Unity3d492\Editor\Unity.exe -projectPath D:\Test\workspace -executeMethod JenkinsAdapter.Build -quit-batchmode-logFile build.log

将上面脚本的Unity安装和工程路径,抽离出来。编写到脚本文件build.bat,存放到工程根目录下。

%1-projectPath%2-executeMethod JenkinsAdapter.Build -quit-batchmode-logFile build.log


注意:保存以上操作。并提交到代码仓库。 

下面将介绍使用Jenkins。

安装Jenkins
配置Jenkins极为简单,安装即可用,无需要再进行配置。官网下载https://jenkins.io/index.html安装结束后,浏览器打开地址http://127.0.0.1:8080/显示Jenkins平台主页 

新建Jenkins Job
  1. 点击进行,创建一个新任务 
  1. 创建一个自由风格的项目,项目名称为Test 
  1. 填写代码仓库地址。此处以使用代码管理SVN为例。注意选择更新策略 
我建议使用use ‘svn update’ as much as possible, with ‘svn revert’ beforeupdate。因为代码可能会出现冲突导致打包失败。(务必禁止在Jekins打包机上对checkout下来的代码进行修改) 
  1. 选择执行脚本命令。这里以window的bat命令为例。 
  1. 编写命令build.bat"H:\Unity3d492\Editor\Unity.exe""%WORKSPACE%"变量%WORKSPACE%指向代码仓库的checkout目录,build.bat的执行目录同样也为%WORKSPACE% 
  1. 保存退出。
  2. 大功告成。立即进行一次构建。 
常见打包失败原因
  1. 未在Edit-Perfences配置Androidsdk路径
  2. AndroiodAPI版本低于Unity3d运行版本要求。
  3. 未在PlayerSettings配置包名和应用名
  4. 代码冲突。
  5. Unity3d不是Pro版本
  6. Jekins默认使用访客账号登录,会缺少执行安全权限,导致启动Unity3d时失败。错误信息“Validating Project structure … 0.000224seconds. Refresh: detecting ifany”。你需要在Jenkins启动服务属性中,指定登录账号。 


参考资料
http://www.jianshu.com/p/144254a055ba
http://blog.csdn.net/maomaoxiaohuo/article/details/51556749
2019-04-03 21:48:00 Neko1213 阅读数 0

Unity3D安卓打包须知:

 最近在接触Unity3D,在打包安卓时,出现了一些问题,在这里写出来跟大家分享:

首先需要安装jdk和android-sdk,安装方法略

Jdk的目录结构如下:

 

 

android-sdk的目录结构如下:

 

 

 

安装好后,到android sdk的安装目录,找到SDK Manager.exe,运行之,界面如下:

 

 

前两个:Android SDK Tools和 Android Platform-Tools必须安装。

下面的Build-tools至少安装一个(建议安装高版本的,低版本可能会出现打包错误

然后安装SDK-Platform,它必须和Build-tools的版本对应:

 

 

至于下面的Extras,不知道具体是干什么用的,建议全部安装:

 

 

 

然后点击Edit->Preferences,将SDK和JDK的目录设置好

 

 

至此,环境已全部搭建完成。

 

接下来开始打包:

首先点击file -> Build Settings 进入导出对话框

导出对话框如下

 

 

 

选择 Android ,无需更改其他内容,点击build

这时可能会出现以下错误:

 

 

 

解决方法:

点击Edit->Project Settings->Player,会显示这个界面如下界面,请执行以下修改:

 

将包名改成com.YourCompanyName.YourProductName格式,不能以数字或下划线开头

 

 

 

 

再次Build:

如果出现了这个问题,可能是你的Build-tools和SDK-Platform的版本出了问题,建议Build-tools选择高一些的版本,且安装相同版本的SDK-Platform

 

 

如果没有任何问题,应该能产生一个APK安装包:

 

 

转载于:https://www.cnblogs.com/liedElxa/p/10651781.html

2014-10-24 14:30:00 aijingsun 阅读数 4867

Unity4.5安卓打包参数配置

alking

QQ:835970134

Email:aijingsun6@gmail.com


前言

在使用Unity3D工程导出安卓安装包的时候,往往会遇到兼容性的问题,针对某些机型,要么无法打开游戏,要么会出现卡机的现象。面对这种情况,我们可以调节相关的参数来提高兼容性。

为了了解在打包时候每个参数的含义,我们查找了Unity3D的官方文档。为了清楚每个参数所起的作用以及每个参数对兼容性的影响因素,我们有针对性的做了对比实验,然后在安卓云测试平台(http://www.testin.cn)测试兼容性,将最终结果进行比较,最后提出优化方案。

文档说明

功能介绍

Unity4.5安卓打包参数配置主要讲述Unity4.5在进行安卓打包时遇到的一些参数,这些参数的详细解释,以及如何通过修改参数来提高游戏的兼容性。本文主要描述如何配置打包参数,供Unity4.5输出安卓包的工作人员使用。

阅读对象

本文档面向了解Android,Unity3D客户端的开发人员。

配置参数详解

一.Rendering Path(This property is sharedbetween Standalone and WebPlayer content)

渲染路径,这个属性一般在PC上或者网页上比较有用,一般有如下三个选项

Vertex Lit(Lowest lighting fidelity, no shader support.Best used on old machines or limited mobile platforms)

顶点光源模型。不支持shader,在一些旧的机器上或者受限制的机器上最好使用这个选项

Forward(Good support for lighting features; limitedsupport for shadows)

对光的特征支持的很好,但是对阴影支持的不好

Deferred Lighting(Best support for lighting and shadowingfeatures, but requires certain level of hardware support. Best used if you havemany realtime lights. Unity Pro only)

对光的特征和阴影支持的很好,前提是支持硬件加速,如果做实时渲染最好使用这个选项,只有pro版本支持。

 

二.Graphics LevelSelect either ES 1.1 (fixed function) or ES 2.0 (shader based) Open GL level. Whenusing the AVD (emulator) only ES 1.x is supported.

图像等级。在OpenGLES 2.0(支持阴影)和3.0还有1.x(功能性)之间选择,当只用到模拟器的时候,只有ES1.x才支持。

Automatic

自动选择

Force OpenGLES 2.0

强制OpenGL ES2.0

Force OpenGLES 3.0

强制OpenGL ES3.0

 

三.Install Location

安装路径。

PreferExternal

优先外部

Automatic

自动选择(一般都是自动选择,而且兼容性更好)

ForceInternal

强制安装在内部闪存中

 

 

四.Write Access

写入权限

InternalOnly

只能写在内部

External(SDCard)

写在外部SD卡中,对应安卓的写入权限:android.permission.WRITE_EXTERNAL_STORAGE

 

五.Api Compatibility Level

使用.Net的版本

.Net 2.0Subset

.Net2.0的子集,占用较小的空间

.Net 2.0

.Net2.0完全集合,占用较大的空间

 

六.Stripping Level

选择抽出的脚本功能来减少了包的大小(iOSAndroid都可以选择)

Disabled

不减少功能

StripAssemblies

减少程序集合

StripByteCode

减少字节码

Use micromscorlib

使用迷你库,前两者都减少

 

七.Optimize Mesh Data*

对于材料没有必要的数据,可以移除的数据进行优化

 

八,Multithreaded Rendering

多线程渲染

 

九.GPU Skinning*

是否使用GPU着色

 

十.Static Batching

是否激活静态度量,默认是激活状态,只有pro版本有效。

 

十一.Dynamic Batching

是否激活动态度量,默认是激活转台。

实验数据

实验方法

该实验采取对照实验的方法。如果要考察单个参数对于兼容性的影响,必须得控制另外的参数不变。然后针对不同的配置参数打包,上传到云测试平台进行兼容性测试。

实验操作流程

对要进行测试的参数进行设计。

主要涉及到如下几个参数

1.        Graphics Level(GL)

2.        Install Location(IL)

3.        Api Compatibility Level(ACL)

4.        Stripping Level(SL)

5.        Optimize Mesh Data*(OMD)

6.        Multithreaded Rendering*(MR)

7.        GPU Skinning*(GK)

8.        Write Access(WA)

9.        Rendering Path(RP)

10.     Static Batching(SB)

11.     Dynamic Batching(DB)

设计对照组方案

序号

GL

IL

ACL

SL

OMD

MR

GK

WA

RP

SB

DB

1

2.0

external

2.0subset

disable

false

false

false

Internal only

Forward

true

true

2

auto

external

2.0subset

disable

false

false

false

Internal only

Forward

true

true

3

3.0

external

2.0subset

disable

false

false

false

Internal only

Forward

true

true

4

auto

auto

2.0subset

disable

false

false

false

Internal only

Forward

true

true

5

auto

internal

2.0subset

disable

false

false

false

Internal only

Forward

true

true

6

auto

internal

2.0

disable

false

false

false

Internal only

Forward

true

true

7

auto

internal

2.0subset

Assemblies

false

false

false

Internal only

Forward

true

true

8

auto

internal

2.0subset

ByteCode

false

false

false

Internal only

Forward

true

true

9

auto

internal

2.0subset

mscorlib

false

false

false

Internal only

Forward

true

true

10

auto

internal

2.0subset

disable

true

false

false

Internal only

Forward

true

true

11

auto

internal

2.0subset

disable

true

true

false

Internal only

Forward

true

true

12

auto

internal

2.0subset

disable

true

true

true

Internal only

Forward

true

true

13

auto

internal

2.0subset

disable

true

true

true

SDCard

Forward

true

true

14

auto

internal

2.0subset

disable

true

true

true

Internal only

VertexLit

true

true

15

auto

internal

2.0subset

disable

true

true

true

Internal only

Defferred Lig

true

true

16

auto

internal

2.0subset

disable

true

true

true

Internal only

Forward

false

true

17

auto

internal

2.0subset

disable

true

true

true

Internal only

Forward

true

false

 

 

针对每一个设计方案打包。

将上述的17个方案进行打包分别命名为001-017.apk

将打好的安装包进行兼容性测试。

将这17个安装包上传给testin网站,进行兼容性测试

得到测试结果后,得出每个参数的最优化配置。

 

 

正常

启动(s)

CPU(%)

内存(M)

包体

序号

通过率

安装

启动

卸载

平均值

峰值

平均值

峰值

平均值

峰值

 

001

74.30

87.30

85.1

100

0.91

11.67

9.70

100

19.52

66.75

8205

002

66.34

82.80

80.1

100

0.95

13.09

9.47

100

17.82

66.87

8205

003

67.44

82.70

81.5

100

0.94

11.14

9.35

100

17.46

65.63

8205

004

70.21

83.00

84.6

100

1.03

12.42

8.81

100

17.33

65.81

8205

005

69.86

83.30

83.8

100

1.02

10.81

8.82

100

17.61

66.88

8205

006

73.96

87.20

84.9

100

1.10

12.18

9.00

100

19.09

66.01

8972

007

73.81

87.10

84.8

100

1.02

11.12

9.01

100

18.25

65.19

7243

008

80.20

90.80

88.3

100

1.14

11.27

9.13

100

19.85

60.29

7243

009

82.43

90.90

90.7

100

1.13

11.50

9.13

100

19.79

60.46

7243

010

79.68

90.20

88.4

100

1.04

10.93

9.40

100

21.29

68.79

8205

011

78.93

89.00

88.7

100

1.01

10.84

9.96

100

23.41

77.06

8205

012

78.55

89.00

88.3

100

1.00

11.24

11.24

100

23.68

77.04

8205

013

87.79

97.30

90.2

100

0.92

10.76

11.80

100

25.76

72.27

8205

014

88.76

98.00

90.6

100

1.02

11.11

10.90

100

25.36

75.57

8205

015

92.70

99.20

94.5

100

1.23

11.20

10.84

100

26.87

71.95

8205

016

93.17

98.00

95.1

100

1.15

11.72

11.61

100

26.34

72.01

8205

017

88.00

97.60

90.2

100

1.11

10.90

11.17

100

25.87

71.96

8205

 

对照组信息表

序号

参数

对照组

优化顺序

1

Graphics Level

001:002:003

ES2.0 > ES3.0 > Automatic

2

Install Location

002:004:005

Automatic > Force Internal > Prefer External

3

Api Compatibility Level

005:006

.Net2.0 > .Net2.0 Subset

4

Stripping Level

005:007:008:009

Use micro mscorlib > Strip ByteCode > Strip Assemblies > Disable

5

Optimize Mesh Data*

005:010

True > false

6

Multithreaded Rendering*

010:011

False > true

7

GPU Skinning*

011:012

False > true

8

Write Access

012:013

SDCard > Internal Only

9

Rendering Path

012:014:015

Deferred Lighting > VertexLit > Forward

10

Static Batching

012:016

False > true

11

Dynamic Batching

012:017

False > true

上表就是实验的最终结果,可以用来指导Unity3D的安卓打包。

 

在unity打包的时候还有一个系统最低版本的适配问题,比如支持最低在安卓系统2.3.3上运行。

为了考察支持最低安卓系统版本对于兼容性的影响。我也做了系统的对比实验。

序号

最低版本

目标版本

1

10

14

2

11

14

3

12

14

4

14

14

以下是测试结果:

 

 

 

正常

启动(s)

CPU(%)

内存(M)

包体

序号

通过率

安装

启动

卸载

平均值

峰值

平均值

峰值

平均值

峰值

 

1

88.10

95.8

91.9

100

0.94

10.29

14.95

100

22.37

66.10

7363

2

89.74

91.0

98.6

100

1.09

4.32

11.08

100

25.81

65.69

7363

3

90.24

92.1

98.0

100

1.28

11.30

12.75

100

23.88

65.75

7363

4

90.12

92.0

98.0

100

1.23

10.72

12.41

100

23.84

66.07

7363

由于现在的主流安卓系统的版本都比较高(都大于4.0 API level = 14),所以我们将目标版本设置为14。至于最低的版本,从数据上来看2.3.3(API level = 10)和4.0.0(API level = 14)差别不是很大。所以最低系统版本的选择对于兼容性的效果提升也不是那么明显。介于历史残留问题,现在使用2.3.3版本的人数还很多,故可以将系统最低版本设置为10。

 

为了考察支持目标版(targetsdk level)本对于兼容性的影响,我也做了系统的对比实验。

序号

最低版本

目标版本

1

10

10

2

10

11

3

10

12

4

10

13

5

10

14

一下是测试结果:

 

 

正常

启动(s)

CPU(%)

内存(M)

包体

序号

通过率

安装

启动

卸载

平均值

峰值

平均值

峰值

平均值

峰值

 

1

85.62

95.8

87.4

100

0.90

10.62

14.70

100

21.60

65.60

7363

2

80.37

91.0

81.9

100

0.86

10.44

12.40

100

21.62

75.63

7363

3

81.93

92.1

84.0

100

0.79

1.58

12.96

100

24.13

75.43

7363

4

87.23

92.0

89.5

100

0.90

10.70

14.67

100

21.44

75.40

7363

5

88.10

95.8

91.9

100

0.94

10.29

14.95

100

22.37

66.10

7363

 

从上表的结果可以看出,通过率最高的是序号5,也就是min tarlevel = 10,target sdk level = 14,target level 11,12,13 是不推荐的版本(连谷歌都不推荐)。

现在用户所用的版本大都是>4.0的,所以使用target level = 14是不错的选择。

 

没有更多推荐了,返回首页