这几天在学习Unity开发,PC端运行正常,编译成apk到真机下运行就闪退,连Unity的画面都不出现。到网上查资料,试了好几种办法,都没用。我创建了一个空的Unity程序,结果还是闪退,肯定是环境的问题了。单靠想是想不出原因的,还是要做真机调试。
看Unity官网介绍调试应该用ADB
结果弄了半天命令行也没弄出个所以然。后来继续网上查资料,说用monitor.exe,于是用everything一查,还真有这个程序。
运行一下,跑不起来,报找不到javaw.exe的错误,看提示是要设置JRE到系统变量中。于是搜JRE,unity hub已经装好了,但是没有自动设置系统变量。找到JRE目录手动添加后,monitor.exe算是能跑起来了。
新的问题又来了,连接不上真机。想到以前调试Android程序需要开发者模式,打开USB调试,可以我的华为手机却找不到开发者模式。再到网上查资料,原来需要在版本号连续击5次,搞定了。
连接好以后,日志中可以看到成堆的信息,根本就是目不暇接。不断地清空日志,测试,终于发现找到了出错的原因:
找不到com.unity3d.player.UnityPlayerActivity这个类,这时我才想起来,之前在有个编译错误,看网上查资料可以把类删掉,就可以编译通过了。
我也担心这样改会有问题,所以仅仅是改了个名。找到原因就好办了,改回原先的名字重新编译,空的Unity项目就能够正常运行了。回头再尝试编译最初的项目,也顺利编译通过并且不闪退了,至此这个问题算是解决了。
之前编译不过的原因,也基本可以断定是JRE的路径没有设置好,而我错误地操作虽隐藏了编译的问题,却带来了闪退的隐患。可问题是编译的时候并没有提示是JRE的路径问题呢,我记得提示的好像是某个方法过时。
跨平台开发的复杂度要比单纯的Winform程序开发难度大得多,一个小小的调试就费了这么多周折。