Unity版本:2021.3.8f1c1
创建AR项目并下载使用默认模板,编译并发布到Android实机。
1、第一个问题:
Error:Could not read cache value from'C:\Users\Username\.gradle\daemon\6.1.1\registry.bin'.
查询参考:
由
(5条消息) 安卓:Could not read cache value from'C:\Users\Username\.gradle\daemon\1.12\registry.bin'_Royel transformed的博客-CSDN博客
找到:
android - Gradle error after importing projects from eclipse - Stack Overflow
大概是gradle缓存方面的问题,说将.gradle整个,或者6.1.1目录清空即可,有个人说只需要删掉registry.bin.lock
删除registry.bin.lock,没有解决问题
(其他文件是占用状态,按其中说明需要关闭Android Studio再删除,此处Unity同样是退出项目才能删除)
再次查到:
build - Starting a Gradle Daemon, 1 busy and 6 stopped Daemons could not be reused, use --status for details - Stack Overflow
其中Variag说“Windows 10 here. For me only solution was to remove everything inside ../.gradle/caches/
”
于是干脆关闭Unity项目,将.gradle\caches\和.gradle\daemon\下面的两个6.1.1目录全部删除。
问题解决。
2、第二个问题,Build And Run后出现:
Execution failed for task ':launcher:lintVitalRelease'.
> Lint infrastructure error
Caused by: java.lang.NoClassDefFoundError: com/android/tools/lint/LintCliClient
查询到:
Android build returns "java.lang.NoClassDefFoundError: com/android/tools/lint/LintCliClient" - Stack Overflow
总体看上去似乎是lint工具的版本和gradle配套问题。
先确认了下gradle插件和gradle版本的匹配没问题。
Unity的baseProjectTemplate.gradle中有classpath 'com.android.tools.build:gradle:4.0.1',对应gradle的6.1.1没有问题,可参考:(5条消息) [AS/Android Studio] Gradle Plugin Version 和 Gradle Version 的版本对应关系_米歪(MiWi)的博客-CSDN博客_gradle version对应版本
于是干脆按那个Calvin所说,修改gradle配置。
Unity的Edit->Project Settings->Publishing Settings中,把Build里需要用的Custom项目都勾上,配置文件被复制到Assets->Android目录下。
在baseProjectTemplate.gradle的classpath 'com.android.tools.build:gradle:4.0.1'上面加了一行classpath 'com.android.tools.lint:lint:26.3.2'
问题解决。
3、第三个问题,Build And Run又出现:
Execution failed for task ':launcher:lintVitalRelease'.
> Lint infrastructure error
Caused by: java.lang.VerifyError: Inconsistent stackmap frames at branch target 90
查询发现此问题不少,区别只是最后的target数字不尽相同。
但没有找到90的。
看到一篇(5条消息) java.lang.VerifyError: Inconsistent stackmap frames at branch target ? 解决_QZC78的博客-CSDN博客
说解决方法是在jvm中配置 -XX:-UseSplitVerifier
还不太熟悉Unity相关配置,懒得找暂时pass;
又看到一篇(5条消息) Apk打包报错Execution failed for task ‘:app:lintVitalRelease问题两种解决方法_hl763785813的博客-CSDN博客
虽然问题不太一样但有参考价值,说了两种方法:
第二个方法是到log里找到报错的文件、行数,去修改,他的问题是AndroidManifest.xml错误造成,而且是Android Studio,和此处无关;
参考第一个方法,在mainTemplate.gradle的lintOptions中,加入checkReleaseBuilds false(abortOnError false原本已经有了),问题没有解决。
又找到
java - Akka Actors fails, VerifyError: Inconsistent stackmap frames at branch target - Stack Overflow
和
dependency injection - Java 7 - Inconsistent stackmap frames - Need help understanding why solution works - Stack Overflow
总体来说都是JDK6和7遇到问题,似乎是JDK7的编译字节码要包含StackMapTable,而且根据Paul Draper所说JDK8已经不支持UseSplitVerifier选项了,本想试试这个选项也就算了
琢磨更高版本会不会也能解决问题,于是尝试在Edit->Preferences的Android中设置Unity的JDK为电脑装的11,但Unity坚决不允许。
又设置为电脑上安装的一套JDK8,Build And Run报错:
A problem occurred evaluating project ':launcher'.
> Could not initialize class com.android.build.gradle.internal.VariantManager
换回Unity安装的JDK8,又头疼了半天,忽然发现好像有点傻,既然是launcher出问题,应该改launcherTemplate.gradle吧,于是在launcherTemplate.gradle的lintOptions中,加入checkReleaseBuilds false(abortOnError false原本已经有了)。
问题解决,apk生成成功。
并且此时将baseProjectTemplate.gradle中加的classpath 'com.android.tools.lint:lint:26.3.2'去掉也是没问题的。
4、安装后无法使用
启动后有时候一直显示loading...然后提示无法启动AR,需要连接internet(实际已连接,并且是科学上网)
有时候loading可能是成功了,界面会闪一下,并重复闪一次。然后如果只选了mono和ARMv7,一直黑屏没有反应;如果选了IL2CP并同时选择ARMv7和ARM64,会直接崩溃。
之前也在谷歌下载了Unity的AR样例Pocket Garden,生成apk倒是没遇到这么些问题,还按提示下载安装了ARCore插件和Google Play Services,但也无法使用。
也不知道是不是因为被忽略过去的lint问题引起,虽然很想彻底解决问题,奈何暂时只学会了关开关。后续继续研究。
此外,根据谷歌支持ARCore的手机清单,本次使用的实机并不在其中,也可能是不支持?
果然不试试都不知道自己确实不行。doge
----------
2023/10/22,好久没登录,一上来发现什么时候这把文章自动改成VIP可见了??文章来源:https://www.toymoban.com/news/detail-407837.html
这系统挣钱都比我积极啊,让我在改回全部可见时,竟生出愧疚之心。doge文章来源地址https://www.toymoban.com/news/detail-407837.html
到了这里,关于【问题记录】Unity编译ARCore模板项目问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!