Unity(二)打包我们的第一个unity项目

        上一篇博客,我们简单介绍了如何使用unity创建我们的第一个项目,并且介绍了scene和GameObject的一些操作。那么,这篇博客,我将会介绍和总结如何使用unity把我们的项目打包成一个游戏。并且把我打包过程中遇到的一些问题以及解决方法一起总结一下。

一.Build Settings

        点击File,build settings,可以对当前的项目打包,可以选择打包成PC、Android或者iOS等。如果选择Android或者IOS提示没有对应的module,直接在当前页面打开链接下载安装并且重启unity即可,如图所示:

二.Build And Run

        点击Build And Run后,结果发现弹出如下窗口。大体意思是说我们的包名不对,需要去Player Settings中去设置,需要遵循com.xxx.xxx的格式:

三.Player Settings

        注意,直接点击左下角的Player Setting是进不去的。我们去选择Edit,Project Settings,选择Player,打开,如图所示,修改公司名和项目名,例如我设置的公司名为tudu:

        点击other settings,修改包名,包名要和上面的公司名和产品名一致,(例如我的是com.tudu.MyFirstUnity):

四.继续Build And Run

        结果,又不出意外的报错了,如图所示:

        我们可以看到,报错:CommandInvokationFailure: Gradle build failed.详细的报错日志如下:

CommandInvokationFailure: Gradle build failed. 
D:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\OpenJDK\Windows\bin\java.exe -classpath "D:\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-5.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'gradleOut'.
> Could not resolve all artifacts for configuration ':classpath'.
   > Could not resolve com.android.tools.build:gradle:3.4.0.
     Required by:
         project :
      > Could not resolve com.android.tools.build:gradle:3.4.0.
         > Could not get resource 'https://repo.maven.apache.org/maven2/com/android/tools/build/gradle/3.4.0/gradle-3.4.0.pom'.
            > Could not GET 'https://repo.maven.apache.org/maven2/com/android/tools/build/gradle/3.4.0/gradle-3.4.0.pom'.
               > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      > Could not resolve com.android.tools.build:gradle:3.4.0.
         > Could not get resource 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.4.0/gradle-3.4.0.pom'.
            > Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.4.0/gradle-3.4.0.pom'.
               > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
      > Could not resolve com.android.tools.build:gradle:3.4.0.
         > Could not get resource 'https://jcenter.bintray.com/com/android/tools/build/gradle/3.4.0/gradle-3.4.0.pom'.
            > Could not GET 'https://jcenter.bintray.com/com/android/tools/build/gradle/3.4.0/gradle-3.4.0.pom'.
               > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 8s
]
stdout[

]
exit code: 1
UnityEditor.Android.Command.WaitForProgramToRun (UnityEditor.Utils.Program p, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.Command.Run (System.String command, System.String args, System.String workingdir, UnityEditor.Android.Command+WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.AndroidJavaTools.RunJava (System.String args, System.String workingdir, System.Action`1[T] progress, System.String error) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.Run (UnityEditor.Android.AndroidJavaTools javaTools, System.String workingdir, System.String task, System.Action`1[T] progress) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <62f761e6ab1445a38cdcb4ac36512695>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

        该问题比较简单的解决方案是,把gradle改成internal,如图所示:

五.运行结果

        在经过上面的一系列尝试后,最终,我们的第一个unity游戏终于可以运行在我们的手机上了,如图所示:

        这篇博客总结了如何把我们的unity工程打包为Android的apk,并且总结了在打包过程中遇到的一些问题。后面的博客,将继续学习和总结unity。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章