【Unity打包玄学】Unity构建Andriod

ModelEngine·创作计划征文活动 10w+人浏览 1.5k人参与

解决Unity构建Andriod的SDK玄学:

玄学1:依赖无法获取(com.applovin:applovin-sdk:~)

Resolution failed
Failed to fetch the following dependencies:
com.applovin:applovin-sdk:11.10.1

解决:
1.删除library 重启unity 删除“C:\Users<你的用户名>.gradle”文件夹 关闭对应网络防火墙(专属网络)
2.将applovin升级到最新版本
3.先Resolve一遍依赖 还是报错 删掉 Library 然后重新Resolve解决依赖 (切记请勿切到后台,第一遍先Resolve 不要Force)

玄学2:丢失FireBase8_8_8.dll文件

原因: Unity Editor 切换 Scripting Backend 触发重新编译的常见问题,Firebase 依赖 IL2CPP + ARM64,否则无法导出 AAB。
解决:
在Player Settings=> Other settings =>Scripting Backend 选择IL2CPP 把ARM64勾选上,然后Force Resolve。
注意:
老版本 Firebase 会和新版 Google Play Services 冲突
建议使用最新版本的 Firebase SDK(一般每 2~3 个月更新一次)。

玄学3:Curl error 60(Unity 证书过期)

// unity自身bug 当勾选IL2CPP release 64位模式 会出现
Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_USER_ERROR1

原因:99% 出现在 Unity Hub 3.7 或以下版本 + 中国网络环境
解决:更新unity hub 证书 重启unity

玄学4:AppLovin or Gradle 下载失败

// 提示1:
Resolution failed
Failed to fetch the following dependencies:
com.applovin:applovin-sdk:11.10.1

// 提示2
BUILD FAILED in 11s Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

解决:
0.检查依赖中是否有相同的“jar”包,如果有删掉一个
1.确保你的Unity版本是最新的,并且具有适用于所需AppLovin SDK版本的正确的Gradle插件版本。
2.清除Unity缓存。关闭Unity编辑器,然后删除项目中的"Library"文件夹。重新打开Unity并尝试重新构建项目。
3.检查你的网络连接是否正常。有时下载依赖项失败的原因可能是网络问题。尝试连接到其他网络,并确保你的网络连接稳定。

玄学5:缺少 iOS 引用

缺少ios引用 但不影响打包 运行

解决:安装unity 安装ios 再解决依赖,因为admob id有ios的id

玄学6:Google Play 提示 Debuggable = true

上传aab提示
您上传的是可调试的 APK 或 Android ADD Bundle。出于安全考虑, 你要要先信用调试功能 然后才能在 Gooole Play 进行发布

解决:
1.在AndroidManifest.xml文件中的manifest增加一行:android:debuggable=“false” 并将代码中所有打印调试日志的地方删除或者注释掉。最后,程序需要签名才能发布。
2.在Release模式下编译打包应用,这个无论Eclipse with ADT还是Android Studio都有相应的菜单项。

玄学7:Duplicate class(重复依赖)

解决依赖成功 打包apk失败

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':launcher:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: Duplicate class com.google.android.gms.appset.AppSet found in modules jetified-com.google.android.gms.play-services-appset-16.0.0-runtime.jar (:com.google.android.gms.play-services-appset-16.0.0:) and jetified-com.google.android.gms.play-services-appset-16.0.1-runtime.jar (:com.google.android.gms.play-services-appset-16.0.1:)

解决:删除相同依赖

玄学8:unsupportedoperationexception this feature requires asm7 unity

java.lang.unsupportedoperationexception this feature requires asm7 unity

原因:这是 Google Play Services 插件插入字节码时的版本问题。
解决
android level 从33=>32
删除library 删掉admob 删除 C盘.gradle
关闭防火墙 重启电脑

玄学9 fastutil.jar 下载失败

在这里插入图片描述

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':launcher'.
> Could not resolve all artifacts for configuration ':launcher:classpath'.
   > Could not download fastutil-7.2.0.jar (it.unimi.dsi:fastutil:7.2.0)
      > Could not get resource 'https://jcenter.bintray.com/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.jar'.
         > Could not GET 'https://jcenter.bintray.com/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.jar'.
            > Remote host closed connection during handshake

解决:依赖联网问题 下载不全

玄学10:Unity 找不到 ndk-bundle

Unable to locate Android NDK

原因:Unity 找不到 ndk-bundle
解决:
Unity 必须使用它绑定的 NDK,不要自己装
Unity Hub → Installs → Add modules → Android NDK

玄学11:Minify / Proguard 后 App 打不开

原因 Firebase、AppLovin、AdMob 都需要 keep。
解决:
proguard-user.txt 添加:

-keep class com.google.** { *; }
-keep class com.applovin.** { *; }
-keep class com.unity3d.** { *; }

玄学12:导出的 Android Studio 工程构建失败

Unity 的 Gradle 插件版本太老。
解决

Project Settings → Player → Publishing Settings → Custom Gradle Template

替换
classpath 'com.android.tools.build:gradle:4.1.0'
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip

玄学13:Unity 构建卡在 resolving/ packaging

原因:

  • Windows Defender / 防火墙占用大量 CPU
  • 杀毒软件锁定 temp 文件夹
  • Gradle 下载速度慢

解决:

  • 项目放在非 OneDrive / 非中文路径(非常重要)
  • 避免使用磁盘太满的 C 盘

玄学分析:

Unity3d导出的安卓包如何在真机上看log打印
1.下载Android SDK 在安装路径下Sdk\tools\lib\monitor-x86_64找到monitor.exe,直接双击运行。monitor也是DDMS,全称Dalvik Debug Monitor Service。
2.左上角就是usb连接的手机,下面是打印的信息注:如果手机成功连接了,但是左上角没有显示手机按钮,可能是被其他应用占用了,比如360手机助手,应用宝和鲁大师等在任务管理器中,把这些进程杀死后,重新打开monitor就会显示了在左下角进行信息筛选,点击+号
3.根据具体包名查看日志,会得出相关错误定位,比如多次点击视频播放出现闪退由于低内存,视频播放黑屏是因为视频解码器不兼容,视频分辨率超过平台上限等


总结

Unity Android 依赖 90% 的问题来自:

  1. Google Play Services 版本冲突(AdMob、Firebase、AppLovin 都会用)
  2. JCenter 失效导致依赖下载失败
  3. Gradle / Android Plugin 版本不一致
  4. Firebase 一定要 IL2CPP + ARM64
  5. 不要使用“+” 版本号
  6. 删除 Library 可以修复 80% 玄学问题
  7. 防火墙能造成“随机失败”、“偶发 Fetch 失败”
  8. 中国网络环境 → Maven 仓库不稳定

✨随便写写

人,不仅要战胜失败,而且还要超越胜利。

by 路遥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值