[踩坑记录]ARCore for Unity2019

关键字:

Android Tools version 0.0 < 26.1.1

adb not found at "xx"

Gradle build failed

目录

背景

正常安装流程

中英文教程的不同

adb路径问题

Android Tools version<26.1.1

Gradle的问题

使用Android Studio安装Android SDK


背景

只能说采坑不可避免。

正常安装流程

如果只想了解Unity2019的ARCore配置流程直接看这里

1、官网下载并安装UnityHub

2、在UnityHub安装Unity以及Android SDK、JDK、NDK等

3、下载ARCore for Unity包并导入

4、参考官网配置参数

5、Build生成apk

6、在手机上测试

这些在官网教程都有,当然所有事不可能一切顺利,不然你也不可能在这里了。如果出了什么错误,可以往下找找是否遇到了和我一样的问题。

中英文教程的不同

官方网站上列的很全面,各个平台以及各个平台的入门指南都很详细,跟着一步一步来总没有问题吧。通过官网给出的步骤将ARCore包导入Unity。会注意到有一些报错。观察一下主要是SDK中的(即时预览)InstantPreview和Example中的云锚点(CloudAnchors)出现的问题。

根据博主李同学反馈的。确实Unity官网教程的中文页面没有更新,对比一下中英文页面就能发现问题。

 

英文教程里面指出了在使用Unity2019时需要额外的包Multiplayer HLAPIXR Legacy Input Helpers分别对应前面提到的云锚点即时预览

根据英文教程的指引,去Window->Package Manageer下就能找到这两个需要的包。

adb路径问题

挺坑的一点是,我在安装Unity的时候已经安装了额外的Android SDK,JDK和NDK Tools,然后在试着run一下的时候弹出。其实我这里run不run也没什么意义,因为既没连手机也没连虚拟设备。

意思是没有Android SDK?顺着Editor->Preferences->External Tools往下拉可以看到SDK的路径里面已经有路径了(这里和JDK、NDK都是在UnityHub中安装的),那就去那个路径下面看看。

D:/UnityHub/UnityEditor/2019.3.14f1/Editor/Data/PlaybackEngines/AndroidPlayer\SDK

确实是有SDK的,但在build时报错就非常迷惑,这里也就是我梦的开始的地方

以为Unity安装的Android SDK没有用,于是我就去安装了Android Studio来自己安装Android SDK,绕了好大的弯路。实际上此时此刻我不需要理会这里,Unity安装的Android SDK是没有问题的。用Android Studio安装SDK步骤我会放在最后,如果感兴趣可以看看。

在配置好adb,反复修改Android SDK的路径之后,run时候的报错信息变成了:

adb not found at "C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe". Please verify that 'Preferences > External Tools > Android' has the correct Android SDK path that the Android Platform Tools are installed, and that "C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe" exists. You may need to install the Android SDK first.

根据报错信息来看,是没有配置adb环境。以至于在C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe这个路径下找不到adb.exe文件,但是奇怪的是我在Unity中根本找不到在哪设置过这个路径。

去计算机环境变量path下添加D:/UnityHub/UnityEditor/2019.3.14f1/Editor/Data/PlaybackEngines/AndroidPlayer/SDK/platform-tools,在这个路径下可以发现abd.exe文件。cmd中执行一下adb命令:

已经配置成功了,但是在run的时候还是会报同样的错误,重启也没用,每次run的时候unity都会去C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe这个路径下找adb.exe

adb not found at "C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe". Please verify that 'Preferences > External Tools > Android' has the correct Android SDK path that the Android Platform Tools are installed, and that "C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe" exists. You may need to install the Android SDK first.

去报错位置的的代码里看看,之前的报错是因为adbPath路径不存在,而现在是adbPath路径(C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe)存在,但是跟着这个路径去对应的文件夹下面没有adb.exe文件。

     var adbPath = ShellHelper.GetAdbPath();
            if (adbPath == null)
            {
                Debug.LogError(
                    "Instant Preview requires your Unity Android SDK path to be set. " +
                    "Please set it under 'Preferences > External Tools > Android'. " +
                    "You may need to install the Android SDK first.");
                yield break;
            }
            else if (!File.Exists(adbPath))
            {
                Debug.LogErrorFormat(
                    
                    "adb not found at \"{0}\". Please verify that 'Preferences > External Tools " +
                     "> Android' has the correct Android SDK path that the Android Platform Tools " +
                    "are installed, and that \"{0}\" exists. You may need to install the Android " +
                    "SDK first.", adbPath
                );
                yield break;
            }

解决办法:我将unity安装的sdk复制到了该路径下,偷天换日,这时候External Tools下SDK的路径不论是默认的还是C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe在Build时都不会报错

Android Tools version 0.0 < 26.1.1

这是我在使用Android Studio安装的SDK时遇到的问题。

配置完成了,build一下HelloAR来试一试。

