1. 为什么需要配置SDK和JDK?
很多Unity新手第一次尝试打包安卓应用时,经常会遇到各种报错,最常见的就是"SDK not found"或者"JDK not configured"。这是因为Unity本身并不包含安卓开发所需的工具链,需要额外安装和配置。打个比方,Unity就像是一个万能厨房,而SDK和JDK就是制作安卓这道菜必备的厨具和调料。
我在2015年第一次尝试安卓打包时,就因为没有正确配置环境变量,导致整整两天都在和报错作斗争。后来发现,其实只要按照正确的步骤操作,整个过程只需要30分钟就能搞定。下面我就把这些年积累的经验,包括踩过的坑和优化技巧,都分享给大家。
2. 准备工作:下载必备工具
2.1 通过Unity Hub安装(推荐新手)
对于刚接触Unity安卓开发的同学,我最推荐的方法是使用Unity Hub来安装SDK和JDK。这个方法最大的优点就是简单,基本上点几下鼠标就能完成。
具体操作步骤:
- 打开Unity Hub
- 点击"安装"选项卡
- 找到你使用的Unity版本,点击右侧的三个点
- 选择"添加模块"
- 勾选"Android Build Support"和对应的SDK、JDK选项
- 点击"完成"开始安装
这个方法虽然简单,但有个小缺点:安装的SDK和JDK版本是Unity官方测试过的稳定版本,可能不是最新版。如果你需要特定版本的工具,就需要手动安装了。
2.2 手动下载SDK工具包
手动下载适合需要特定版本或者想要更灵活控制开发环境的开发者。我平时做项目时更倾向于手动安装,因为可以自由选择需要的组件。
推荐从AndroidDevTools下载SDK Tools:
- 访问 https://www.androiddevtools.cn/
- 找到"SDK Tools"部分
- 选择适合你操作系统的版本下载(Windows选.exe,Mac选.dmg)
- 下载完成后运行安装程序
安装时有个小技巧:建议把SDK安装在非系统盘,路径最好不要包含中文和空格。我习惯放在D:\Android\SDK这样的目录下,方便管理。
安装完成后,打开SDK Manager,这里有几个必装的组件:
- Android SDK Platform(选择你需要的API级别)
- Android SDK Build-Tools
- Android SDK Platform-Tools
- Android Emulator(如果需要模拟器)
- 在Extras下全选所有组件
3. 安装和配置JDK
3.1 下载合适的JDK版本
JDK的选择很重要,不是越新越好。根据我的经验,Unity 2018-2020版本最适合用JDK 8,而Unity 2021+可以使用JDK 11。
下载步骤:
- 访问Oracle官网的JDK下载页面
- 找到适合你系统的版本(注意区分x86和x64)
- 下载安装包并运行
安装时有个注意事项:记住你的安装路径,最好也是简单的英文路径,比如D:\Java\jdk1.8.0_291。我见过很多同学因为路径记错导致后续配置失败。
3.2 在Unity中配置路径
安装完SDK和JDK后,需要在Unity中告诉它这些工具的位置:
- 打开Unity
- 点击Edit → Preferences
- 选择External Tools
- 在Android选项卡下:
- JDK:选择你安装的JDK根目录
- SDK:选择你安装的Android SDK根目录
- 点击Apply保存
这里有个常见问题:有时候Unity可能不会立即识别到新配置的路径。如果遇到这种情况,重启Unity一般就能解决。
4. 环境变量配置(可选但推荐)
虽然Unity打包不一定需要配置系统环境变量,但我强烈建议配置,主要有两个好处:一是方便在命令行中使用adb等工具;二是可以避免一些奇怪的编译错误。
4.1 配置系统变量
- 右键"此电脑" → 属性 → 高级系统设置 → 环境变量
- 在系统变量下新建:
- ANDROID_HOME:值为你的SDK根目录(例如D:\Android\SDK)
- JAVA_HOME:值为你的JDK根目录(例如D:\Java\jdk1.8.0_291)
4.2 配置Path变量
在系统变量的Path中添加:
- %JAVA_HOME%\bin
- %ANDROID_HOME%\tools
- %ANDROID_HOME%\platform-tools
配置完成后,可以验证一下:
- 打开命令提示符(Win+R,输入cmd)
- 输入java -version,应该能看到你安装的JDK版本信息
- 输入adb version,应该能看到Android Debug Bridge的版本信息
5. 常见问题排查
5.1 SDK版本不兼容
这个问题我遇到过很多次,表现是打包时出现各种奇怪的错误。解决方法很简单:在Player Settings → Other Settings中,确保你的Target API Level和安装的SDK Platform版本一致。
5.2 JDK路径识别失败
有时候Unity会突然找不到JDK路径,即使你明明配置正确。这时候可以尝试:
- 完全退出Unity
- 删除项目目录下的Library文件夹
- 重新打开Unity
5.3 构建时报Gradle错误
这是最让人头疼的问题之一,通常是因为Gradle版本不兼容。我的经验是:
- 在Player Settings → Publishing Settings中勾选"Custom Gradle Template"
- 修改生成的gradle文件中的依赖版本
- 或者直接使用Unity自带的Gradle(不勾选上述选项)
6. 高级技巧
6.1 使用命令行打包
当你需要自动化构建时,命令行打包就很有用了。基本命令格式:
Unity.exe -quit -batchmode -buildTarget android -projectPath "你的项目路径" -executeMethod BuildScript.BuildAndroid6.2 优化构建速度
安卓构建最耗时的部分就是Gradle构建,可以通过以下方法加速:
- 在gradle.properties中添加:
org.gradle.daemon=true org.gradle.parallel=true- 使用本地Gradle缓存
- 关闭杀毒软件实时监控(构建完成后再打开)
6.3 多版本SDK管理
我通常会保留多个SDK版本,通过修改ANDROID_HOME环境变量来切换。也可以使用sdkmanager命令来管理:
sdkmanager --list sdkmanager "platforms;android-29"7. 实际项目中的经验分享
在最近的一个商业项目中,我们遇到了一个棘手的问题:在Unity 2020.3上打包APK时总是出现Dex文件合并错误。经过排查,发现是因为项目中混合使用了Java 8和Java 11的特性。最终解决方案是:
- 统一使用JDK 8
- 在gradle.properties中添加:
android.enableDexingArtifactTransform=false另一个常见问题是64位APK打包失败。从2019年8月开始,Google Play要求所有应用必须支持64位架构。在Unity中的正确做法是:
- 在Player Settings → Other Settings中勾选"ARM64"
- 确保所有原生插件都提供64位版本
- 使用APK Analyzer检查生成的APK是否包含64位库