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
2018-05-19 13:29:15 S_u_mm_er 阅读数 580

unity3d打包安卓apk


参考


目录


1. JDK

(1)安装

不要装最新版的jdk10!!!!!!!改装旧版本的jdk8!!!!!!
不要安装在中文路径下!!!!!!!

(2)配置

配置完之后记得重启电脑!!!!!!

  • 环境变量的配置:我的电脑/计算机——属性——高级系统设置——环境变量。新建系统环境变量:JAVA_HOMECLASSPATHPATH。那些.;不可以省掉。
    这里写图片描述
  • JAVA_HOME写安装jdk的路径,结合上面那张目录结构图,JAVA_HOME的值改成
    这里写图片描述
  • 点击确认

  • 重启电脑,开cmd,测试一下:
    这里写图片描述

  • 如果出现javac 不是内部命令或外部命令?,那么可能是忘了重启,或者是环境变量没配对。(也有可能没装jdk)


2. 安卓SDK

(1)安装和配置

不要安装在中文路径下!!!!!!!!
磁盘的空间一定要足!!!!!!!!

  • 按照2017年Android SDK下载安装及配置教程下载并安装Android SDK的步骤来弄
  • cmd测试adb不重启也可以,但是前面的jdk配置完后一定要重启
  • 如果出现adb不是系统内部命令,那么可能是环境变量没有配对,如果环境变量没问题,那么试着重启一下

3. Unity 3d

(1)安装tortoiseSVN

(2)打开Unity的项目

  • Edit->Preferences->External Tools,如果Revision Control Diff/Merge显示如下,那就是上一步没安装。
    这里写图片描述
  • Android那栏,SDK和JDK就找安装的地址就好了
    这里写图片描述

  • File->Build Setting

  • 要按Add Open Scenes,否则就没有编译场景了
  • Platform选择安卓
  • Player Settings里面company name和product name要回去查EasyAR或者Vuforia注册的时候填的Package Name,其中Package Name要修改成com.xxx.yyy的格式,xxx就是company name,yyy就是product name。如果不按这个格式,之后的编译会报错。
    这里写图片描述
  • 如果要修改apk的图标,那么可以在右上角Default icon里面修改图片。

  • 往下Setting for Android,也就是第三列那个安卓图标。Revolution and Presentation里面的设置就按照下面这张图。
    这里写图片描述

  • Other Settings里面的Package Name就是前一步说的com.xxx.yyy格式。
    这里写图片描述

  • 如果编译过程中跳出弹窗说要修改package name,那就是格式没有按照com.xxx.yyy

  • 如果编译过程中跳出弹窗说
    这里写图片描述
    按照Easy AR初级开发教程结尾操作就可以解决了。
  • 如果编译失败,就是failed了,然后console里面说:CommandInvokationFailure: Failed to build apk.的话,那么参考Unity 打包错误:CommandInvokationFailure: Failed to build apk.来操作
  • 如果显示Because you are not a member of this project this build will not access Unity services.,那么重启Unity3d或者重新登录账号。如果还是不行,那么就按照Unity Services are just a few clicks away的步骤来做。
  • 如果console显示错误CommandInvokationFailure: Gradle build failed.,打开buildSetting,在选了android平台以后,将右手边Build System选为Internal

2017-03-01 15:34:49 u012691505 阅读数 546
要想实现在Unity3d中调用Android代码,需要以下几个步骤
1.将需要的Android代码打包成jar
2.在Unity3d中导入并使用生成的jar,编写脚本控制Android程序

3.Unity3d发布Android应用

第一步   将需要的Android代码打包成jar(用eclipse的朋友可以自行百度eclipse打包jar)
 1.新建一个AndroidStudio项目:Unity3dDemo,目录结构如下

  
 2.在这个项目中新建一个Module:unity3d(试了好几种方式在studio里面打包jar,只有这种是成功的,至于为什么还请大神指导)
   File->New->New Module


   建好之后目录结构如下图:


   在项目中对Module添加依赖:File->Project Structure


   
   或者直接在gradle里面配置


 3.在安装好的Unity3d目录中找到classes.jar导入所建的unity3d Module中
   classes.jar路径(我用的5.5.1,不同版本可能路径不同):Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

  导入,并且添加
   

 

4.编写代码(在Module中进行)

找到unity3d的MainActivity,让其继承UnityPlayerActivity,在里面编写你的功能代码。

5.打包jar
   打开Module 的Gradle,按下图添加(确保你是在Module中)
   //Copy类型
task makeJar(type: Copy) {
    //删除存在的
    delete 'build/libs/unity3d.jar'
    //设置拷贝的文件
    from('build/intermediates/bundles/release/')
    //打进jar包后的文件目录
    into('build/libs/')
    //将classes.jar放入build/libs/目录下
    //include ,exclude参数来设置过滤
    //(我们只关心classes.jar这个文件)
    include('classes.jar')
    //重命名
    rename ('classes.jar', 'unity3d.jar')
}

makeJar.dependsOn(build)



   
   在终端生成jar,打开Terminal输入:gradlew makeJar


   看到如图显示结果,生成jar成功。生成后的文件路径:Unity3dDemo->unity3d->build->libs
   

到此jar就打包成功,下一篇将介绍如何在Unity3d中引用打包好的jar

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