结果每次bulid都提示Android Tools version 0.0 <26.1.1,三个选项:“升级SDK”,“使用本机上最高版本SDK”,“取消”。

第一个选项会进入无限复读,过一会还是会弹出这个对话框,怀疑是没有权限或者是链接访问不了。

第二个选项也无法继续执行

解决方法:更换成用Unity安装的SDK

今心木目在他博客中提到,现在的2019版本很方便,可以直接使用Unity自带的Android SDK,不需要再去额外安装SDK。

可以直接用Unity来安装SDK,再用Android Studio安装就绕远路了啊。如果在安装Unity时没有额外安装Android sdk可以在unity hub中添加。

国外有个老哥在Linux上遇到了相同的问题,unity无法识别Android SDK的版本号,只能识别出SDK Tools version 0.0,我不知道对他的意思是不是理解得正确,他把Androi Studio里所有的SDK都安装了一遍?????

Gradle的问题

但是在build项目时到了Building Gradle Project时就会出错:

略了一眼这96个报错,大部分都是

“Could not get”“Could not download”,都是去'https://jcenter.bintray.com这里去下载jar包失败,我尝试访问了一下,转圈半天都加载不出来。

搜这个问题网上大多是针对Android Studio的解决方案

Could not download protobuf-java.jar (com.google.protobuf:protobuf-java:3.4.0)

看到网上有人(https://www.jianshu.com/p/d175bef9770c)说将https改为http,去将上面的链接改成http之后发现确实能加载出内容了,一阵狂喜,然后就被泼了冷水

因为安全问题,从2020年1月起他们的网站只能通过https或者RestAPI(不了解)来进行访问。

网上还有人(https://blog.csdn.net/qq_42461824/article/details/105301843)说可以替换为阿里云的镜像

按照博主的说法,去unity->edit->preferences->gradle路径下,找到同一级目录的GradleTemplates(博主很严谨,提到不同版本都不一样,最好是所有的文件都看一下,主要是找到respositories,我的是在GradleTemplates文件下的),打开baseProjectTemplate文件中buildscript下的respositories,只需要添加maven{ url 'http://maven.aliyun.com/nexus/content/repositories/central/'}就行了。

allprojects {
    buildscript {
        repositories {**ARTIFACTORYREPOSITORY**
            //添加
            maven{ url 'http://maven.aliyun.com/nexus/content/repositories/central/'}
            google()
            jcenter()
        }
        dependencies {
            // If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity
            // See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html
            // See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
            // To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle version
            classpath 'com.android.tools.build:gradle:3.4.0'
            **BUILD_SCRIPT_DEPS**
        }
    }
    repositories {**ARTIFACTORYREPOSITORY**
        google()
        jcenter()
        flatDir {
            dirs "${project(':unityLibrary').projectDir}/libs"
        }
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

之后打包,打包完成后可以成功得到apk文件,但是控制台还是能看到一堆报错,这些报错的信息都是相同的:启动adb服务器失败。这里就是我用Android Studio又安装了一个版本的Android SDK造的孽了(捂脸

CommandWithNoStdoutInvokationFailure: 
Unable to start ADB server. 
Please make sure the Android SDK is installed and is properly configured in the Editor. 
See the Console for more details.

cmd中使用指令

netstat –aon|findstr “5037”查看是哪个进程占用了5037端口

然后想着去任务管理器中看看是哪个进程,结果找不到pid=14732的进程,又不敢直接把它kill,用tasklist|findstr “14732”来看看这个进程对应的任务,结果发现是adb???

难道是我之前用Android Studio安装的android sdk里面的adb?

去任务管理器->后台进程,有一个adb.exe,打开文件所在位置,果不其然,是之前安装的android sdk。打开Android Studio,找到sdk manager,将安装的sdk的打勾取消掉

会提示:

好像没卸载干净,最后还是重启了一遍手动去目录下卸载的。

HelloAR

下一步就是研究ARCore怎么用了

 

使用Android Studio安装Android SDK

现在的Unity2019版本已经可以直接安装Android SDK了,这里只是记录一下

安装Android Studio后,第一次启动会弹出

Unable to access Android SDK add-on list

无需惊慌,无需理会,点Cancel,之后顺着点Next

记得记一下SDK和JDK的路径。

cmd中输入android –h发现并没有任何

安装完成后还要去配置环境变量

在path下添加上面的SDK Folder地址

C:\Users\dell\AppData\Local\Android\Sdk\tools

在安装完Android SDK后,在环境变量中也配置完毕,Editor->Preferences->External Tools将SDK和JDK的勾取消掉,将上图中的JDK和SDK路径填入,在填SDK时还非常贴心,能直接帮你提示路径,(C:\Users\dell\AppData\Local\Android\sdk这个路径就是用Android Studio安装的SDK路径)

想要安装其他版本的sdk,只需要打开Android Studio,File->Settings->System Settings->Android SDK打勾想要的版本->apply,不仅有SDK,SDK Tool等等也可以选择不同版本来下载。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值